授权声明
本文最初发表于Yop的知乎专栏笔记:游戏设计。感谢他给予 indienova 转载授权!
地图块格子大小
重要程度 ☆☆☆☆
2D 的横版游戏有很多都是用地图格子拼成的。
作为一款横版过关游戏,地图格子是基础中的基础,格子的尺寸会直接影响游戏的视觉呈现、物理设定以及关卡设计。
我个人是希望角色在画面上的尺寸尽量地大的,这样让游戏从视觉上看起来更简单一些,偏窄的视野也可以隐藏更多的内容,方便做关卡设计(因为游戏是探索解密向)。一开始设定格子尺寸是 84*84 的,不过很快我们就做出了第一次修改。
第一次修改是因为我们确定了跳跃高度为 3 格。如果跳跃高度为 3 格,那么屏幕的显示高度就应该为 7 格以上,否则一旦角色跳跃到平台上,他的后方会看起来像个悬崖(因为镜头跟随而看不到地面),或者无法看到上方的平台。
这一次修改把格子尺寸缩小至 76*76,在 640 像素高度的屏幕上可以显示 8 个格子。
第二次修改是因为美术改动。新的美术风格极大地弱化了背景的景观,从卡通风格替换成了极简风格,为了让地形看起来更丰富一些,主美提出了缩小格子尺寸的要求。
缩小格子一方面可以让游戏视野更佳,另一个重要的作用是可以让游戏的视觉中心(主角)下移一些(保持下方 3.5 格的视野,则空中有了更多的空间),增加画面的稳定感。
这个时候缩小格子已经没有画面太复杂的顾虑,但它有个隐藏的问题——性能问题。在 76 * 76 的尺寸下,游戏需要处理的格子数量为 8*15 ,120 个格子,而在 50*50 的尺寸下,游戏需要处理的格子数量为 13 * 23 ,299 个格子,性能损耗直接超过 200%。
在多次测试之后,最后把格子尺寸缩小为 64*64,视野面积为 180 个格子,增加的性能风险最后决定通过简化背景特效和关卡设计来控制。
行走和跳跃
重要程度 ☆☆☆☆☆
我们对游戏手感的调整最主要是体现在了对角色的行走和跳跃的控制。
当我们兴高采烈地拿第一版 demo 给团队里的人试玩的时候,我们得到的反馈是让人沮丧,不,是十分让人沮丧的。我们站在试玩者的身边,看着他们战战兢兢地操作着我们可爱的主角,嘴里一边咒骂着,一边给我们演出游戏的花样死法——来不及跳跃、走到悬崖边缘滑下去了、尾随怪物的时候被怪物伤害、跳上狭窄的地面滑下来、踩怪物的时候被反伤... 不到一个小时,工作室内便再也没人愿意尝试这个 demo 了。
紧接的两周时间,我们把重心放在了优化操作方面。
我们在屏幕上绘制了角色跳跃时候的轨迹,寻求获得一个看起来“舒服”又比较符合客观规律的曲线,我们给跳跃的第一帧加上了下蹲的动画,通过调整参数和算法让角色腾空时间尽量地延长,而又不至于让人感觉漂浮。在这两周时间里,几乎每两天就换一种算法做测试。
《猫》在游戏里做了大小跳的设计,这给获取优雅的跳跃轨迹这个目标增加了难度。
因为程序在玩家起跳的瞬间是无法判断角色是大跳还是小跳的,所以大小跳在前面零点几秒是共用的同一个跳跃轨迹,因此大跳是无法拥有完美的跳跃曲线的。此外共用的长度部分又关系到玩家进行大小跳是否会产生误操作。可以说大小跳机制是整个游戏基础机制里面最让人纠结的事情。
最终结果是我们把时间阈值设置成 0.15 秒,小于 0.15 秒松开手指是小跳,长按是大跳。跳跃的感觉大概是:快速地点击屏幕小跳,一直按着或者用力按压是大跳。在行走方面,也把角色的行走惯性控制在了玩家几乎无法察觉的程度。
尽管对这块进行了大量的优化,但是目前效果还不够让我们足够满意。就观测结果来说,还是有成年玩家因为跑酷之类的游戏养成了二段跳的习惯,在操作上需要一段适应期。有趣的是儿童玩家反而可以很快地习惯这种传统操作。
目前我们在修改教程,让玩家以更直观的方式学习这种操作方式,如果观测结果再不佳的话,下一代作品就会考虑同时兼容二段跳操作了。
与怪物们的"亲密接触"
重要程度 ☆☆☆☆
一开始我们是按我们理解的物理常识来设计游戏角色与怪物的碰撞的。角色与怪物分别有一个碰撞范围,当角色跳跃起来,并且触碰到怪物上方的时候,程序认为角色踩中怪物了,然后让怪物受到伤害。这里包含了三个规则:
- 主角跳起来了
- 主角碰到了怪物
- 主角的脚在怪物的上半身
在实际操作里面,我们发现这个看起来很正常的规则实际上却对手机玩家很不友好,可观察到的现象有以下几种:
- 如果怪物的碰撞范围跟图片一致,很多玩家在靠近怪物并且受到伤害的时候,会认为莫名其妙,因为他们认为跟怪物轻微的接触不至于会造成伤害
- 很多玩家会在怪物十分接近的时候才慌忙起跳,这样会出现玩家明明按了起跳操作,但由于跳跃高度不够,导致判定为“没踩到”怪,导致造成伤害
- 由于对跳跃距离的把握不够准确,在角色下落到比较低的位置的时候碰触到怪物,同样由于高度不够,导致造成伤害
这就是典型的手感不好 —— 玩家对操作产生了预期,而反馈结果却让玩家期待落空了。
分析上面的场景,可以知道问题主要由两个因素造成,一个是玩家对怪物的碰撞范围预估不够准确(特别是玩家跳跃的时候),另一个是玩家对“踩中”这件事情并不是根据最终画面呈现来判断的,而是根据自身操作来判断的(角色起跳了,怪物不会跳,所以角色就是踩中怪物了)。
最终我们把判定条件放宽了,修改为:
- 主角碰到了怪物
- 主角拥有一个向下的速度
- 缩小了怪物的碰撞范围
这样,玩家最终可以在游戏里放心大胆地享受跳跃了。
这次优化很重要,它正确地又隐晦地降低了游戏的难度,在操作上更加符合移动设备上休闲玩家对横版动作游戏的期许。
低成本设计
重要程度 ☆☆☆
除了游戏交互设计的好坏之外,还有很多游戏以外的东西会让我们十分纠结。比如成本问题。
一开始我们设定是角色吃了技能之后,会变身。就跟马里奥吃了花之后会变成非洲人一样。
然而,我们决定游戏内必须要做各种角色给玩家换着玩。
10 个角色,4 个技能,每个技能如果都要有变身效果的话,意味着我们需要制作 40 套角色设计和动画。
为了降低工作量我们开始寻求获得技能之后不需要变身的解决方案。最后尝试了给角色设计一个技能精灵跟随在角色后面,把技能跟角色本身独立出来了——所有的角色共用 4 个技能精灵,设计再多的角色也不怕了!
技能精灵是动态地跟随在主角身后的,我们也为这个效果设计了几种算法,带阻尼的,不带阻尼的,跟随速度和动画特效,最终挑选了一种比较满意的方案。
帮助玩家
重要程度 ☆☆☆
由于手机用户大部分都是休闲游戏玩家,其中很多人都没有玩过《超级玛丽》这样的游戏。我们希望《猫》可以被更多的手机玩家喜爱,因此除了降低游戏难度,简化操作之外,还在游戏内设计了一些辅助玩家进行游戏的设计。
道路方向的提示
其实在幻影猫demo 中就已经有交互式的指路牌设计,角色撞击砖块之后,砖块中会出现一个大手指,指向游戏方向或者指向收集物。但是在 demo 测试中发现,普通用户比我们想象中更加容易迷失在关卡中,尤其在《猫》的视野范围比较小,同时上下的探索范围也比较大的情况下。用户需要无时无刻地被提醒他们在哪,他们应该往哪,因此我们决定放弃交互式路标,而直接在地图上把关卡的路线给标示出来。
路标还可以用来指示安全区域。当玩家在看不到地面的情况下,有箭头指示的区域就是玩家不会受伤的区域,这一点也弥补了视野和镜头方面的不足。地图上的路标有时候也给隐藏区域提供了暗示,这样在某些关卡里面,我们也可以把收集物藏得更隐晦一些了。
危险区域的提示
游戏中的危险区域我们都加上了红线标记以提示玩家这些地形可能会给角色造成伤害。如果玩家在游戏中后期遇到没有红线标记的悬崖,那这个悬崖很有可能是可以跳下去的隐藏道路。这些地图标识的隐喻完成了玩家与设计师之间的一种交流。
地图文字提示
我们在设计地图的时候,在地图放置了各种各样的留言。当角色走到指定地方的时候,画面上就会闪现这些由设计师们留下的文字。这些文字所表达的信息十分广泛,它有可能告诉玩家一个新的元素,有可能隐晦地指示了隐藏宝藏的方向,还有可能只是一句装逼的话语。
总之,我们一方面为玩家制造各种各样的困难的谜题,一方面又尝试用各种方式来跟玩家站在同一战线,帮助他们顺畅地享受游戏的乐趣。大概游戏开发者都是这样一群奇怪的充满矛盾的种族吧(笑)。
差点被淘汰的设计
在开发过程中,也有出现设计好的元素因为呈现效果不好所以最后被取消了的情况。目前线上版本就有好几个在各种纠结中差点被淘汰的设计。
大炮机器
重要程度 ☆☆☆☆
在线上的版本里面,大炮机器人是个友好的生物,角色可以跳进机器人里,然后以很高的速度弹射出来,可以跳到很高的地方。
我们在最初的设计里就加入了这个可以二次交互的怪物了,然而在一开始的设计里,这个怪物是跟普通怪物一样,玩家如果不小心碰到它会受伤害,而且需要踩踏两次(第一次踩踏怪物变形成大炮,第二次踩踏进入大炮)加上一次发射操作,一共需要三次操作。在一些关卡里面,玩家必须得利用它才能往前进行,这就让玩家不得不进行危险的交互了,而且在操作失败的情况下,玩家每次重试需要三次操作,成本也比较高。在测试过程中,也可以看到一些玩家在使用大炮的时候产生厌烦情绪。为此我们简化了操作,在踩踏的同时直接进入大炮,并且因为这个缘由,我们决定给幻影世界增加一个机器人的设定,机器人作为一种怪物,但是却不会对玩家造成任何伤害,这种设定在传统过关游戏里是很少见的。
弹簧
重要程度 ☆☆☆☆
弹簧并不是一个原创元素,它在很多游戏内都有出现,比如《索尼克》,《超级马里奥》都有弹簧的设计。虽然是个很常见的设计,但是弹簧在不同游戏中的规则是不一样的,比如《索尼克》里面弹簧是碰触之后就直接获得强力弹射效果的,而《马里奥》里面则需要玩家在弹簧蓄力的时候主动跳跃。
《猫》里面的弹簧则是参考了《马里奥》里面的规则(弹簧怪物则参考了《索尼克》的规则),我们认为让玩家主动跳跃更容易跟现实世界中的弹簧床联想起来,比较有交互感。
然而在实际开发过程中,还是遇到了让人很沮丧的场景(好的测试用户总是这么地让人绝望):玩家并不懂得什么才是合适的时机,他们会因为在错误的时机点击了跳跃而没有跳得更高而感到愤怒。
首先这不是一个设计问题。我相信《马里奥》在做这个设计的时候肯定是经过测试的,而且我个人在游戏过程中也没有感到有任何的异样感。这是一个简单的,符合玩家直觉的设计。经过分析之后,我们认为测试玩家的这种现象一方面是由于两个游戏的硬件设备的差异(《马里奥》是使用实体按钮的手柄进行游戏的),一方面是由于两个游戏面向的玩家群体的差异造成的。
我们在这个小元素上面纠结了超过一周的时间(断断续续),最后终于把这个元素优化到所有的测试用户都可以无障碍地使用。主要优化了几点内容:
- 把角色落地接触弹簧的时间延长到极限
- 在角色离开弹簧的短时间内,仍然允许玩家点击跳跃键做出强力弹跳动作
事实上,由于第二点实际上是违背物理法则的,因此出现这种情况的时候,比较敏感的玩家会察觉到些许的不自然感,这是个为大部分折中的方案。游戏上线至今,并没有任何人提到过这个地方有异样感。
加些隐藏元素就更好了。PS:《猫》里面的弹簧则是参考了《马里奥》里面的规则,综合一下,做点《猫里奥》的坑向元素如何?哈哈,开玩笑。
没想到背后做了这么多优化!