Facebook资深游戏开发者分享:游戏设计可如何减少玩家挫败感
合理调整交互容忍度
(映维网 2021年04月09日)Facebook Reality Labs的开发者关系工程师泰德·迪诺拉(Ted DiNola)专注于游戏编程和设计工作已有超过10年时间,而他目前主要的工作是通过与双向沟通公司和开发者,并帮助创造一个充满活力的开发者生态系统。日前,迪诺拉为开发者社区撰文介绍了用于减少玩家挫败感的设计建议。下面是映维网的具体整理:
我给开发者的最常见的反馈之一是:在交互方面要更加“慷慨”。来自PC、主机、甚至移动环境的开发工作室已经习惯于支持离散交互,且具有高精度和完全可见性界面的平台。
对于虚拟现实应用,用户拥有更大的空间和更广泛的位置来进行交互。这意味着精确度通常较低,尤其是对于较新用户而言。另外,交互可能发生在视场边缘,甚至视场之外。
实时应用中的交互慷慨性并不是一个新概念。我们的目标是为交互提供适当的范围和缓冲,从而提供一种“差不多就行”的实现。在更复杂的实现中,你可以预测玩家的意图,以避免执行期望之外的交互。
一个常见的例子:跳跃。任何玩过《波斯王子》的人都清楚成功跳跃所需要的精度。跳得太早,你就无法跳过去;跳得太迟,你就会掉下去。现代的平台游戏增加了一定的“容忍度”,在双脚蹬地起跳时提供额外数帧。这有助于补偿显示刷新时间,允许玩家“预测”跳跃。同时,以及抵消神经信号传播所需的时间。
有些游戏会更进一步,并根据情景考虑玩家的意图。如果玩家起跳过早,但其意图是跳到另一个平台,你可以稍微调整一下轨迹以确保玩家能够平稳落地。对于重点不是精确跳跃过程的游戏而言,这种行为尤其重要。
1. 增加容忍度
在虚拟现实中,用户可以在一个360度的空间里与臂展之内的对象进行交互,甚至是更远范围的对象。如果你的大多数交互发生在彼此相距很远的位置,你可以采取的第一步就是增加用户交互发生的区域。当用户尝试与不直接眼看的对象进行交互时,这一点尤其重要。你在用户左侧皮带挂着一个工具吗?不要仅仅因为手没有碰到就忽略任何交互。如果玩家手臂放下并且检测到抓取输入,就让玩家拿起工具。在某些情况下,这种类型的交互可以是纯指向性。如果对象在3D空间中,特别是如果它没有锚定到玩家,增加“选择用于交互”触发空间可以达到相同的效果。
请注意,尽管这同时适合基于距离的交互,但如果你添加了离散的固定交互视觉效果(如指针“激光束”),你会希望确保触发空间足够紧凑,因为精度已经提升。然而,如果你允许在远距离进行“灵活”选择,它可以具有与近场交互相同的好处。
2. “粘性”
假设有几个用户希望与之交互的对象,无论是近场还是远处,而它们都相对靠近。
重要的是要确保用户不会意外地偏离预期选择。为了实现这一点,你可以给用户当前的交互空间更多的“权重”,直到其清楚地选择了一个对象。所述对象将成为新的选定对象,并且权重要大于其他任何交互空间。只有在明显看出用户正尝试与另一个对象交互时才进行切换。
对于额外的打磨优化,你同时可以根据手或控制器的movement delta触发更改。如果选择了一个对象,并且delta看起来很小,请停留在选定的对象。若看到一个很大的delta,这可能是用户尝试选择其他内容,这时你可以减少应用的额外权重。
3. 玩家意图
我们可以通过尝试预测用户来进一步理解这种设计理念。其中,我们可以依赖于游戏状态。假设你开发了一款益智游戏,而用户需要在一个真实的数字键盘中输入密码。数字都是紧密地间隔在一起,所以可以使用上面描述的“粘性”来在每个数字之间切换。在玩家知道正确的密码之前,你没有办法知道玩家会按到什么按钮,所以考虑意图并不重要。
接下来,我们知道玩家翻查了在书桌抽屉里发现的黑板,或者纸上潦草写的密码。然后玩家会再次回到数字键盘。这时,因为我们知道玩家已经大概知晓密码,所以我们可以根据序列为按钮赋予额外的权重。按下第一个按钮后,我们可以增加第二个按钮的重量,然后增加第三个按钮的重量,依此类推,直到密码输入顺序完成。
4. 整合所有
假设我们有一款包含沉浸式交互的第一人称射游戏。库存需要手动管理,武器需要手动装载和准备。接下来,我们分析一下玩家的交互尝试及其结果,并将交互慷慨性应用于两秒钟的“开火并重新装弹”顺序中。如果没有交互慷慨性,这种常见的“开火和重新装弹”顺序对玩家来说可能非常困难和令人沮丧,尤其是在战斗非常紧张激烈的时候。在应用交互慷慨性后,玩家可以更成功地执行一次又一次的“开火和重新装弹”过程,并且可以将注意力集中在来袭的目标。
- 玩家需要瞄准并开枪。当没有交互慷慨性时,如果手在错误的位置或方向,瞄准可能非常困难,或者在一些实现中,优势手和非优势手会与武器脱离。你可以将两手之间的向量作为瞄准向量,在两者之间适当地对齐枪械,并允许一定的距离和旋转容忍度,从而尊重玩家握持武器的意图。如果非优势手没有对准但玩家扣动扳机,枪械依然可以以符合玩家预期的方式开火。
- 玩家需要将用过的弹壳从弹膛中取出。如果不给予一定的容忍度,这个操作很可能会因为拉动枪栓不充分或没有抓对而失效。对于这样一个快速的动作,只要足够接近,我们可以为玩家补偿并完成动作。更多的重量可以分配给枪栓,以避免玩家意外抓住枪械本身,或其表面上的任何其他控制。
- 玩家需要拿弹匣。当玩家把手伸向腰间拿弹匣时,如果手的位置实际上离手电筒更近,默认情况下会抓住手电筒。因为我们知道子弹已经用完,而且玩家没有看向自己的腰间,所以我们可以在弹药交互的权重,这样玩家就可以成功地抓到一发新的子弹。
- 为了重新装填子弹,他们把子弹放到枪膛,然后上膛。如果这里没有容忍度,如果子弹方向错误,或者没有正确定位,它可能会掉到地上。只要足够接近,我们就可以补偿偏移,并将子弹放在弹膛里。
- 最后,玩家需要拉套筒上膛。要做到这一点,玩家需要一手抓住手柄,另一只手往后拉。与上面一样,我们可以在玩家动作方面给予足够的交互慷慨性,这样玩家就不会因为没有如同士兵一样精确地操作武器而失败。
回顾一下上面的例子:如果没有慷慨的交互,这种直接的交互有很多种方式会失败。尽管玩家感觉他们已经完成了所有任务,但武器可能很难瞄准或从手中掉落,弹膛可能无法正确弹出子弹,弹药可能无法抓取或装载等等。通过慷慨地对待所涉及的各个步骤,玩家更有可能完成预期的动作,并避免因失败而带来的挫败感。
5. 交互慷慨性的影响
不管你的应用类型是什么,在设计时若考虑到交互慷慨性,你可以显著减少玩家的挫败感,减少交互中断的感觉,并且减少重复尝试执行动作的需要。尤其是需要在短时间内执行一系列操作的体验,如果不慷慨,你有可能会给玩家造成非常大的挫败感。
6. 一些声明和建议
- 在某些情况下,严格要求精准的交互可以加强体验。如果这是应用的一个关键支柱,玩家将期待着显著的协调性和精确性。如果某个特定的操作存在糟糕的后果,比如太空船自毁按钮或者结束会话的UI元素,降低它们的权重可以帮助防止意外事故的发生。运用你最好的判断,并根据情况恰当地利用交互慷慨性,将其可以调整到对体验有意义的程度。
- 让交互慷慨性变成可选的选项。特别是在拥有一系列的交互精度并不会极大地改变体验质量的情况下,允许用户选择所需的精度非常有价值。这在基于技巧的体验中尤其如此,因为要求更高的技巧性会增加游戏的挑战性或沉浸感。让用户在第一次会话中进行选择,你可以筛选喜欢高精度要求交互的用户,以及不太可能将体验失败归咎于不精确操作的用户。但请记住,对于多人游戏体验,重要的是要,确保这不会为一部分玩家提供竞争优势并减损另一部分玩家的竞争优势。对于这方面的示例,你可以参照同时支持控制器和键盘的游戏平衡。
- 不要太过火。容忍度太高可能会造成更多意想不到的交互。留出时间来迭代任何动态加权逻辑,并以对体验有意义的方式调整容忍度。
- 当使用任何类型的交互辅助时,总是有可能会出现误报。记住要全面考虑用户需要执行什么交互以及何时执行,并确保相应地布置交互空间。预测玩家意图的任何尝试都不会完美,但通过测试和调优,你可以显著降低用户执行非预期操作的可能性。
- 在实现慷慨交互时,你可以采取的另一个步骤是支持多种交互方法。例如,你可以提供完全沉浸式的模式,比方说需要手动重新装填子弹和手动管理库存。然后,你同时可以提供一个基于按钮的模式,遵循PC或主机的方法,允许玩家在第一次会话中选择自己喜欢的选项,并随时进行切换。另外,这种方法增加了玩家包容性,例如移动能力有限,游戏空间小,或者是刚刚接触虚拟现实的用户。
我们期待着看到你是如何为了避免玩家挫败感而实现慷慨的交互设计,并创造更令人满意的体验。