了解游戏的基本概念

这不是一本讲如何设计游戏的书,所以我不会涉及太多有关游戏设计的内容。

但是,了解一些游戏的基本概念绝对可以帮助我们更好的去实现游戏。

玩法

一个游戏,最重要的就是玩法。玩法实际上就是游戏接受到玩家的输入后怎么反馈给玩家。

例如一个猜数字的游戏,玩家每次输入一个数字后,游戏就会告诉玩家输入的数字与游戏预先设定的目标数字相比较,是偏大还是偏小。然后再次等待玩家输入,直到玩家猜到预设的数字。

本书里将要制作的游戏当然比猜数字复杂多了。这个游戏有一个迷宫,里面会有玩家控制的角色,还有程序控制的怪物,以及宝箱等物品。

玩家需要控制角色在迷宫中移动。移动过程中,角色会遇到怪物,并与怪物发生战斗。而当角色接触到宝箱等物品时,又会改变角色具有的能力。最终,玩家需要控制角色到达迷宫的深处。

比较两个游戏,我们会发现它们都有一个共同点:接收玩家输入、根据输入做出反馈,重复上述步骤。

很明显,这是一个“循环”!

游戏循环

几乎所有的游戏都是构建在一个循环之上:

了解游戏的基本概念 - 图1

上图中,输入不仅仅是指用户对游戏的操作,而是还包括了通过硬件和程序产生的输入。

例如迷宫里的怪物发现玩家控制的角色进入了自己的攻击范围,那么控制怪物的程序代码就会触发怪物的攻击动作,这也是一种输入。游戏在接收到这个输入后,需要更新画面来反馈怪物对角色的攻击。

由于处理输入和更新画面是交替进行的,这造成了几个问题:

  1. 必须以固定的频率来更新画面,否则用户会觉得画面出现闪烁和停顿。

  2. 游戏逻辑需要分割为一小段一小段来执行。并且每一次执行游戏逻辑的时间不能超过两次更新画面之间的间隔,否则就会影响画面更新的频率。

为了解决上述问题,cocos2d 采取提供了多种工具来帮助开发者。

60fps

60fps 是 60 frames per second 的缩写,表示帧率为 60,也就是每秒更新 60 次画面。

虽然传统电影只有 24fps,但实践证明游戏以每秒 60 次的频率更新画面时,玩家可以看到最平滑的运动画面。

关于屏幕更新频率是一个可以深入很多篇幅的话题,这里我们只需要知道尽量保证游戏以 60fps 更新画面就可以了。

cocos2d 引擎已经内建了一个游戏循环,并且按照 60fps 的频率更新画面。

将游戏循环和画面更新结合起来考虑。我们的游戏可以在每两次更新画面期间完成对输入的处理。

但是这就造成了我们的

实际上,由于更新画面还要消耗时间,所以用于执行游戏逻辑的时间会短得多。