二维游戏图像基础
主要内容
- 二维游戏简单框架
- 图像显示
- 典型图像操作
- 典型的图像特效原理
游戏循环的基本步骤
二维游戏
- 早期的游戏都是二维的–如超级玛丽、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)
-
二维游戏技术
- 地图的创建与显示
- 为实现一个基本的二维游戏框架,首先要实现游戏地图的各种加载和编辑操作,为角色提供游戏环境。
- 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)菱形地图
- 菱形地图是在二维画面上表现三维场景的常用技术
- 拼接所使用的小地图是菱形,计算比较复杂
今天太晚了,下次我把剩余内容再码出来,一起学习!