游戏感:虚拟感觉的游戏设计师指南——第十三章 超级马里奥兄弟


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

 

第十三章超级马里奥兄弟

    《超级马里奧兄弟》在电子游戏领域里是一个突破性的成功。

    1983年,电子游戏的未来看上去是很暗淡的。“视频游戏”对零售商来说是一个不入耳的词汇,而街机也以惊人的速度一家家倒闭。Atari都用自己次劣的产品大行其道于市场上了。消费者渐渐失去了兴趣,零售商也开始亏钱,当时的测评家都预言视频游戏的狂热要到头了。此时,一个年轻的工业设计的毕业生进入了任天堂公司,进入了这个娱乐体系,就这一刻开始,他永远地改变了视频游戏。

    宫本茂是一个很安静很谦逊的男人,他对自己那适中的薪水感到“很满意”,看上去对他那世界知名的名声也感到相当困惑,他无疑是“世界上最受称誉的游戏设计师”。当他闪现出那标志性的笑脸,轻松地解释着他为《大金刚》做的最初的设计草图时,你能感觉到他直至今天还对20多年前的设计感到兴奋。由于当时公司里再没有别的人可以胜任了,于是当时的官本茂受到社长山内博的委任。做这个游戏,这是官本茂的第一个游戏。毋庸质疑,当其时任天堂的将来就全系在这个还没经过验证的工业设计毕业生以及他那“顽强的大猩猩”身上了。除去运气成分不谈,这个游戏一炮而红了,彻底挽救了病入膏肓的任天堂,也确立了宫本茂的名声。

    虽然《大金刚》是迅速成长的“跳台”游戏类型的第一磅重击,但它在那时让人感觉还是很僵硬的。《大金刚》里的角色跳人能左右移动、爬梯子和跳跃。他的跳跃都是遵循一种特殊的预定好的弧线的,并且只能以一种速度跑动,在跑步时要不跑,要不不跑,要不就是全速跑,要不就是完全静止不动,完全没有递增的加速度或减速度,当跳到空中时也没有对跳跃的控制。虽然它已经向前迈出一步了——有着吸引人的角色、鲜明亮丽的颜色和精细的动画的一个吸引人的很好玩的游戏——但它很是让人感觉很僵硬。宫本茂清楚这个游戏还能做得更棒。于是在《大金刚》的一个成功的续作后,他把自己的注意力转到游戏的改良上,重新做出了一个意大利的水管工角色,称之为马里奥兄弟。

    《马里奥兄弟》与原来的有很大不同。这一次虽然马里奥一旦跳起,轨迹还是无法改变,但他能跳得更高了。游戏里第一个强大的感受来源于马里奧的左右移动。游戏的移动不再是两态(全速或者停止)了,而是当方向键按下的时候会有三种状态:停止、走路和跑步。于是现在马里奥能逐渐加速了,玩家可以快速按下方向键来对位置做出细微调整。类似地,当方向键的输入停止时,马里奥会稍微滑行一段才停下来。如今他有着惯性了。这种平滑感在类似《Asteroids》以及备受赞赏的《Spacewar!》里也有用,但从来没用过在这样一个控制角色跳跃障碍和深沟的游戏里。《马里奥兄弟》一炮而红了,伴随其后的是街机时代的尾声。

    1986年,新作所需的所有元素都具备了。《超级马里奥兄弟》用强大的角色驱动的载体和可爱梦幻的处理手法来组合出松弛流畅的游戏感。游戏里在站立和跑步间不再仅有这种状态,而是有着数百种状态了。马里奥如今会逐渐加速到最大速度了,完全感知不到过程中的状态切换。当输入停止时,他会滑行一段,渐渐停下来。整个游戏让人感觉是直觉易懂的,但又很有深度:比起《大金刚》的感受要响应更延迟且更不精准,但也因为这样感觉更棒。在一定程度上这样让人感觉更”真实“。它在一瞬间震撼全球了。《超级马里奥兄弟》是史上第一个真正轰动全球的视频游戏,它在全球售出了超过2500万份,远远超过了历史上所有最佳销量的游戏。在1987年的调查里,马里奥在美国小孩心目中的认知度甚至比米奇老鼠还要高。

    宫本茂对游戏感的理解是基于简化而不是基于现实模拟的。首先他是从艺术上去看待一个游戏的感受的,他觉得游戏感是一种综合的审美感受。当其时的视频游戏领域都由工程师占据席位,他们遵循着Steve Russell那传统的方式,做出各种复杂拘泥的载体,例如黑洞的万有引力,又或者是在月球上登陆飞船。而宫本茂为这个领域带来了一种崭新的视角。他只想做出有趣的多彩缤纷的游戏,游戏里有着异想天开的角色,玩起来感觉是很棒的。其次,他是整体地设计游戏的,考虑的不仅仅是软件,还包含了输入设备。(直至今天,宫本茂还在同时设计游戏和手柄,这是在设计师里很少见的,特别是对街机已经销声匿迹的今天而言。)最后,宫本茂很清楚载体的威力,清楚它是如何影响到玩家学习和掌握一个复杂系统的意愿的,清楚它是如何影响着玩家依附在游戏上的情感的

    宫本茂还从直觉上知道用户输入后瞬间的反应所产生的触感和运动知觉感受有多强大。《超级马里奥兄弟》无疑是虚拟感受上最棒最闪光的一个例子。

    那现在留下一个很大的问题了:这些感受是如何建立起来的呢?我们如何才能做出一个感受真的像《超级马里奥兄弟》那样的游戏呢?回答这个问题就像围绕着游戏感的众多问题那样,它是极难回答的。翻过这一章你会看到,即使是像马里奥这么简单的一个游戏也有着极大量细微却极重要的决策需要在设计上考虑。单独看这些细节,它们可能显得微不足道且怪诞奇形。但作为一个整体去考虑时,它们正是销售多达2500万份的原因。

输入

    在输入设备上,我们用的是NES(红白机)的手柄。正如我们前面所说,它发出的信号是很简单的,作为一个输入设备它只有着很低的敏感度——只是由一系列标准两态按键组成,但拿在手上和用起来感觉都很不错。它其中一个很大的优势在于简单。当你拿起这个手柄时,由于拇指只会应对这么少的按键,你几乎不可能会按错别的按键(如下图13.1)。

13.1 简单而又经典的NES手柄。(略)

    每个按键都发送一个两态的信号。单独来看,这些输入一都可以解释为“上”和“下”。当加入时间的因素后,这些信号能解释成“上”、“一直松开”、“下”和“—直按下”这四种状态。

    就只有着样了。对NES手柄没有再多能说的了。作为一种输入设备来说,它是有史以来其中一种最简单最有趣的输入设备。手柄表面的塑料是光滑透气的,按键感觉很有弹性,很丰满,整体包装让人感觉是很坚固充实的。

    这里需要注意一点,我们在后面测试这些例子时都是用键盘操作的,这会改变到操作感——因为此时左右键能同时按下了,而且你用的是多只手指输入而不是单单一只拇指。

响应

    在《超级马里奥兄弟》里有两个角色,一个是马里奥本身,另一个是摄像机。马里奥能在一个2DXY平面上自由移动,就如下图13.2那样。

    由于马里奧的角色是完全不会旋转的,因此在本体运动和全局运动间没有任何区别。

    摄像机是通过玩家间接控制的,当马里奧角色的位置变化时,摄像机会只沿着X轴向变化(如图13.3)。有趣的是它永远不会往左移动。

13.3 《超级马里奧兄弟》的摄像机只会在X轴上一维移动。(略)

马里奥的“食谱”

    《超级马里奧兄弟》的感受主要存在于马里奥这个主角上。

    假如你想做出一个感觉很像《超级马里奥兄弟》的游戏,你需要的首先是一个矩形。这是游戏中处理各种对象的方式,这个受着数百万玩家认知和喜爱的角色只是一个简单的矩形。更具体来说,他是由一系列的点来组成一个矩形框的,但为了接下来的讨论,我们完全可以把它称之为一个矩形。现在就让我们以这个矩形开始吧,让这个矩形静止不动地坐在屏幕中心(如下图13.4)。

13.4 马里奥的外形:一系列点组成的一个矩形。(略)

可玩的实例

    打开实例CH13-1,按以下方法操作。在实例刚开始时是没有任何运动的,所有的参数都设成0,角色也是屏幕中间的一个空白的矩形。接下来显然是要让矩形移动起来。马里奥的模拟函数是有着两个不同的子系统的,它们分别是水平方向(X轴)移动和更为复杂的垂直方向(Y轴)移动。我们在一开始时先把焦点放在水平移动上。正是这两个子系统的相互作用产生了马里奥那流畅而又富有表现力的感受,但从模拟机制上来看,这两个系统基本上是分离的。

水平移动

    马里奥所有的水平移动都和左右方向键的按下关联在一起。这些传入的信号是以简单的布尔值表示的,由于输入设备本身带有事物理限制友右方向键是不能同时按下的。结果在任一时间只能从输入设备上传来一个的信号:左,或者右。把这种输入映射成响应的最简单的方法是为矩形在游戏里只存储一个位置信息。当侦测到左键或者右键的信号时,矩形会往相应的方向移动特定量的距离。只要左键或者右键一直按下,矩形就会每帧都往相应方向移动一定距离。这是《大金刚》采用的方法,当摇杆往一个方向压下时改变位置。然而这还不是马里奥里采用的水平移动方式。下图13.5表示出马在一段时间里马里奧的移动和《大金刚》的移动的区别(图从第7章引来)。

13.5 《大金刚》和马马里奥的移动。(略)

    我很喜欢《大金刚》的感觉。我觉得它很吸引人。然而很难争出个必然说它比马里奥的表现力更丰富。马里奥感觉很流畅,响应很丰富,而《大金刚》感觉很僵硬,很像个机器人。每当你看一下这两个游戏,你会看到马里奧是能去到很多地方的,玩家在游戏里有着更多表现上的可能性。之所以这样的主要原因在于模拟机制。《超级马里奧兄弟》在模拟机制中是整合了物理力学的,这是大一就能学到的物理原理,但它实际上是在加速度、速度和位置上存储了变量。因此虽然它只是一个简单的标准力学模拟,但它已经是一个牛顿物理体系的简单模型了。它也不可能很精确,当时的程序员只能用8bit的数字来开发,所以只能在一定程度上去模拟。但这种模拟并不是完全虚假的。

    《大金刚》没有这种模拟。游戏里的角色有着所在位置和两种不同的状态,所有就仅此而已了。当你按下右键后,程序只是把当前位置加上一个值。这个新的位置值会在屏幕上重绘,成为角色当前位置,然后继续接下来的行为。当玩家往一个方向压下摇杆时,角色会以持续不变的速度移动,它在完全静止和全速跑步间没有任何的加速阶段。类似地,当输入停止时也没有减速阶段。换句话说,跳人的速度只能是(比方说)5单位/秒或者0单位/秒,没有任何处在这两个值之间的数字。对于输入敏感度很高,表现力很丰富的摇杆,《大金刚》只利用了它位于中间和完全压下的两种状态,让它只能产生简单的OnOff两种响应。图13.6表示了《大金刚》型运动的短上冲阶段,这个动作在输入信号收到的那一帧开始,不过由于要一段时间才能把摇杆从中间压到底,所以在感觉上会有很短的上冲阶段。

13.6 《大金刚》的运动是很僵硬的。

    马里奥的水平移动融入了加速度、速度和位置三种不同的值。当游戏接收到“向左”的信号时,它会在每一帧加上加速度,而不是直接转化成位置上的改变。当方向键一直按下时,游戏在每一帧都会把加速度加到速度值上。速度值最终会驱使矩形以何种方式去改变位置。因此马里奥的位置改变看起来不是像图13.6那样像是个非曲线的盒子的,而是像图13.7那样。

13.7 马里奥的移动是逐渐提升到最大速度的,这让它显得更富表现力。

可玩的实例

    如果你之前一直都跟着CH13-1的例子在做,那你在现在可以把最大速度设成一个很高的值(比方说2000),然后把跳跃值和减速度都设为0来体验一下的。假如你愿意,你还可以把载体表象切换成矩形看看。

    现在你可以按下AD键来前后跑跑,注意到什么了么?速度值使得角色很快地跑开,距离一下子就跑得太远了。我们需要卡住它,为它设一个限制。这个限制是最大速度值,它只单方面作用于左右移动上。

    此刻你还会注意到的另一点是这个矩形一旦运动了就不会慢下来或者停下来了。你能往反方向用加速度抵消,直到运动从向右转换到向左,但你永远不能完全地再次停下来。基于这点,我们需要一个单独的值来让马里奥减速到静止状态。这是一个减速度或者叫减速值。当马里奥向前跑时突然松开手柄,它会慢慢滑停。它停下来要花的时间和你加速有多快是没关联的。现在当加入了减速值后,你能得到一个更贴近马里奥水平移动感觉的机制了,

    水平移动的整个感受的最后一块拼图落在B键上。当B键按下时,马里奧会“跑起来”。这个改变是由B键映射到模拟机制上的改变产生的。当游戏侦测到B键按下时,它会改变加速度值,然后会继而改变到最大速度。当B键一直按下时,角色的加速度会提升,其最大速度也会提升。在这种情况下,B键就像一个状态调节器那样,只映射到模拟机制的参数改变上,而不产生额外的作用力。

    这个感受是和当其时的游戏有很大不同的,因为它为了表现跑步做了两个不同的加速度和两个不同的最大速度。这种在速度间所作的看似简单的改变有着富有表现力的力量。玩家对速度提升的感知是建立在对比上的。只有当跑步和走路相比较时才会显得前者很快。无论把两个值往上还是往下调,跑步看起来还像是跑步。重要的是这两个值间的关系。只要这种关系一直维持着,走路和跑步间对比所产生的速度感也会随之维持着。这是很有趣的——对感受最关键的是速度间的相对关系,而不是速度的数值本身。

    这种改变产生的另一个有趣的结果在于它让水平移动有了更多的表现力。假如当你处于静止状态时按下B键开始跑,那加速度的曲线会完全不同——它会有着一个更高的值。类似地,由于你是可以在任何时候按下B键的,所以你可以轻按按键来很精确地调整速度。现在你可以在这个小程序里试一下:在开始跑起来以后试试快速按一下B键或者一直按下它,尝试在跑步过程中的不同时刻按下,看看从静止到走、从走到跑,以及从静上到跑间总共有着多少种不同的速度。这些不同速度的数量是巨大的,只是在响应上做了这么一个小改动就增加了惊人的表现力了。

    最后,在空中的水平加速是不同于地面的。这带来了进一步的对比,换言之是加速度在地面上、空中,以及跑步过程中的对比。当你在地面时,你是以固定速度加速的,这和空中的加速不同,它只是在每—帧都以一个数值去施加作用力而已。但只要你进入了空中状态,水平上的加速值就会改变了。如今你不断按B键都没有任何效果了——在空中状态里,所有的平上的移动都是以同样的速度进行的。它去掉的只是加速度,而不是速度,所以你可以在跑动过程中跳起来,这样会继承你在水平上的移动速度。在空中状态里真正减除的是你通过加速或其他方式去改变速度的能力。

    总的来说,马里奥在水平移动上的感受由以下的重要因素决定:

   向左加速

   向右加速

   最大速度

   减速

   奔跑中向左加速

   奔跑中向右加速

   奔跑最大速度——减速度还是一样的

   空中向左加速

   空中向右加速

    减速度在跑步键是否按下时都是一样的。到目前为止,我们已经做出了一个矩形,它能逐渐向左/右加速到最大速度,能逐渐再次减慢到静止状态,还能当B键按下时以更快的方式加速到更高的最大速度(图13.8)。

13.8 马里奥里的水平移动。

垂直移动

    矩形的垂直运动也就是马里奥的跳跃,它比地面上的移动有着一系列更复杂的关系。首先它有着持续不变的重力。当你在向左或者向右移动时,重力始终把角色往下牵制。其实现是很简单的:在角色身上施加一个持续向下的作用力。但这个重力的作用力是会变的。当玩家按下跳跃键时,马里奥会马上具备了某种向上的速度,这回抵消掉重力向下的引力,让他以一条高飞的优雅的弧线往空中跳起。这个向上的速度会逐渐减小,直到重力重新出现。在跳跃弧线的顶尖部分是向上速度到达0的部分,此时重力会人为增加,以比之前让他飞上天空的更大的作用力来把马里奥拉回地面。不过这个人为的重力和马里奥里所有的作用力一样,它们都是有着封顶的——最终会有着一个最大速度来限制他向下的运动。除此之外,游戏在跳跃键按下的时间长短上还做了人为的感受。轻轻按下就会触发一个小跳跃,而一直按下按键会让跳跃延伸。这个时间上的敏感度也是有范围的:在跳跃高度上有着最小值和最大值,游戏能接收的跳跃输入的时间长短也有着最小值和最大值,后者的长短会影响到前者。

    这的确听起来很复杂。接下来让我们进一步看看每一个单独的规则和交互行为,一个个来看。

    首先,这个矩形需要一个不断向下的作用力。它是—个重力,会不断把矩形拉到地面。这个作用力会一直存在,即使当矩形已经贴着地表砖块也施加在角色身上。游戏的每一帧里,碰撞程序会检测矩形的位置和施加在其上的作用力,基于这个检测来推断出矩形在下一帧的位置该在哪里。假如下一帧可能进入了本应是实心的地表砖块内部,则把矩形的位置贴紧地砖。所以即使重力会随时随地地施加在矩形上,但碰撞程序会一直防止马里奥掉下地面。

13.9 碰撞代码会把马里奥设回任何实心物件的外面(并且是上方),否则重力必然会让他穿过去。这个处理会在每一帧里执行。(略)

    接下来是向上的作用力。当玩家按下跳跃键时,马里奧在Y轴上的速度会瞬间设成一个很高的值,它会抵消掉重力,把马里奥发射到空中。假如只要该键按下不放这个作用力就一直存在,那矩形就能永无止境地飞向天空了。

可玩的实例

    要体验到这种感受,试试把实例CH13-1里的“max jump force duration”(跳跃作用力最大时长)设为10秒左右。

    要模仿马里奥,你需要让矩形逐渐慢下来,在重力接手时逐渐减少向上的作用力。这不是两套写死的值,而是两重关系共同产生的结果。

    第一重关系是初始的上升速度和重力间的关系,前者会在每一帧里减少少量的值。由于重力一直减小初始的上升速度,所以这个速度的持续时间是有趣的。当经过了最初的爆发力后,没有任何作用力能让矩形继续上升了。结果是重力重新接手,逐渐减缓上升势头,直到矩形无法再向上提。于是,当角色也在水平上移动时,跳跃会产生一条优雅的弧线。因为当游戏接收到输入时会产生一个大幅度的明显的响应,所以这让跳跃显得是即时快速且响应灵敏的。

    第二重关系在于跳跃键按下的时间和上升速度间的关系。跳跃行为是时间敏感的。快速按下按键会产生小幅度的跳跃,长时间按着按键会让跳跃延展。这种时间敏感性也有着范围约束:跳跃高度是有着最小值和最大值的,游戏能接收的跳跃输入的时间长短也有着最小值和最大值,后者的长短会影响到前者。从对响应的实际测量来看,当你持续按着A键完成了最长时间的跳跃后,角色会跳到5个格子的高度。假如你尽可能快地轻按A键,角色会跳得很低,大概是1.5个格子。所以在跳跃高度的范围上有很丰富的表现力,你的跳跃高度会处在1.5个格子到5个格子间,这两个极值分别对应着按下按键1帧和按下按键持续半秒(如下图13.10)。

13.10 马里奥的跳跃高度是取决于按键按下的长度的,但它有一个范围限制。(略)

    最终效果是让玩家去把控跳跃的时机。玩家能选择早一点放开按键来做出一个较小的跳跃。

    到目前为止,我们有了跳跃的时间敏感性了,当跳跃按键按下时也有着最大跳跃作用力的限制,如今矩形的跳跃让人很满意了。现在唯一的问题在于最小跳跃的高度:基于这种实现,最小跳跃的高度还是很高的。毕竟最大跳跃作用力还是在一段时间里作用的。所以最小跳跃和最高跳跃间的表现范围是很窄的。

    要让跳跃的感觉对头,我们需要用类似缰绳的方法去人为约束住跳跃的作用力。这点正是做出最接近马里奥的跳跃的关键之处。以下是这种缰绳般的方法:当游戏在跳跃状态里检测到跳跃键没有再按下时,它会检测Y轴上的速度(也就是跳跃作用力)是不是超出指定阀值了。如果超出了,那就人为地把Y轴上的速度设成一个特定的不会改变的较低值。这个值接近于0,但是不完全等于0。很奇怪吧?在游戏里按下跳跃键即使只有着两帧的时间,角色也会得到完全的上升速度。但只要一旦按键松开了,那不管跳跃有没有完成整个过程,系统都会人为地把跳跃作用力设到一个很低的值。结果是从松开按键的该时刻开始你还会飘移一小段距离,但紧接着马上会以优雅的弧线落下来(如下图13.11)。这种做法比预设一大堆跳跃弧线要好得多。

13.11 当玩家过早地松开按键时,系统会把上升速度人为地设成一个很低的值(从而让角色跳得更低)。(略)

    用实际的数字列出一张图能更清楚地从视觉上反映出它的做法:当按键按下的时间超过预设的最大跳跃时间时(此时能达到最大的跳跃高度),上升速度的变化会像下图13.12所示。

13.12 上升速度自然下降时的曲线。

    在按键按下的第1帧上,跳跃在Y轴上的作用力会设为100。这个大幅度的作用力会把矩形很快地推向空中。在接下来的一帧,重力会把作用力进一步小幅减小到90。在随后的每一帧里,Y轴上的作用力都会不断地小幅减小,直到最终达到最大跳跃时间。从这个时刻开始,玩家的输入就不重要了,跳跃的作用力会降到0,矩形开始落到地面。

    我们把它和最短时间的跳跃比较(如下图13.13),在最开始的第1帧时系统还是会让你全速(100)跳起来,但到了第2或者第3帧时,跳跃的作用力会设成一个很低的硬性值(20)。此时速度不会逐渐经历908070……而后一直到整个跳跃弧线完成,而是瞬间设为20。从该时刻开始,系统就不再监听按键上的输入了。类似地,假如你按下跳跃键的时间只经历了一半,那速度会经历9080706050,然后直接到预设的20。这样的处理结果是各种跳跃都有着类似的弧线,尤其是在弧线的结束部分。按键的持续时间只是改变了角色能去到的高度(继而也影响到跳跃距离)。

13.13 玩家过早松开按键时,上升速度的下降曲线。

    现在我们继续回到跳跃的过程实现上。回想一下,如今矩形只是能在跳跃中到达一个最高点,这个顶尖是速度降到0的位置(由于重力持续对它施加作用力)。从此刻开始矩形要落回到地面了。但有趣的是自这点开始重力就改变了。当你在跑动时按下跳跃键,重力还是像平常正常的值那样。你只是靠一个反向的Y轴速度来把你送往空中,让你暂时能克服相对较弱的重力的牵引。然而这个向上的力只会作用固定一段时间,随后重力就会逐渐接手让你慢下来,直到不再具备向上的作用力为止。一旦你到达跳跃的最高点后,游戏不是让重力自然地把你牵回地面,而是人为地增加,快速把你拉回地面。只要在你掉落的时候就会产生这种更强的重力,例如在你跳跃到最高点时,或者从一个平台的边缘往下掉时,又或者是头撞到一块砖块时(此时会把你的垂直方向的速度瞬间设为0)。

    你可以试试把下落时的重力设成和平常在地面走的重力一样,看看会发生什么情况。此时跳跃显得太远了,你开始感觉好像失去了对角色的控制了。角色的重量感也受到影响,让整个矩形显得比它原本该有着更轻了。换句话说,整个感觉显得很奇怪。

    在处理下落时最后要注意的一点是要对下落速度设一个最大限制值。正如水平速度有着最大值那样,垂直上的速度也该有最大值。当你下落时,程序代码里会定义了一个终极速度。这是一个硬性值。假如你不限制这个值,你会得到完全不一样的感受。此时只要你从高处掉下来,你就会以飞快的速度落到地面,感觉是很奇怪的。如果反过来你把这个值设得很低,那就好像在动画片或者别的电影里半空跳伞那样,你能感觉到这种人为附加的速度限制。你会觉得这不是自然的弧线下落。尽管试一下这两种设置——把这个Terminal Velocity(终极速度)值设到很高或者很低,看看感觉如何。

    到目前为止,我们的矩形已经有了重力施加在上面了,它能根据跳跃键按下的长短来跳到不同的高度。不过这段时间长度是有着最大和最小值的,它决定了角色可能跳跃的高度的可能范围。尽管这样,跳跃的弧线看起来总是类似的,因为在跳跃作用力施加的过程中,只要游戏侦测到跳跃键没有按下了,它会人为地把该值设成一个很低的值。这个值是永远不会改变的,因此每一次跳跃的结尾都几乎是同样的弧线。当这个弧线完成时,系统会人为地加上一个很高的重力值来把矩形快速地拉回到地面,缩短了玩家觉得失去角色控制的时间,并提升角色的重量感,让整个感觉更接近于现实世界中的重力感(虽然角色老是像个跳蚤那样跳来跳去)。最后,矩形下落的速度还设了一个限制值,避免下落速度去到太高而让玩家觉得不自然。

    总的来说,马里奥在垂直移动上的感受由以下的重要因素决定:

   重力

   初始跳跃作用力

   跳跃键按下的最短时间

   跳跃键按下的最长时间

   跳跃减缓速度

   下落的重力值(大概是正常重力值的三倍)

   终极速度(最大下落速度)

    最后不得不提的是在垂直移动和水平移动间有着一个小小的交集。在《超级马里奥兄弟》里,假如你以正常行走速度更快的速度移动,此时桉下跳跃键会得到小小的跳跃加成。其初始的跳跃作用力会稍微高一点,于是总的跳跃高度也会稍微提升一点。当你处于跑步的最大速度和一般的行走最大速度间时,你能得到一点点额外的跳跃速度。当从静止状态下跳跃时,你只能到达不到5个格子的高度。假如你从跑步(按着B键)开始再跳起来,你能超出并落到一个5个格子高的平台上。这种高度上的加成跟你移动起跳时的时间和速度都是无关的,高度加成只会是有或者没有,它只取决于你是否在超出最大行走速度后按下跳跃键。

碰撞和交互

    接下来要谈的是碰撞,马里奥的世界都是实心的。

    马里奥是一个矩形,大概是一个格子高。格子在2D游戏里是对各种物件的布局、位置和特征的一种很好的简化方法。你不需要为每个物件存储详细的位置信息,只需要做出一个网格,用简单的二元组来标示出它们的位置就可以了。通常来说(0, 0 )代表屏幕左上角的位置,该位置下方是(0, 1 ),其右方是(1, 0 ),以此类推。只要我们存下这样一张格子清单,我们就能轻松找出格子与格子间的关系了(如下图13.14)。当你做好这个清单后,只要标识出格子的类型(例如天空、砖块、水管等等),你就能知道马里奥是否应该穿过该格子了。

    接下来,要让马里奥和物件碰撞就需要先看他的速度。通过他的朝向和速度,我们能知道他下一帧会处于那个格子上。假如说他下一帧会去到一个不能穿越的地砖上,那系统会把它放到地砖上面,不让它穿过去(如下图13.15)。

13.15 马里奥此时不会穿过地砖,而是会放在地砖的上面。(略)

    这种做法能处理马里奥前一帧在空中,后一帧落到地面的情况。当你了解这点后,你会知道马里奥在落下后会再次落回地面。这就是简单碰撞的处理方法。我们在这里没有深入到很多不必要的细节里,所以像这样基于格子的简单碰撞系统在感觉上是很光滑的世界。由于现在没有任何对摩擦力的模拟,没有任何会让马里奧再次减缓下来的削弱力作用到他滑过的材质上,整个感觉就像一条肥皂滑过湿地砖那样。他不会被停住或者卡在哪里,整体感受是很松弛的。在马里奥这个例子里,这是它很重要的一种吸引力。当然,情况也不总是这样。要把一辆汽车或者自行车的甩弯动作做得让人满意,首先你需要模拟出车胎和地面间的摩擦力。但马里奥本质上是没有摩擦力的。当贴着一堵砖墙跳跃时并不会减慢他的跳跃力,他是能自由地滑过任何东西的。

    于是现在我们有着一个能滑过整个环境的矩形了,它永远不会被挡住,而且总是让人感觉是实心的。只有当马里奥遇上一些少见的弹簧跳台时才能感觉出这些跳台是有着一定弹性的。游戏世界里剩下的物件看上去都像是装潢过的大理石那样,而马里奧本身也显得是坚硬光滑的。

    接下来矩形在接触到表面时必须要做的一件事是在每一帧把Y轴上的速度设为0。正如前面提过的,即使当马里奥已经和地表接触时,重力也会在每一换产生作用。在每一帧里,碰撞程序会把角色放回地砖上方,同时Y轴上的速度也设回0。当角色落下时,重力会让Y轴上的速度设成一个很高的值(下落重力值)来把矩形往下拽。假如当矩形接触砖块时不设为0,那就会不断存下了极大的作用力,感觉是很奇怪的。虽然碰撞程序还是会把矩形拉到地表外面,但当你走下悬崖时,你会因为这个极大的负向速度突然间被拉到底。感觉真的很奇怪。相反,只要当落到地面时就把Y轴速度设为0,那当你再次下落时,重力才会逐渐且合适地把你拉到地面。

    另一种反过来的情况(当角色跳起来撞到上方的砖块时)也是需要把Y轴速度设为0的。假如你撞到天花板而Y轴速度没有着成0,那你会一直粘在天花板上(就好像《超级魂斗罗》那样)。此时马里奥在每一帧还会继续尝试往上。虽然碰撞程序会阻挡它穿过砖块,但它对矩形的向上速度是没有影响的。要让整个感觉对头起来,你必须在检测到碰撞时就把角色的Y轴速度设为0,无论这个碰撞是在上方还是下方。

    在初代马里奥里另一点需要注意的是从敌人的背上弹开是没有高度加成的。当你踩到乌龟的背时,它会把你设成像是在最短时间内松开跳跃键的状态那样。从乌龟或者蘑菇怪身上反弹只会看到一个小小的跳跃,这个跳跃就好像最小跳跃那样。这一点在后续的游戏里修改了(例如《超级马里奥世界》),当你从敌人背上弹开时一直按着跳跃键会给你极大的跳跃加成,加成后的跳跃比常规跳跃要高得多。

    在这一版的游戏里,唯一能给马里奥跳跃高度加成的是弹簧跳台。不过你必须在合适的时间上起跳。但这是很难的,因为完成这个操作的时机是极短的。在后面的续作里只要一直按着跳跃键来踩到敌人和跳台上就能得到额外加成了,对我来说这种做法感觉是更好的。

    要包裹住整个马里奥的角色,有一点是特别需要注意的。当吃了一个蘑菇后角色会变大,此时你由于太高所以不能在一个砖块高的平台下走动了,不过你可以在下面滑过去。如果你是小个子版,那完全可以跑过去,但假如变成了大个子马里奥,那你必须蹲下滑过去。这里正是游戏必须处理的了:假如你滑到一半停止会怎么样呢?在一些游戏里你是不能停下来的,你被迫要保持这种低头滑铲的状态。但在马里奥里你是可以站起来的,这会让你进入到一个奇怪独特的状态里,此时你既不能移动,也不能干别的事(甚至不能蹲下滑铲)。这促使你输入被完全锁定了,直到不受任何碰撞影响为止。可能这是马里奥一个临时的做法,但在我看来它就是一个马里奥里会发生的奇怪情况了。

    最后我们来看看摄像机的移动,它是作为一个次要的间接控制的角色存在的。显然,马里奥的游戏感是和摄像机的运动紧密相关的,假如摄像机没有跟着角色合理地运动,那游戏感觉还是不对的。首先,游戏的摄像机是只会向右移动的。一旦它向右移动后,它就无法再向左回去了。这对我来说感觉是挺郁闷的,我不清楚这是基于技术上还是设计上的决定。无论是哪种原因,这种做法使得屏幕不断推移,促使玩家只能不断向前运动。当玩家跑到左边时,摄像机会毅然不动,这让人感觉很唐突、很打断、很坚决。而当玩家走到右边时,屏幕会跟着角色以同样的速度滚动。对摄像机感觉最重要的一个小细节是屏幕左边25%的这个小区域。在这个区域里,屏幕的滚动速度是下降的。而且这个滚动效果也是逐渐增加的(虽然做得很粗),当角色从静止加速时,摄像机也会加快速度(如下图13.16)。

13.16 马里奥里的摄像机滚动区域。(略)

    这就是全部了!它们正是做出马里奥游戏感的所有的拟机制——有着一大堆该死的累人的细节。让我吃惊的是这里有太多决策和细节是凭直觉和经验的,而不是靠方法和计划。诸如在跳跃键早松开时把Y轴速度手动设为一个很低的值,或者是把把正常重力值设为3倍以上,这些看起来都是和预期结果相反的。为什么这些特殊的改变会让游戏感变得更好呢?我会尝试在“游戏感的原理”一章里试着从更普遍的层面去解答这些问题。但在现在来看,我推荐你先摆弄一下这个最终合成好的小程序,真正深入进去,改变一些参数看看。

    在本章最后,我会列出《超级马里奥世界》和《超级马里奥兄弟2》调整了哪些东西的。看看你能不能在自己调整这些参数的过程中猜中这些续作的调整。

状态

    假如你想完全重构出马里奥的感受,那状态就是这个感受里最后一块拼图了。我所说的状态是游戏用于响应输入的一套特别的指令。当游戏有着多于一种状态时,这意味着同一种输入根据输入时角色正在做的事情,有可能在游戏里产生不同的响应。在马里奥里最简单的例子是当你在跃状态和跑步状态时,两者的水平加速度是不同的。在跑步状态下,加速度是一个很高的值,让马里奥从静止飞快地加速起来。然而在空中状态下,该值会急剧下降。这种在状态上的改变能有效地把同一种输入映射成多种响应。只要玩家有办法能从概念上理解到状态的改变(例如马里奥从地面跳到空中),那特定的输入也跟着改变是不难理解也不相矛盾的。事实上这种做法带来了更多的表现可能性。在《超级马里奥兄弟》里的状态包括静止、走路、跑步、跳跃、卡住和死亡(如下图13.17)。

13.17 马里奥里的状态——卡住和死亡是特殊情况。(略)

    准确来说,这就是马里奥底层各种元素的组织方式了。基本上就是这样。只要保持着这些关系,其实现细节多多少少都是没关系的,但按这样的方式来构建元素确实更容易能得到你想要的感受。

环境

    如今我们的矩形已经能欢快地四处滑动了。无论四处跳四处跑还是改变方向也让人感觉很棒了。确实是这样吗?嗯,或许是。让我们回到CH13-1的例子里再跑跑。你注意到哪里奇怪了吗?确实在整个关卡里是什么都没有的。这是一个无尽的空白区域。如今是时候为它加上环境背景了。

    在《超级马里奥兄弟》里大量使用了一个关卡设计技巧,这个技巧也从这个游戏里发源起来了,它叫做“幸运眷顾大胆的人”的方法。从关卡设计本身来看,假如你全速往右跑并根据环境能快速调整应变,这能让整个游戏变得更轻松。各个关卡(特别是在很多后期关卡里)的设计都是鼓励这种公牛般的狂冲玩法的。这也是游戏里关卡布局的方式:当玩家以可能的最大速度移动时,游戏里的跳台和障碍会显得更容易越过。由于一旦机制完成后,速度是很容易预测的,于是也能设计出匹配的关卡

    从我看来这就是游戏在整体上期望的体验。甚至是摄像机角色的行为看来也是鼓励这种玩法的,它会不断封堵玩家身后的退路。游戏就好像对你说:你无法回头,所以尽可能快地往前冲吧。

    在《超级马里奥兄弟》里物件摆放的大体规则是离地4格子高。要准确重塑出马里奥的感觉你需要用这种方式来做出一个关卡。由于角色能跳过接近5格子高的跳台,所以跳上一个4格子高的物件会更容易,并且角色是刚好能经历完后半的一小段弧线才落到跳台上的。把跳台做得略低于角色跳跃的最大高度会感觉更好。

可玩的实例

    要体验这点,你可以在CH13-1里把平台放到不同的高度。你可以跳上各种高度的平台看看感觉如何。你会留意到4格子高的平台的跳跃感是最好的。它是正好合适的永恒参考。

    马里奥机制里相对不用很精确的操作让玩家在水平和垂直方向上有着更多容错的

    空间。其中一种做法是让大部分跳台的高度都在离地4格子高。另一种做法是在水平上延长游戏里所有的跳台。现在你可以在CH13-1的例子里试试把地表的一些地砖去掉,看看当你前方是一个只有1格子宽的跳台时会是什么样的情况。这种无需精准的设计再次能看出游戏的整体目标是让玩家一直全速往右跑的。小型单格的跳台是鼓励玩家更缓慢地前进,因为每一次都是小心谨慎以后才跳出去的。

    在环境背景中,另一个影响到玩家对矩形的操作的是敌人在游戏里的移动。这是我们在关卡设计里常常没有考虑到的,但带AI角色的运动的确对机制的感受带来很大的影响。它们的运动会占据了屏幕空间中的某些区域,改变了玩家对空间拓扑的看法。对于一个2格子宽的坑槽,如果下面有着只乌龟走来走去,那这个坑槽马上会变成是一个致命的陷阱。类似地,假如楼梯上方的平台有着一只乌龟,那跳上这个平台的交互感会完全不同。更让人吃惊的例子是第一关的第10幕,这关里站在云上的家伙会不断丟出红色带刺的乌龟。这一关基本上都是平的,也不需要一些技巧性的跳跃操作,但整关给人的感觉是很焦急很不公平的,因为不断会有敌人像下雨般从高处落下来。

    敌人无疑是以马里奥最大行走速度同等的速度来移动的。所以只要你不跑起来,你能和敌人的移动速度同步。结果是你能在精准的时间里跳到一群敌人中间,暂时和它们一起走,然后再跳到其中一个上面来逃掉,而不会一下子丧生在怪堆里面。

    环境背景也界定了游戏中的挑战,这是和大多数依赖空间布局的游戏一样的。在后面的关卡里,跳跃需要更精准的操作了。而且你必须在很快速的过程中完成大量这样的精准跳跃。与此同时,这些关卡里也多了很多敌人。过去只有一个蘑菇怪,现在有三个排成一行,后面还跟着两只乌龟。如今还出现了像炸弹和乌龟那样的怪物,即使是从前那最简单的跳跃和运动也会改变意义了。通过增加敌入能构成关卡中的挑战,这可能看起来很明显,但以这种方式去仔细分析其实是很有趣的。游戏的所有关卡里几乎都有着一条最优路径,只要玩家全速奔跑,会让他毫发无损且不受干扰地穿过这片区域。整个游戏感觉就像是一场赛跑那样,而不是一个需要慢慢地有系统地探索的空间。

    要做到马里奥的感觉,你需要做一些离地4格子高的砖块,并且让它们在水平上延伸很长。地面上的坑的范围都在26砖块宽,当到6砖块以后就显得跳过去很有风险了。通过不断增加更多这些宽的高难度的跳跃点能把关卡难度提升。它们需要玩家在快速奔跑中带着冲力准确地跳过去。除此之外,后面的关卡也可以增加很多快速移动和移动方式难以预测的敌人。这些敌人通过自身运动来占据屏幕空间中的各个区域,让那些区域显得更不安全和更压抑。在最后的一些关卡里,没有哪个地方是安全的,看起来就好像要疯狂冲刺才能存活着到达终点那样。

    事实上,在8-18-2关里面有着很多1格子宽的砖块,也有着很多1格子宽的坑槽是你可以跑过去的。除此之外,很多坑槽会长到56格子宽,它们只有极少的容错空间。从技术上来说,马里奧在全速跑的情况下能跳过10个格子,但在游戏里几乎是从来没用到过,因为要做到这点太难了。

润色

    到目前为止,我们有着一大堆会移动和四处滑动的矩形了。要看看各种润色效果,我们要对角色进行表象处理。为了不侵犯到马里奥的版权,我做了一个“围巾大侠”来替代马里奥。

可玩的实例

    打开CH13-2的例子,看看用角色、砖块和敌人替代了原本的矩形后是怎么样的。

    首先是动画效果。角色是有着跑步循环的。当矩形开始运动后,视觉表象会覆盖在运动上面,播放出一系列的序列帧。这段动画很短,只是由很简单的序列帧组成,但不管怎样它也是一段动画,能向玩家传达出他们所操作的对象的特征。

    在马里奥的游戏感里,很关键的一部分是这些跑步动画的序列帧与动画底层的模拟运动是很完美地同步起来的。这一直是过去和现在都关注的点,即使放眼今天,很多游戏还是没能成功地把角色表现和底层机制真正准确地匹配起来。这是动画师常说的“滑步”,在视频游戏中是很常见的问题,因为视频游戏中的角色运动是难以预测的。

    马里奥虽然只有着原始的8位图像表现,但它真正把动画和角色运动的关系匹配得很好了,这是做得极棒的。它所传达出的感觉是这个在地面上跑来跑去的小家伙的每一步都是实实在在的,因为动画的速度和角色的移动速度完全匹配了起来。

    假如底层的模拟机制比动画运动得更快或者更慢,那很容易就能察觉到其中的差异了。这虽然只有着很细微的线索,但人类从来都很擅长观察这点。我们从小就不断练习去以这种可触摸可交互的手段去观察和应对身边的自然环境,所以只要有任何东西是不匹配的,它马上在我们眼中变得很明显。于是带来的关联结果是这个运动的表象和底层运动的对象实际上是分离的实体,这让玩家很难融入到游戏里,很难去相信游戏世界的真实性。由于你能看透帘子后的模拟机制,所以整个虚拟感有所削弱了。

    另一个重要的动画效果是马里奥在变换方向时所做的小小滑步。假如你在马里奧跑步过程中变换方向,他会举起手做出一个小小的滑行姿势。在《超级马里奧兄弟》的例子里,这不是一个单独播放的动画。而是在你往反方向作用加速度时,角色会慢下来。这是马里奥在模拟手法上做的另一个重要表现:它没有用一系列帧数来表现脚步停下来然后方向改变,而是通过加速度的自然作用力对当前速度不断减小,然后让马里奥停下来反转方向再慢慢往另一边加速。这段滑行动画当且仅当玩家按下的方向键是与角色当前前进方向反向时播放。所以潜在的机制并没有改变,但覆盖在其上的动画效果进一步强化并提升了玩家对模拟对象的物理感的感知。角色往一个方向奔跑时,玩家按下了反方向,角色进入滑行直到完成方向改变,然后角色再继续跑步动画(最初是以最低的速度,然后再渐渐提升速度)。换句话说,这段动画效果提升并加强了底层模拟机制的表现,而不是像《波斯王子》初代那样本末倒置。

    马里奥感受中另一个很关键的动画效果是砖块的摇晃。虽然看起来会觉得有点傻,但当你是小号版马里奥时,从下方顶到砖块会让砖块摇晃起来。它会以悦目的很卡通的方式在摇晃,同时增进了交互感。这并不影响到模拟机制,它不会移走了砖块,也不会永久改变砖块的位置,只是在上层加了一段动画效果,让角色显得有质量感。这种质量感尤其体现在大号版马里奥和小号版马里奥在撞砖块时的表现。小号版马里奥会让砖块看起来松动并摇晃起来,明显他是用力去撞的。而当你变大版,你会把砖块撞得粉碎,这显得大号版马里奧是更有质量感的。这让你了解到小号版马里奥只能摇松砖块,而大号版马里奥能有着把它撞碎的威力,让砖块碎片像雨一样落下。

可玩的实例

    打开实例CH13-2里的润色效果,看看这些效果是如何展现出游戏世界的物理感和可塑感的,从而看看它们如何改变了游戏感。

视觉效果

    正如我们前面所说到的,马里奥里有着很多视觉效果。NES只有着很少的处理机能可以利用,因此不可能在四处都用上粒子特效来表现每一种交互。近年来马里奥糸列的趋势是加入越来越多的视觉效果——在最近的《超级马里奥兄弟》和《马里奥银河》里就有着极大量的粒子一直从各处飞射出来了。但在初代马里奥里,所有元素看起来都是干净光滑的。在马里奥改变方向进入滑行姿势时也看不到大团的尘土或者烟雾冒出来。看起来就好像每一个平面都是光滑无损的,没有一点尘土沙砾。唯一的视觉效果是当砖块被撞碎时碎开的砖片四处飞开的效果。不过光靠这点你也能了解到如果视觉效果被移除后会怎么样。假如砖块被撞碎后只是马上消失,那感觉会差很多的。移除了这种效果就等同于移除了一种稀有而高度重要的线索,玩家就无法获得其中的物理特征了。

声音效果

    马里奥里的声音效果是很重要的。在这个Demo里我为了避免侵犯到任天堂的著作权,把这些声音都换掉了,但也因此让我注意到它们的重要性。在马里奥跳跃时发出的上扬的滑笛声大致匹配了他向上飞时的高度改变,和整个运动是协调的,跟玩家一直按下跳跃键来做出更高跳跃的感觉也是一致的。

    游戏里只有一种碰撞声音,它会在马里奥头撞到砖块或者火球击中墙壁时发出,这个声音听起来就好像大型橡皮圈被拧在一起时。它会在音调上稍微变化来做出听觉上的差异,但其传达出的感觉是一个有趣的橡胶世界。这和小号版马里奧撞到砖块时的砖块摇晃是很搭配的,在总体上传达出一种摇晃不定的、充满弹性的运动感。这与光滑无阻力的碰撞体系传达出的感受是不一样的,但由于砖块的摇晃和它配合得很好,这让整个世界看起来更加生动,其物理感比原本该是一成不变的碰撞交互要显得更有趣夸张。

    撞碎砖块的声音是特别悦耳的——虽然受到NES声卡的限制,但这声音真正传达出石头碎落的感觉。

载体

    《超级马里奧兄弟》里的表象是很形象的,所以我们无法片面去看它所表现的载体表象是否和我们预期的结果的一致程度来分析。但我们还是顺着分析去看看从中能看出什么。

    首先让我们来把马里奥的处理手法在写实、形象和抽象这个三角网里找到一个定

    位。明显马里奧是不写实的。其处理手法是很靠近形象的一边的,也开始有着接近纯抽象。它是梦幻和超现实的。例如说什么是磨菇怪?它表现的是什么生物?马里奥里的乌龟看起来是很像乌龟,但明显它不是为了传达其乌龟的特征。这些乌龟的移动是很快的,是一种很危险的生物。总的来说,游戏里表现的生物和各种物件都不太基于其原本的含义和现实情况。它们的含义是由它们在游戏里的功能传达的,为的是表现出危险感,占据游戏空间中的各种区域。然而它们也不是纯抽象的形体曲线。它们确实对应着某种生物,并且是遵循于自身那奇怪的物理感和行为法则的。它们只是更倾向于超现实。这些对象所包含的意义远远没有其在游戏中扮演的功能来得重要。

    那它们对我们设立的预期产生了什么样的影响呢?事实上我们并没有任何基础去预测各种事物该有着怎么样的行为。我们不会有任何预期是因为马里奥就已经超出我们的预期了,他矮小肥胖却能跳到管子上或者比他高出很多的墙上。由于游戏里的处理手法都是超现实的,我们无法基于这种表象去预期。他并不是对一个水管工做的照片级的重现。他也不像水管工那样去清洁淋浴里的污垢。我们完全能接受他像个跳蚤那样跳来跳去。

    马里奧通过抽象和超现实来把物理交互和运动表现得很好。他能靠自己获得巨大的上冲力,像个跳蚤那样—下子飞到空中,不需要借助风势,也不需要助跑,也没有任何竹竿给他撑杆跳。这是很有表现力的,但和我们自身所处的现实世界却没有任何的关联。

    但由于无论是载体还是处理手法都是超现实的缘故,这样做是完全没问题的。各种对象那抽象和超现实的运动让它们在功能和感受上都不显得奇怪。即使是对象间的交互也像是一块冰滑过体育馆的地板那样,由于这种如梦似幻般的载体和低质的处理手法而显得恰到好处。因为载体设立了很少的期望值,所以什么事情都可能发生。

    马里奧真正有设立下玩家的期望的唯一一处是它用了人形角色来表现各种状态。由于马里奥看起来明显是一个人,我们看到他能分辨出“嗯,现在他在地面上”以及“哦!他已经跳到空中了!”。当他在地面上跑步时,玩家明显看得出这与他飞到空中或者游在水里是不同的,也很容易接受当他飞到空中时失去控制的设定,因为玩家明显能感觉到这是进入了另一种状态。反过来,假如在空中还能控制才是奇怪的,因为这和现实世界中的运作完全不同,所以说即使表象是超现实,但这种视觉上的线索能有效地传达出状态的变化,并维持着一定的逻辑关联。对马里奥这个形象的人形角色,你能确切分辨出他在空中和地面上的两种状态。这是在状态改变上铺盖得很好的视觉载体。它利用马里奥看上去像是人类的特征来关联上各种状态的逻辑性,表现出各种状态的功能。

规则

    从最低的层级来看,敌人的交互的确存在着一些很有趣的规则,这些规则让玩家了解到马里奥和他所处的世界的物理特征,从而最终改变了玩家对与之交互的世界的感受。例如磨菇怪是比乌龟要更弱和没那么坚固的。你只要踩一下就能杀死磨菇怪并让它从视野里消失了。乌龟在踩一下后虽然能被杀死,但还会留下个龟壳。这个留下的龟壳看上去正是展现了乌龟比磨菇怪有着更坚实的身体。龟壳也是不能轻易靠踩一下就能破坏的。同是这个外观,带翅膀的乌龟看上去就比那些不带翅膀的要更强大和更有重量了。你必须踩它们两下才行:一下把它们的翅膀弄掉(显然它们的翅膀还粘得不牢),另一下把它们从龟壳里弄出来。从磨菇怪到乌龟,再到带翅膀的乌龟,我们能看出在各种生物间还有着从弱到强的体系。库巴是游戏里最强大的生物,他不能被踩死,你必须让他掉到岩浆里。

    所有这些交互形式还让我们了解到另一点:马里奥本身是很有重量的。这些生物和他都有着一样的大小,但他只靠踩一下就能让它们致死。有人因此开玩笑说他家里肯定没有蟑螂的。

    从中层规则来看,三种提升道具对空间的拓扑结构带来了即时的影响。当你看到它们时就会想要,这是因为它们传达出自身的好处。于是你会专注于去收集星星、吃蘑菇和火焰花。你会尽一切所能地去获得这些道具。当然,除非你已经变大且吃了火焰花了,这时蘑菇和火焰花对你都变得毫无意义,完全可以无视了。这些都是暂时性的效果,但每一种都显著地改变了游戏感。从小变大后,你能撞碎砖块,你会没那么怕敌人,因为一旦它们撞到你以后,你最多只是变回小号版而已。火焰花能让你边跑边杀敌,无需踩到敌人就能把它们杀死了。由于你不再害怕大多数的敌人,游戏的整个感受和流程也因此改变。它们此时不再占据着空间中的某些区域了,游戏突然间也显得更开放。星星是终极的临时提升道具,它能让你从容不迫地跑过敌人。在有了星星后,游戏的挑战瞬间减少到只剩下跳跃上的挑战了。整个感受变得更开放更自由。

    最后,从最高层的长期的规则来看,命的奖励和金币无疑是首当其冲的规则。游戏里的分数基本上是关系不大的,这只是沿用早期街机游戏的设定而已。我从来都不会注意到这个分数,也不会尝试去打破自己的分数记录。然而多一条命是我很感兴趣的。《超级马里奧兄弟》是一个很难的游戏,在一开始你只有3条命,这让你只有很少的容错空间。然而当看到一个奖命磨菇时,我会非常兴奋,马上会集中所有的注意力去尝试拿到它。但这种欲望的诱使也伴随着清醒存在,我清楚知道如果在尝试中死掉了,那是徒劳无功的。游戏里的奖励是完全和风险成正比的。感觉就好像走在鸡蛋壳上。就规则来说,命是最宝贵的,也很稀少,看起来就像是游戏里最高的奖励那样,于是我会愿意承担巨额的风险来得到它。

    金币是一种较低层的奖励。由于收集100个金币能让你得到一条命的巨额奖励,在你收集过程中还是会觉得它很有趣的。虽然有用,但也很平淡。它不像快速移动的奖命磨菇那样带来极大的兴奋点。你可能会花精力去拿一枚金币,但不会冒着死掉的风险去拿。

    所以为了做出有着马里奥游戏感的游戏,其载体要是超现实的。你不用非得做一个意大利水管工去跑来跑去地应付一些抽象怪物,但假如把他放到纽约闹市区的街角里就显得太过了。同样地,照片级的处理手法也会破坏了交互和运动中的超现实感。要得到马里奥的感受,处理手法必须是介于形象和抽象间的。再特别一提的是它不必非得是马里奥。正如Demo中看到的,围巾大侠也可以做得很棒。

总结

    我敢打赌你从来没像这样去看过马里奥,是吧?我们该从中追求的不是这种深入的分析,而是从中能学去的游戏感。你能看到,即使是像《超级马里奧兄弟》这样简单的游戏也是有着多得让人讨厌的复杂性的。所有这些细小的决策融合在一起组成了马里奧那让人大吃一惊的感受。特别是在模拟机制和输入响应这两块上有着数量惊人的细微却又重要的决定。这样的分析让我们在日后能更清楚地了解到一些设计细节,例如游戏跟踪加速度和速度,与游戏直接更新位置,这两种做法在游戏感上有着何种差别。

    到目前为止,你应该很清楚细节的深度能造就出一个感受优良的游戏了。假如你现在正是从零开始制作一个游戏,那你必须警醒这点。让自己时刻带着提升游戏感的目标,不断考虑系统中各部分调整的可能性。正如马里奥所证实的,相比于更学院派的方法论作风,即使是一些很古怪的调整(例如在跳跃过程的中间人为把速度设成很低的值)也能让感受变得更棒。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值