二维游戏编程(1)

二维游戏图像基础

主要内容

  • 二维游戏简单框架
  • 图像显示
  • 典型图像操作
  • 典型的图像特效原理

游戏循环的基本步骤

 

二维游戏

  • 早期的游戏都是二维的–如超级玛丽、FF、DQ–只有两个轴(上下,左右)
  • 后来的游戏引入了45度第三人称视角的伪三维模式

 

  •  在三维游戏大行其道的今天,二维游戏还有他生存的空间吗?答案是有的。二维游戏有许多三维游戏无法比拟的表现力。

       –休闲类游戏

       –射击类游戏

       –回合类游戏

  • 本质上视频游戏是一个连续的循环,执行逻辑指令,并将图像输出到屏幕。这和电影的播放非常类似,但是这个“电影”是用户交互的。

二维游戏编程技术

  •  帝国时代

其开发历史:

• Age of Empires

• The Rise of Rome

• Age of Empires II: The Age of Kings

• The Conquerors

• Age of Empires III

• The WarChiefs

• The Asian Dynasties

• Age of Mythology

• The Titans

• Age of Empires: The Age of Kings (Nintendo DS)

• Age of Empires: Mythologies (Nintendo DS)

  • 二维游戏技术

  1. 地图的创建与显示
  • 为实现一个基本的二维游戏框架,首先要实现游戏地图的各种加载和编辑操作,为角色提供游戏环境。
  • 4种通用地图实现的方法:固定地图、滚屏地图、多层次地图、菱形地图

(1)固定地图

  • 将屏幕切割成棋盘状的一系列小块
  • 在内存中保持一个二维数组,保存每个小块对应的编号
  • 绘制时根据数组提供的信息,在每个小块画上相应图块

该程序段中blit函数的实现,可以调用Windows系统的一个API函数BitBlt直接实现

(2)滚屏地图

  • 是固定地图的进一步扩展,可以显示远大于固定地图的图像
  • 根据玩家所在位置,确定显示的地图部分

 

滚屏地图算法实现

变量设置:

  • playerx, playery为相对于完整地图左上角的坐标;
  • screen_wide, screen_high为屏幕的宽和高;
  • xtile为屏幕上x轴上可显示的小地图个数;
  • ytile为屏幕上y轴上可显示的小地图个数;
  • tileplayerx = playerx / tile_wide为人物所在格x轴下标;
  • tileplayery = playery / tile_high为人物所在格y轴下标;
  • 应该绘制的地图范围是:x轴:由tileplayerx - xtile/2至tileplayerx + xtile/2;
  • y轴:由tileplayery - ytile/2至tileplayery + ytile/2;当人物在屏幕正中央时,地图到屏幕的位置变化公式为:screenx = xi * tile_wide–playerx + 0.5 * screen_widescreeny = yi * tile_high–playery + 0.5 * screen_high

(3)多层次地图

以下列情况,可以考虑使用多层次地图。

  • 需要小地图能重叠或者有层次关系;
  • 在背景上有多个物体运动;
  • 需要模拟物体远近不同的透视关系;
  • 多层次地图的实现思想并不复杂,在滚屏地图的基础上设置多个层次的地图即可。不妨设从底往上分别为0层,1层,...把地图数据数组改为三维数组。
  • 可以使每个图层以不同的速度运动,模拟景物远近不同的层次感。这种技术,又称视差卷轴(ParallaxScrollers)。

 (4)菱形地图

  • 菱形地图是在二维画面上表现三维场景的常用技术
  • 拼接所使用的小地图是菱形,计算比较复杂

 

今天太晚了,下次我把剩余内容再码出来,一起学习!

猜你喜欢

转载自blog.csdn.net/slave_of_life/article/details/130798145