5

支持多种游戏输入设备的5条黄金法则(译)

 3 years ago
source link: https://zhuanlan.zhihu.com/p/20528046
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

支持多种游戏输入设备的5条黄金法则(译)

数字时代的民间手艺人

有些细节处理好了,玩家并不会注意到,本文探讨的“支持多种游戏输入设备”就属于这一类。

想象一下你去买车,当你准备拉开车门进去试驾的时候突然注意到这辆车没有把手?!?随后销售人员告诉你:“您好,这款车型需要您从车窗爬进去”。

可以开启的车门——消费者会认为这是日常消费级汽车必备的一项功能,同样的,玩家也会认为你的游戏理所应当具备一系列基础功能。如果你无法满足玩家对这些基础功能的预期,他们就有可能在体验到游戏真正乐趣之前就提早退场。

这篇文章将会提供一些便于实践的法则,让你可以像“超级巨星”一样处理好游戏对手柄和键盘鼠标输入设备的支持。为此我们需要分3步走:首先我们来谈谈如何侦测玩家正在使用的输入设备,随后将介绍5条提升用户输入操作体验的法则,最后我们将用这5条法则逐一检验几款AAA游戏,看看他们做得怎么样。

本文主要针对支持手柄操作的单机PC游戏。

输入设备选择引擎

首先明确我们需要解决的问题:在游戏中同时支持手柄和键鼠输入设备。玩家想用什么设备操作游戏只需要拿起那套设备并使用就可以了——也就是说他不需要从沙发上起身或者在菜单中搜寻“开启手柄”的选项。

为了实现这一目标,我们需要一个引擎(一段循环执行的代码)告诉我们玩家当前正在使用的输入设备是什么。这个引擎的逻辑可以被拆分为两个简单的问题:

  1. 玩家想用手柄吗?
  2. 玩家想用键鼠吗?

玩家想用手柄吗?

看看下面这张图表,绿色对勾表示100%确定,红色叉子表示0%确定,黄色叹号介于两者之间。

别忘了很多玩家的电脑上始终插着一个游戏手柄,所以检测到已连接的手柄并不能推断出玩家想使用手柄操作游戏。

“方向摇杆移动”并不能百分百确定的原因是有些玩家的手柄摇杆可能“很飘”,因此最好设定一个阀值来过滤掉方向摇杆的轻微晃动——你使用的游戏引擎很可能已经在做这件事了(例如Unity)。

玩家想用键鼠吗?

看看这张图标。

“鼠标移动”与“方向摇杆移动”一样都被归类到了不能确定,虽然移动鼠标可以很好的预示玩家希望使用鼠标操作,但鼠标位置也可能会发生一些无意的抖动(例如一根猫毛卡在鼠标光电发射器里),最简单的解决方案就是设置一个鼠标移动的最小距离。

引擎逻辑

基于上述表格,我们可以写一个引擎来动态切换手柄或者键鼠操作,它会始终运行在游戏后台并自动为玩家切换到希望使用的输入设备。

我称其为“时间戳输入设备引擎”。核心原理是分别为手柄和键鼠存储一个时间戳用来记录最后一次接收到有效输入操作时的时间——每当你侦测到输入,就更新一下对应设备的时间戳(注意要使用程序真实运行时间,不要使用会受到游戏暂停或时间缩放影响的游戏时间)。

现在有了每种输入设备的时间戳,判断正在使用何种输入设备就简化成了判断哪种设备的时间戳更新。

5条黄金法则

现在我们已经定义了引擎,接下来让我们聊聊文章开头提到的“游戏输入操作的5条黄金法则”,我认为它们是为玩家带来优质单机输入操作体验的关键。

法则1:图标正确对应输入设备

无论何时当输入设备发生变化时,屏幕上所有的按键图标都需要立刻替换为与新设备对应的按键图标。在《几何战争》中如果你中途拿掉手柄的电池就可以看到这条法则的正确运作方式:

法则2:鼠标指针显示状态与输入设备对应

当玩家使用手柄操作的时候显然不希望屏幕中间停着一枚鼠标指针——你懂的,静静地爬在画面中央的鼠标指针,默默地消耗着玩家的耐心。同理,如果他们在用鼠标操作,他们恐怕希望可以看到鼠标指针。

当使用Steam Machine或进入Steam Big Picture模式时,很多玩家都是拿着手柄窝在沙发里,别让他们起身走到电脑前将鼠标指针移动到画面下方。同理,当你隐藏鼠标的时候记得同样将它的功能一并关闭(例如触发菜单选项的悬停事件)。

法则3:任何设备都可以100%操作游戏

任何时刻,玩家都应该可以使用任意设备完成所有游戏控制和菜单操作。

法则4:十字键、摇杆、鼠标都可以操作菜单

玩家可以使用十字键、摇杆、鼠标中的任意一种来操作菜单——这不仅是极佳的用户体验,同时也可以为你的游戏在推销时增加一项砝码:Full Controller Suport on Steam

法则5:手柄连接断开自动暂停游戏

当玩家使用手柄操作游戏时,手柄连接断开,游戏应该暂停。唯一的例外情况是玩家位于菜单画面,此时只需切换输入设备即可。注意游戏暂停的菜单也应该遵循前4条法则。

《光之子》是一个很好的范例,下图中你可以看到法则1和法则5。

其他游戏做得怎么样

现在让我们来看看我的Steam账号中几款支持手柄的游戏执行上述5条法则的情况。

几何战争3

《几何战争3》最大的输入操作问题在很多其他游戏中也同样存在,它的输入设备侦测引擎是按照下述逻辑工作的:

结果是只要你的电脑连着手柄但你不用它,那界面上的图标就永远不会和你使用的输入设备(键鼠)正确对应——即使你按下了鼠标按键,光标依然会固执地在5秒后自动消失。

《几何战争3》的菜单是专为手柄设计的并支持使用摇杆和十字键进行操作,但却不支持鼠标点选。游戏会在手柄断开时暂停游戏,但是即便你没有在用手柄操作游戏这个行为依然会被触发。

上述问题只需要优化输入设备侦测引擎即可解决。

吃豆人 CE DX+

吃豆人的输入侦测引擎和几何战争一样,所以除非你拔掉手柄,否则按钮图标永远不会对应键鼠。鼠标指针永远不会隐藏,即使插着手柄。对于一款时刻生死攸关的游戏,手柄失去连接但不暂停游戏无疑是极不负责任的。

古墓丽影

输入设备侦测引擎不会侦测鼠标移动,必须按下鼠标按键才会切换到键鼠模式。手柄断开连接不会暂停游戏。

光之子

这款游戏很好地示范了输入设备怎样做才是对的。

生化奇兵 无限

输入设备侦测引擎工作正常,会检测鼠标运动。但手柄断开连接不会暂停游戏。

这就是所有我想说的了,一个基于时间戳的输入设备侦测引擎、5条关于输入设备的实践法则。再次重申,这些内容是针对单机游戏的,如果你的游戏支持多人同乐或者分屏游戏,那么你可能需要打破其中部分法则。

原文链接:Gamasutra: Zach Burke's Blog


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK