游戏世界的物理学—《超级马里奥兄弟》滑行与跳跃的实现

2015-12-23
本帖最后由 小篱 于 2015-12-23 15:22 编辑


GameRes游资网授权发布 有玩家发现在《超级马里奥兄弟》里,有一种“脚底抹油”的效果,放下按键后没有立马停下,还要前进一段路。有人认为这是为了提高关卡的难度。真的是这样的吗?

作为一个开发过平台游戏,也尝试过自己实现平台游戏的马里奥玩家,我说一下我的回答——这是平台游戏多年尝试和发展的结果。

首先说明一下什么是“脚底抹油”。其实换一个说法就是横向移动时的“惯性”。就像现实世界一样,汽车刹车后不会马上停下,而是要再前行一段。马里奥这样做,是为了让游戏体验更符合我们日常的认知。至于为什么会觉得脚下像是踩了香蕉皮一样,那是因为马里奥的世界里,阻力要小于我们的预期(以人类跑步为参考标准),简单说就是策划把惯性调大了。


然而平台游戏并不是一开始就是像马里奥这样带惯性的。早期游戏,如雅达利的大部分游戏中,人物移动是没有惯性的。原因很简单,在低K游戏里,不带惯性的移动在实现上要比带惯性的简单很多,降低运算负担。不带惯性的移动是什么体验?你玩一下《影子传说》就知道了。是不是现在觉得这个人物移动像在异次元一样?

影子传说

随着游戏主机性能的提高,玩家和设计者对人物移动的拟真需求越来越强烈,所以开发者开始增加惯性的概念。这基本能解答题主的问题——这是自然选择的过程。游戏是一种人类学习生存技能的过程,于是人类希望游戏展现的内容符合自己对世界的认知。于是移动中的惯性进入了游戏。只是在之后不同的游戏中,“惯性”的大小不同,产生的游戏效果也截然不同。但无论如何,现在已经很少能见到玩家一放开按键就立刻停下的游戏了(JRPG里还有),只是有的踩皮鞋,有的踩香蕉皮。马里奥属于踩滑板鞋的,似魔鬼的步伐。

再具体解释一下马里奥中移动的实现。真实情况不是所说的,横向移动不完全符合牛顿经典力学的(跳跃是完全不符合,稍后说)。程序在实现这个游戏功能的时候,最通常的做法会设置几个参数——速度、加速度、减速度(阻力)、最大速度。每个参数还分成纵向、横向两个维度四个方向(以2D游戏为例)。

当玩家点击横向移动按键的时候,相当于对角色产生了一个横向方向上的力,于是角色开始移动。只要玩家一直按着,这个力就是持续获得的。但和经典力学不同的是,游戏中会有最大速度。当速度超过最大速度就不再增加,即使玩家还按着移动键,移动速度也不会再增加。因为玩家不希望自己的角色最后像屁股安了火箭一样。

当玩家松开按键时,这个力就消失了。这时一股神秘的、和移动方向相反的力出现了,产生了减速度。这也是和现实世界不同的一点——减速度只在角色停止移动的时候有效(大部分平台游戏就是这样做的,参数填起来直观)。和加速一样,当角色速度变为0(实际上判断标准是小于等于0),这股神秘力量也消失了。于是角色就停了下来。

这就是“脚底抹油”的实现方法,和物理书上还是有点区别的。

最后扯一下跳跃的实现

跳跃是平台游戏的核心。可以这么说,一个平台游戏好不好,首先就看跳做的如何。这一点上,马里奥可谓登峰造极。其调试打磨的水平之高,对得起百年老店的旗号。

和横向移动类似,当玩家按跳的按键时,会向上产生一个力。不同的是,重力始终是存在的,而不像横向移动的阻力那样时有时无。为什么说跳跃是完全不符合现实世界的规律,是因为角色在半空的时候,仍然能够获得向上的力,就像火箭一样。这样做的结果就是,玩家按键的时间越长,角色跳得就越高。当然有的游戏只在玩家按下按键的那一刻给一个力,这样做无论按多久,角色都只会跳一样的高度——请远离这样的平台游戏,因为说明制作者很业余。但是跳跃会多一个参数——有效时间,当玩家按键的时间超过这个有效时间,角色就会失去向上的力,开始往下掉。当角色掉到平台上的时候,就停了下来。


这样,一个平台游戏的基础操作部分就完成了。看起来并不难,但第一次做的时候,还是颇费周折的。如果有兴趣,大家都可以尝试做一做,会对马里奥的制作者肃然起敬。

相关阅读:

场景互动式新手指引设计(一)从马里奥迈出的每一步

从马里奥谈场景互动式新手指引(二):机制设置
最新评论
暂无评论
参与评论

商务合作 查看更多

编辑推荐 查看更多