Lesson 1: 游戏的构成
课程综述
该课程将会覆盖基础的视频游戏结构,让你对使用DirectX有一些了解,所以你不会像新手游戏程序员那样没有方向地埋头工作,因为视频游戏开发可能要耗费较长的时间并且会较为复杂,我建议有编程经验的程序员刚开始做游戏编程至少要浏览一下这一部分,这样会是你知道你要走的方向。
游戏的7个阶段
视频游戏本质上是一个连续的执行各种行为的循环,每循环一次就产生一个动画帧,跨入游戏编程世界的程序员很少考虑哪怕是简单的像Pong或者Asteroids的视频游戏所需要的所有组件,并且容易陷入不知所措的境地,这意味着不再有你可能熟悉的事件驱动程序。
所以让我们顺序地从头至尾地观察游戏的每个阶段,然后阐述它的每个部分。
阶段 1:初始化程序
这里是你开始显示的地方。你创建一个窗口来展示你的游戏,你配置DirectX来使用、加载图像、模型、和其他的媒体,分配内存等等。
阶段 2:启动游戏
这部分主要是设置你的游戏运行。这里你可能要选择一个映射,设置你的玩家位置(和你游戏世界中的其他人物)或者设置一个随机值,例如只在游戏开始时确定的随机场景。这之后,你进入游戏循环本身开始游戏。
阶段 3:捕捉玩家的输入
这里你捕捉从键盘、鼠标、操纵杆、控制器或者任何玩家使用的设备获得的所有信息。这部分说明主要在DirectInput tutorial中。
阶段 4:运行游戏逻辑,例如physics 和 AI
这部分你要处理在游戏世界里要发生的事情。最后60秒玩家刚好移动到哪?玩家还有多少弹药?敌人是过来了还是走开了?玩家的盟友怎么样了?玩家的船撞到山了吗?他跑进去的区域是雾吗?等等诸如此类的事情都要在这个部分决定。
阶段 5:渲染图像
这是DirectX主要被使用的地方。这里你将会处理所有的3D\2D图像并把他们渲染到屏幕。这会在Direct3D tutorials里说明。
阶段 6:重新开始
简单的说就是回到阶段3再重复做一遍。
阶段 7:善后清理
请求内存?现在是你最后的机会去清理所有的东西,因为程序就要终结了。DirectX调用的各种接口也要关闭或者“释放"。
小结与扩展
OK,那么如何让所有这些阶段组合在一起呢?是的,你可能注意到以上大部分是在一个持续循环中进行的直到调用退出命令。上面的图展示了碎片如何被放到一起。
现在,这只是 简化版,我只是想快速的给你一个总览。你可以(需要)添加各种细节例如网络代码,启动界面,动画菜单,声音,音乐等等。其中有些东西其实相当简单。例如,一个简单启动画面就是小菜一碟。你只要在程序开始的时候添加一个窗口。
尽管有简单的东西,但是有的部分相当复杂,例如连网和保持多机(性能不同)以相同的速度运行。(我将会在Multiplayer tutorial中复习这一部分,同时在Game Development tutorial中给出一个简单的计时例子)。
让我们先不要关注这些事情,因为我们还没有开始一行代码就已经开始讨论如此复杂的问题了。在研究这些话题之前让我们先进入实际编程。
接下来我们介绍Window编程机制,制作一个简单的窗口,编写基础的游戏循环。
所以即使我们还没有编写任何东西,但是我们已经知道我们要走的方向。让我们立刻开始吧!