我们预备开始设计游戏内核。
通常,游戏和桌面Windows程序不同(扫雷等桌面游戏除外),它不能依靠消息驱动,因为游戏通常只有一个画面,而且需要高速更新。因此,游戏只能靠时钟驱动。大部分游戏都在一个时钟驱动下定时渲染一帧画面。此外,游戏需要接收用户输入,处理游戏事件(比如碰撞检测等),可能还需要AI计算,这些任务都必须巧妙地在两幅画面切换的时间段里处理完毕,因此,一个高效而灵活的调度器就是游戏进程的核心。
调度器由时钟驱动器和任务治理器组成。
时钟驱动器负责在需要的时候向调度器提供准确的虚拟时间,虚拟时间流逝时,游戏就运行,虚拟时间停止时,游戏就暂停,虚拟时间还可以比真实时间慢或者快,以便调节游戏运行速度,所有的任务都依靠虚拟时间,并且它们不知道时钟是否暂停,这样就大大简化了时间的表示和运算,我们可以随时暂停时钟从而能够方便地调试。
任务治理器维护一个任务列表,并且知道下一个即将运行的任务是什么。一共有3种任务:
渲染任务:在游戏运行期间,负责更新画面,在每一帧的结束时间点执行。 帧任务:在每个帧时间段内执行一次的任务,比如绘制背景。 时间任务:在指定的时间点和时间段触发,执行一次或多次,完成后即被删除...[ 查看全文 ]