游戏感:虚拟感觉的游戏设计师指南——第十二章 Asteroids(小行星)

这是一本游戏设计方面的好书
转自天:天之虹的博客:http://blog.sina.com.cn/jackiechueng
感谢天之虹的无私奉献
Word版可到本人的资源中下载

 

第十二章 Asteroids(小行星)

    从第12章开始到16章,我们会通过实例来深入分析,看看这些游戏实例中各种元素是如何创造出游戏感的。我们会运用第6~11章建立的分类来把这些知名的游戏分解成输入、响应、环境、润色、载体和规则。之所以要拆分这些游戏,不单单是为了复制它们,而且是其中某些设计方法是我们可以借用的。我们的目的是为了理解游戏中各种细小的实现决策是如何产生出其中的游戏感的。在不少案例里,这些决策看起来是和直觉违背的,例如人为改变了跳跃最高点的重力。但所有这些细微的决策和关系在放到一起后,共同让这些游戏的感受变得很棒。

    这些游戏的制作者并没有遵循特定的方法学。他们花心思去留意那些阻碍感受的地方,然后尝试不同的实现方法,直到感觉更棒为止。我们是从一个更具结构化的角度来分析这些游戏的,所以我们不单能看看他们在做特定游戏时所做的决策,而且还能归纳总结出为什么这些决策能奏效,以及它们能否运用到所有的游戏里。这就是我们的目的所在了。我们希望基于不同游戏来了解其中的各种决策背后的潜藏原理。

    基于这个目的,我们对这些游戏用何种语言来实现是毫不关心的,你能通过ActionscriptC++,或者Python来达到同样的游戏感,选用什么样的语言都是没所谓的。此外,在这些章节里我还会引用到具体的实例。我强烈推荐你到http://www.game-feel.com下载这些实例,透过这些实例来体验一下我在文中提到的不同感受。亲身地试一下比光看描述要好得多。这些Demo实例每一个都揭示出特定的原理和参数,让你不需要自己编程就能感受到在游戏微调上带来的差别。我推荐你到http://www.game-feel.com/examples/下载这些小程序来看看。

    在每个实例的开始部分会看到我附上的网址,通过这个网址你能进入到该系统的空壳版,这个版本里所有的参数都是调到0的。你可以把它们看作是一个调整的练习。所有的部件都在那里了,如果你希望挑战一下自己,那我觉得把它们从全0状态重新重现出每个游戏就是最好的挑战了。

Asteroids的游戏感

    Asteroids在当时重新定义了“电子游戏”的含义。它就像是如今的iPod,在当时电子游戏领域里的受欢迎程度就像Apple产品在当今数码音乐领域里那样无处不在。当这个游戏在1979年最初发布时,它很快就卖出了超过7万份,彻底刷新了过去所有的销售记录,超越的还包括前一年由《太空侵略者》创下的记录。《太空侵略者》是一个很流行的游戏,它曾经在日本引起了全国性的硬币短缺,但最后还是被历史尘封起来。为什么会这样呢?为什么Asteroids会统治了电子游戏市场呢?到底是游戏里的哪些因素使得它压倒性地流行在市场上呢?这其中的答案源于游戏里独特的感受。

    Asteroids在本质上是把Steve Russell的《Spacewar!》做了重新平衡,《Spacewar!》可称作是所有有着良好感受的游戏的祖先。基于这点,它用程序模拟出飞船的速度、加速度和位置的惯性和离散追踪。按下冲刺键会对系统增加一股动力,让飞船向着它当前朝向的方向加速。飞船的转向就更简单了,你只要把它往左或往右旋转,它就会改变飞船的朝向了。

    位置的精细模拟和简单直接的旋转操作这两者的共同作用,让Asteroids同时具有着    干净利落的精准感和流畅平滑的表现力。这就好像飞船老是快要失去控制了,却又永远不会完全失去控制那样。玩家的任务正是操纵和驯服这艘飞船。这种感觉不是什么创新,有太多的游戏尝试把《Spacewar!》的感受搬到街机里了,其中包括Cinematronic的《Space Wars》和Atari的《Computer Space》。Lyle RainsEd Logg所设计的Asteroids的明智之处在于,他们聪明地发现了最合适飞船行动调整的规则组合和空间环境。屏幕上旋转飞来的陨石提供了合适的环境,以一种困难但又不会不公平的方式占据着整个屏幕空间。它们有着相对于飞船运动合理的形状、大小和速度,为玩家提供了一次又一次死里逃生的侥幸感,提供了一轮接一轮的流畅且富有表现力的刺激感。游戏的规则是很简单的,它设立了一套清楚具体的技能集,并通过奖励来鼓励玩家不断玩。

    相比之下,《太空侵略者》的感受是很僵硬和不友好的(如下图12.1)。飞船的运动只限制在屏幕底部一个很小的区域里,左右操作只能改变飞船的位置,而且改变的过程是很慢的。它也是一个很好玩的游戏,但从感受的角度来看就比不上Asteroids里飞船那丰富流畅的运动了。

    电子游戏历史网站Thedoteaters.com的站长William Hunter写道:“我不是《太空侵略者》的爱好者。……但Asteroids有着很酷的飞船惯性,也有着让人吃惊的一波波的侥幸感,它完全是设计和编程上的又一名作。虽然Asteroids的灵感来自于《Spaceware!》和《Computer Space》,但它设立下电子游戏中惯性的概念,并且由Logg所实现的真实物理感产生了游戏中的另一个发展分支。”

    如今还有着多游戏是模拟Asteroids的游戏感的,例如《Shred Nebula》和《几何战争》。但《太空侵略者》的游戏感已经完全淡出当今游戏机制的设计领域了。

输入

    Asteroids的输入空间是由5个标准按键组成的(如下图12.2)。尽管这五个按键可以同时按下,但它们都间隔很远,让操作成为必须两只手完成的事。尽管多个按键同时按下是可能的,不过在Asteroids里面没有太多这样的组合招式。

    从物理感上来看,Asteroids的机子是很大很笨重的,整个都由木头做成。按键镶嵌的平面是很舒服很平滑的,由塑料倒模而成,摸上去感觉很棒。按键很大,很有弹性,在按下时有悦耳的声音。当压下后,这些按键和它们镶嵌的平面是位于同一平面的。

    每个按键都有着两种状态,传递的是通常的布尔值信号:OnOffHeld(一直按着)。

响应

    传入的输入信号会以以下方式去调整游戏里的参数:

   /右旋转按键会让飞船沿着自身轴顺时针或逆时针地旋转(如下图12.3

   冲刺加速按键会沿着飞船当前朝向的方向增加一股推动力,这股推动力是有一个最大值的限制的。加速的过程有着很明显的响应延迟,大概要花3秒左右才到达保持阶段,然后花更长时间才完成释放阶段(如下图12.4)。

12.4 Asteroids里加速的ADSR包络图。

   射击按键能沿着飞船当前朝向的方向发射炮弹,发射是有着一小段延迟的。炮弹会继承飞船的速度。屏幕上同一时间只能有4颗炮弹。

   空间转移按键能把飞船重新设到一个随机的位置上。

模拟环境

    要做出Asteroids的游戏感,你需要的材料包括一个飞船的形象、两种不同的飞碟、屏幕界面,以及少量看上去有意思的陨石。由于陨石和敌方飞船主要是用于提供飞船运动的空间环境的,所以现在我们先不看它们的动作和行为,把注意力先放在飞船上。

可玩的实例

    打开实例CH12-1来试试重新做出Asteroids的感受。游戏里所有的参数都有了,只是都设成0而已。

    Asteroids里玩家操纵的飞船有着加速和旋转这两种基础行为(如下图12.5)。旋转行为是干净利落且精准到位的,而冲刺加速行为是松弛且响应缓慢的。在这两种行为下,飞船运动的参考框架都是自身本体,是一种自身的运动。

    Asteroids的特殊感受中最重要的关系在于游戏把旋转和冲刺加速分离开了。这是通过分开存放飞船的速度值来做到的,冲刺只是增加这个速度值。如果这两个值没有分开而是冲刺速度直接覆盖了飞船的速度,那感觉会更像是一个疯狂的远程遥控车那样,而不是一个平滑流畅的太空飞船。

    现在让我们来从头建立这个游戏的感受。首先我们需要一艘会旋转的飞船。Asteroids的飞船的旋转是很简单的。假如你按下两个旋转键的其中一个,游戏就会对飞船的朝向往相应顺时针或逆时针的方向增加很小的值。这在程序里是瞬间进行的,没有任何加速度来加速,也没有阻力来减慢。一旦按键按下,飞船就旋转,一旦松开按键,飞船就不转了。不过在输入信号进入时有着一个很小很小的上冲周期(如下图12.6.)。

12.6 上冲期只占用了1/4秒,但它的存在是明显感知得到的。

    飞船不是从静止直接变成完全的旋转速度的。它有一段很短的速度提升期,也就是一段大概1/4秒的上冲期。这是很细微的,但没有一段上冲期会让旋转感觉僵硬和机械化。值得注意的有趣的一点是,它在感觉上就好像飞船要克服很小的惯性那样。从玩家的观点来看,看起来就好像飞船要花1/4秒才能提升到全速旋转。

可玩的实例

    要体会到这细微的区别,你可以打开CH12-2的例子,点击“Raw Input”(原始输入)的勾选框来试试。

    接下来我们要让飞船在冲刺加速按键按下时做出向前移动的响应。这个动作是相对于飞船当前朝向的方向的,你可以通过左右旋转键来调整飞船的朝向。假如原本设定的冲刺加速运动是相对于摄像机或者相对于游戏世界里的其他对象,那飞船就只能往固定一个方向上移动了,这就完全不像Asteroids了。紧接着,假如我们按前面设定旋转的方式去设定飞船的位置,也就是根据按键有没有按下来直接改变飞船的位置,那感受是很僵硬很没组织感的。你会感觉它的移动很干净利落,很准确,响应也很灵敏,但移动的过程和日常生活中见到的所有对象都太不同了,以至于看到的和感受到的是完全冲突和不舒服的。

可玩的实例

    要体会到这点,你可以在CH12-2的例子里勾选“ModeL Set Position”(设置位移模式)来试试。

    这明显不是我们想要的。它漏了的最大一点是物件静止时的惯性。在Ast,飞船都是逐渐加速到最大值,然后以这个最大值不断移动,直到有另外一股力作用到其上的。要依倒这种惯性的感觉,我们需要把位移从速度中分离出来,让冲刺加速键调整的是加速度,而不是直接修改飞船的位置。在每一帧里加速度值都会加到当前的速度值上,然后基于飞船移动的时间来更新它的位移值(如下图12.7)。

12.7 不同的值使得飞船冲刺加速的行为随时间改变。(略)

可玩的实例

    要体会到这点,你可以在CH12-1的例子里勾选“Mode: Translate”(速度转化模式)来试试。

    如今的感受就像一辆发了疯的跑车在一条完全没有摩擦力的路面上飞驰那样。它在甩弯时完全没有Asteroids的响应延迟的丁点迹象。这个运动是很有趣的,甚至在感受上是很棒的。旦感觉起来和Asteroids是完全不同的,因为此时旋转和冲刺都纠缠在一起。

    转向会在每一帧都改变朝向,由于没有减弱过程,使得飞船一直永无止境地向前跑而无法慢下来。要达成Asteroids的感受,冲刺加速的向量必须从飞船的速度里分离出来。当冲刺键按下时,不是直接设定飞船的调整速度,而是在飞船朝向的方向上建立一个新的向虽,把冲刺速度作为向量上的值。这个就是冲刺向量了,当冲刺键按下时,这个向量会加到飞船当前的速度值上(如下图12.8)。

12.8 Asteroids的感受中最重要的关系是飞船速度和冲刺速度间的关系。

    很成功了!经过从改写速度向量到增加速度向量的改变,整个感受完全不同了。如今我们的模拟环境已经很贴近Asteroids的感受了。

可玩的实例

    要体会到这点,你可以在CH12-2的例子里勾选“Mode: Asteroids”(Asteroids模式)来试试。

    最后要实现的是速度的限制、屏幕边界环绕,以及较低的滑行作用力。

    你可以对飞船的速度给出一个主观的最大值。假如这个值设定得太过或者太低,它会轻微地改变游戏感受,但它最主要的作用还是扮演着容器的角色,防止飞船速度上升到太高了。如果你想改变这个限制来看看区别有着大,只要调整“Max Velocity”(最大速度)这个值就可以了。

    屏幕边界环绕通过检测飞船的位置实现,当飞船当前位置超过屏一尺寸时,把它的位置设到屏幕的另一边上。比较简单的实现方法是把屏幕的XY轴单独分开来实现。屏幕边界环绕和最大速度的参数一样,它是很实用的。假如没有这个效果,飞船的运动不用多少秒就会把它带到屏幕边缘了。

    最后我们需要对飞船的运动施加很小的滑行力。一旦按下加速后,飞船会带速度地前行超过4秒才停下来。这种很低的摩擦力能产生一种“迷迷糊糊前行”的感觉。虽然我们在现实中从来没体验过这种几乎没有摩擦力的运动,不过从我们接触的宇肮员新闻和类似《阿波罗13号》和《2001太空漫游》的科幻电影来看,游戏里体验到这点还是挺像太空的感觉的。

    最终我们清点一下调整过的整套参数(它们间的关系如图12.9所示):

   飞船转速——每一倾飞船在Y轴朝向上以顺时针或逆时针改变的快慢程度

   飞船位置——飞船在绝对空间中的位置,以X坐标和Y坐标表示

   飞船速度——飞船在绝对空间中当前的朝向和速度

   冲刺速率——当前的冲刺值

   冲刺加速度——当冲刺键一直按下时,冲刺值会随时间增加

   冲刺速度——当冲刺键一直按下时,该向量表示出对飞船速度作用的推动力。它以飞船的当前朝向为方向(这个朝向和飞船速度的方向是不同的),以当前的冲刺速率值为它的速率

   最大冲刺速率——把冲刺速度限制在一个硬性最大值。速度不能超出这个量

冲刺加速度

12.9 建立出Asteroids感受的各元素关系。

    最后我们来总结一下Asteroids的模拟环境,当游戏收到“冲刺键按下”的信号时,游戏会沿着飞船当前面对的轴向施加一股作用力。只要按键一直按下,这股作用力会根据加速度值不断提升,直到达到预定的最大值。不管当前飞船朝向哪个方向,冲刺只是在该方向上作为一个额外的向量。它不会直接改写飞船当前的速度,而是对其增加外力。这一点是很关键的,因为它把飞船的旋转和冲刺分离开来了。这种分离对Asteroids的游戏感是最重要的组成。它让飞船能自由地旋转,而不会受到当前速度的影响,借此产生了无阻力运动的感觉,同时还做出一种轻微的狂燥感,让玩家觉得老是快要失去控制。只要当冲刺键按下时,飞船的朝向就会影响到它的速度,这种做法让冲刺行为很让人上瘾。最终的结果让操作显得有很高的响应延迟:当玩家通过旋转来改变方向时,往往需要花上大约3秒才能让飞船的速度和当前朝向一致。从Asteroids的背景环境和规则来说,这种响应延迟既是游戏需要的,也是很棒的。

环境

    陨石在Asteroids中唯一值得一提的是它们为飞船的行动提供了恰到好处的空间环境。大的陨石占据了屏幕里较大的区域,但它们的移动是很缓慢的,很容易预测到它们的行动。小的陨石占据屏幕上较小的区域,但由于它们移动得更快,玩家更难躲避。在游戏里飞船都是比陨石移动更快的,但由于运动难以驯化且几近疯狂,也因为屏幕边界环绕对飞船和陨石同样施加的约束,屏幕上的每个陨石都显得很棘手。对我来说,游戏的感觉就像一个没经验的溜冰者在一个拥挤的公共滑冰场溜冰那样。当我去到公共的滑冰场时,我能比任何人更快地四处跑,因为我在小时候就开始玩曲棍球了。但我是无法预测到哪些人快要滑倒,哪些人想要转向,哪些人会因为想去可可叛卖机而和我撞个正着的。结果是我限制了自己的速度,尽可能和每个人都保持安全距离。即使我能很快地停下并转向,但假如别人突然撞到我面前时,我也无法控制自己不撞向对方。玩Asteroids就好像在当地的滑冰场经历一场拥挤疯狂的滑冰之夜那样。当然,除去射击陨石和陨石爆裂这两种情况不谈。

    从功能来说,这些陨石在游戏一开始得到了随机的速度。当被玩家射击时,大陨石会爆裂成小尺寸的陨石,一股额外的作用力会让它们向随机的方向飞开。在飞开同时它们也继承了产生它们的大陨石的速度,因此它们的速度更可能是向上提升,而不是往下减慢。当它们分裂成更小的陨石的情况也是一样的。在游戏里无法发挥太多的洞察力,一旦陨石瀑裂了,它们会让场地变得更拥挤,游戏也变得更难四处移动。飞船的移动和转向速度是很快的,但这些调整不代表你能足够快地应付突如其来的陨石,除非你早就规划好行动。

    飞碟比陨石要更难应付,但它们基本上都是提供着同样的功能。它们会以难以预期的方式移动,基本上是在水平方向上随机地上下移动。当然,它们也会向你射击。当你越靠近它们时,它们就越可能向你开炮,因此对付它们就像打蛇随棍上那样。

    总的来说,Asteroids的感受是由飞船本身的运动以及飞船要避开的物件共同界定的。陨石给予的源源不断又逃避不及的危险和狡猾的飞碟结合在一起,而屏幕边界环绕又意味着你永远不可能逃脱这个空间,于是这些危险就让飞船快捷顺滑的运动赋予了意义了,让玩家每一个细微的调整和转向都显得更多是失去控制而不是在掌控之中。

润色

    Asteroids诞生的年代,由于没有着少处理机能可以花在游戏上,所以游戏缺乏润色效果是合情合理的。但当年Atari的程序员还是出色地应对了这个挑战,巧妙地把视觉和声音效果粘合在一起。特别一提的是在物件的视觉尺寸和他们做的声音间有着极其统一的关系。例如当一颗大陨石被射开时,声音是深沉的爆破声。中型陨石的爆炸声的音调更高,而小型陨石的音调会再高一点。类似的,大型飞碟比起小型飞碟发出的音调要更低。游戏里越小的物件在子弹击中后音调越蒿。在所有的效里,冲刺时发射的火焰的声音是最低沉的,这种声音表现出这是一个相当强大的设备。

    游戏里还有其他细致而又有趣的润色效果,例如当陨石被摧毀时射出一串粒子,当飞船被击毁时部件爆裂飞开,以及在飞船飞行时会在速度的反方向喷出闪光来表示火箭筒的火焰。由于机能限制,每一个效果都是十分简单的。但它们相互间协调得很好,其网状效果强烈地表现出飞船、飞碟和陨石的物理特征。这个例子很好地证明了统一一致的效果是比花哨但相互矛盾的效果要有效得多的。

载体

    Asteroids在载体上的表象是很简单的。它看上去像是一艘太空船,但它更像是一艘山寨做的而不是官方做的。陨石和飞碟进一步强化了这种科幻题材的主题感。载体上的处理手法是高度形象化的。它没有采用任何的写实手法,但也没有冒险作出任何程度的抽象。游戏里每一个物件都是形象化的,包括飞船、火箭的火焰、子弹、陨石等等。它们明显看得出来是要表现具体概念的。由于这些物件所运用的处理手法简单且统一,玩家对它们也没有设立太多的期望。游戏的主题是外太空,因此飞船那几乎没有摩擦的感觉也和载体表象毫不冲突,但也没有什么牵连。由于图像表现太简单了,所以即使是像我们体验过的汽车那样的物理感也不会显得冲突和奇怪。

规则

    影响Asteroids游戏感的主要规则是飞船的碰撞和摧毀相关的规则。玩家在游戏一开始有三条命。撞倒任何东西(包括子弹、陨石和飞碟)都会马上毀掉飞船并扣掉一条命。这一点使得飞船看上去是极其脆弱的,也让额外生命的奖励成为游戏里最珍贵有用的东西。这种价值感和游戏的分数系统关联在一起:当你每得到10000分,你会获得额外一条命,此时摧毀陨石就让人满足和显得有价值了。摧毀大型陨石能得到20分,中型是50分,小型是100分。这为陨石的摧毀提供了很合理的价值尺度,也为玩家摧毀陨石提供了源源不断的动力。

    然而分数系统真正确立的可怕之处是小型飞碟的“风险-奖励”关系。飞碟是游戏中最危险也最难摧毀的物件,但它同时也是最有价值的。摧毀一架大型飞碟能得到200分,而极难命中的小型飞碟在摧毀后能得到1000分。于是这就产生了很诱人的风险/奖励博弈了,因为摧毀这些小型飞碟能得到太多的分数,这比你不断摧毀那些枯燥乏味的陨石要好得多了。当你看到有一架飞碟驶过时,即使它正在向你开炮,并且还是一个难以预测的小型目标,你还是把注意力放在它身上,操纵着飞船去追赶它,因为摧毀它就意味可能得到极大量的分数了,这能让你更快地多得一个命。

    当然,如果你在尝试去摧毀这些该死的东西的过程中把性命也丟了,那得到分数也是毫无意义的。所以这就在你脑海里小心计算着风险和奖励了。到底值不值得这样做呢?我还有着少条命呢?我还有很多吗?我需要这点分数吗?我还差多少分才多得一条命呢?……类似这样的种种思考。这种价值、风险和奖励的感受会驱动玩家更靠近这些小型飞碟,从而影响着游戏感。在这些的相互影响下,玩家慢慢掌握了一整套新的技巧,也体验着飞船总像是失去控制的感觉,对比着飞碟快速精确的运动和射击的感觉。

总结

    Asteroids是游戏史上突破性的,在当时也极为流行,这很大程度上归功于它独特的游戏感。在本章经过我们对它游戏感详细的分析后,我们很容易看出为什么它这么成功了。

    游戏的输入设备感觉很棒,尽管只是用布尔开关的按键,但它把操作和游戏行为中事物的运动映射得很好。它还调用上玩家的双手和五个指头,确保玩家在游戏中是充满挑战(但又不会太难)且一直忙碌的。

    游戏在响应上的映射是很清晰、很简单且很容易摸透规律的。

    但从模拟实例也能看出来,Asteroids里还隐藏了一些“秘密元素”。游戏把冲刺从旋转中分离出来,这种分离促成了Asteroids最大一部分的游戏感。它使得操作的感受是很松弛的,这对游戏整体的感受是至关重要的。

    从背景环境来说,Asteroids里的陨石为飞船的行为提供了很合适的空间背景。陨石所产生的接二连三的无法逃避的危险感,配合上诡计多端的飞碟,以及屏幕的边界环绕机制,这些共同使得玩家感觉自己永远逃不出这片空间。这些危险让飞船快捷流畅的运动具有更多的意义,让玩家对飞船每一个细微的调整和转向都显得像是要失去控制,而不是在掌控之中。

    Asteroids里的润色效果为整体游戏感增添了恰到好处的帮助——所谓的不温不火。游戏里的图像和声音都是很简单的,但也很统一,它们已经充分利用了当时可以用上的所有可能了。

    外太空的载体表现是简单而形象的,让整个游戏很容易就能满足玩家脑海里对“真实”飞船行为的预期了。

    最后,Asteroids的规则是做得极为出色的,所有的规则都对玩家设下了挑战,刺激着他们去提高技巧来得到更多的奖励。

    总的来说,游戏里所有元素都经过了很好的平衡,共同建立出一个简单却又极为流行的游戏。构思出AsteroidsLyle Rains和有着创作远见的程序员兼设计师Ed Logg,他们把游戏里的一切都做得很好。不难想象为什么Asteroids在美国引起了这么大的轰动,在这么长的一段时间里贏得Atari的最佳销量。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值