« 没有情人的情人节 | 返回首页 | 角色动作控制接口的设计 »

键盘毕竟不是手柄

周末在写 demo ,为了给同事示范我希望得到的操作手感。作为一个能写点程序的游戏设计者,自己随时实现出来看看恐怕是不可多得的优势了。

我们的游戏有一定的动作成分在里面,所以我不想采用鼠标控制角色的行动,以对拍砖头的形式表现格斗场面。本质上我更偏好 console game 和游戏手柄的操作感。不过在 PC 平台上,手柄并不普及,只能在最普及的输入设备——键盘和鼠标上下点工夫了。

手柄控制方向主要有两种:

其一是模拟杆,在 PSP ,PS ,Wii 等手柄上均有安装。好处是至少可以感知两级力度,并可提供非常细的方向信息输入。控制游戏角色行动时,操作感很不错。

鼠标通过移动可以提供方向信息,甚至通过移动速度可以模拟出力度的差别。但毕竟鼠标缺乏力的反馈,且必须通过移动才能提供信息,本身不能保留状态(鼠标的 button 可以提供状态,所以很多 fps 把前进操作设置在鼠标的按键上),和手柄的感觉还是差了很远。

btw, IBM 的 TrackPoint 如果特别针对去开发,其实是个不错的游戏输入设备,可惜还是太专有化了。

其二,就是类似任天堂的十字键。由于有专利,到别的厂家那里换成了其它形式,不过大体还是差不多的。这类设备可以精确的输入八个方向,在格斗游戏中用的最多。比如我的最爱 VF4 EVO 的 PS2 版,干脆就禁止了模拟杆的输入,只允许用八方向键。

对应到 PC 上,大多数游戏用 WASD 四个按键模拟这个设备。不过要小心的是,由于键盘硬件设计的缘故,大多数键盘处理三个以上按键同时按下时,会发生所谓锁键问题。比如我的 DELL 键盘,同时按下 W 和 D 键后,再按 E 键,系统就接收不到 E 键的消息。这类情况试硬件决定,不同键盘处理能力不同。据说有比较强悍的键盘可以处理任意 7 个按键同时按下的消息,我就没有试过了。

好在现在的键盘处理两个按键的能力还是绰绰有余的,用 WASD 模拟八个方向的输入足够了。


游戏和普通应用软件是不同的。道理大家都明白,但是很少人仔细考虑。虽然游戏依旧是程序,只需要人来提供输入(鼠标键盘的控制),软件提供输入(明白显示)。但是,我们不能忽略人。人在游戏时是系统的一部分,我们提供的输入不仅仅是数据信号,而是恰当的时机提供的恰当的数据序列。这也是我反复强调过的,时间因素在游戏软件中的重要性。

普通的 OS 并不是为游戏设计的,输入设备的界面能获得的仅仅是数据而已,而缺乏时间上的控制(需要我们在应用层上额外编写代码实现)。当然也不绝对是这样:比如 Windows 可以在 OS 级处理双击消息就是一个例外。

console 平台上,也能看到双击这种操作。许多动作游戏把双击前进设定为跑步或冲锋。不仅如此,我们还能找到操作跟时间相关的很多例子。比如在许多游戏里,长按和短击按钮往往是有区别的。例如在 PSP 版《怪物猎人》中,短击 L 键是切换镜头,而长按 L 键则和镜头控制完全没关系,变成了切换物品。

操作手感是许多种类游戏的灵魂所在,如果你不同意这点,也该看看 Wii 和 NDS 是怎样改变游戏机市场的格局的。当然我们也不必过于埋怨 PC 的输入设备的落后,很多情况只是做游戏软件的态度。许多游戏之外的软件其实已经做了许多,比如我最爱的浏览器 Opera ,让我钟情于它的就有方便的鼠标手势。好好想想,键盘鼠标上都可以做许多文章呢。


下面写写周末做的一些工作和想法,做个记录:

当我们用 WASD 来模拟八方向键时,会遇到一些问题。

通常,我们有两键同时按下来模拟斜向的方向。比如 W 和 D 一起按下,相当于右上。可问题在于,“同时”这个概念本身就不存在。莫说人不可能同时做到把两个按键“同时”按下;实际上 OS 提交的键盘输入数据里 W 和 D 键总有个先后到达。

如果这个问题还不足以引起你的注意,那么看下一个:如果我们同时按下了 A 键及 D 键,逻辑上应该如何处理?在游戏手柄上我们永远无法同时触发左方向和右方向,但是键盘上却可以轻易做到。

最终,我是这样做的。

我们必须记录所有按键的先后次序,并保留每个按键的状态(是按下还是松开)。用一个队列来记录按键次序,每次一个新的方向键(WASD 四个键中的一个)按下,都把这个键放到队列的顶端。然后依次检查队列,查找是否有关联键存在。所谓关联键,就是可以与当前按键发生联动的按键。比如 W 键可以和 A 键或 D 键联动。由于一个键可能和多个键联动,那么,就应该按按键次序来处理,只保留最近的一次联动。

当接收到按键送开的消息时,遍历队列,将相关的所有按键及按键组合去掉。

程序从队列顶端拿到当前的按键或按键组合信息。

这个设计保证了所谓格斗游戏的键盘划弧的正确性,当你依次按下了左(A)和下(S)后,继续按右(D)键时。如果没有即使松开左键,导致三键同时按下,我们可以取到最自然的逻辑:右下(下和右联动)而忽略掉多余的按键“左”。当我们按住左和下,同时点击右键(注意:这种操作输入三键同时触发,不是所有键盘所有按键组合都可以正确处理)时,也可以有自然的视觉反馈:它相当于在右下和左下两个方向间切换。

此外,我还做了另一些尝试。

键盘无法做到手柄那样识别力度,那么我们只能从时间控制上做点文章。比如,我们可以区分按键的快速击打与长时间压放。并能够记录指令的次序。

例如,可以将长压 W 来控制角色前进。如果在前进的过程中按 S 的话,则可以认为是后退。但若立刻松开 W 这个前进按纽则认为是要做转身向后的动作。如果只是在前进过程中速击 S 后退键,又可以认为是闪避。仅仅只是两个按键,通过不同的时序组合却可以做出三种以上的动作来。

好好挖掘的话,键盘甚至可以做出比手柄更灵活操作方式。不要把键盘上的键看作一个个独立的按键,而应去想象五根手指的运动(暂且认为另一支手要握着鼠标),我想能发现更多。

切莫以为设计的复杂会给最终用户带来困扰。用四个键去控制八个方向,比设定八个(甚至更多)方向键在很多环境下要更体贴。毕竟人只有五根手指,通常我们只使用其中的三根操作方向键。用户比你想象的善于学习,只要给他们的操作提供足够的视觉反馈,并且让所有的操作都有最自然的含义,而非惊奇。这样,用户在学习操作的过程中就不会有太多的记忆负担,乐于接受。


最后谈谈鼠标。

不知道有多少人记得很多年前的《刀剑封魔录》,不知道它是否借鉴了 Opera 中的鼠标手势,用鼠标划大招的设计终归是很不错的。可惜制作组去了搜狐后没有在游戏的操作感上继续挖掘下去。

我们总觉得鼠标是一个 2D 定位设备,操作系统总能提供鼠标光标的绝对坐标。但实际上,鼠标本质上只能提供相对运动信息。就好比 Wii 的手柄,它提供的仅仅是你挥动它的加速度,并不能感知手柄在空间中的移动速度。是 OS 提供的编程接口误导了程序员。我们要挖掘鼠标作为游戏输入设备的能力,就要先看清这个本质。

用鼠标画过图的人应该有体会,就算是画个简单的圆,不借助软件工具也是很困难的。甚至远不如笔方便。我想拿是因为,手握着笔时,是用三跟手指在控制,可以做出精细的角速度变化。而捏着鼠标则是用手腕,手腕能提供的移动的直线速度控制。也可以做到较为精确的平面定位。但不容易把握角速度。而可惜的是,鼠标本身并不能获得绝对坐标。我们用鼠标操作 FPS 游戏时,也多利用的是直线上速度控制这一点。

我们采集鼠标的输入数据时,就不可以孤立的记录每次的运动绝对方向。要知道短时间内,两次方向数据即使有区别,那很可能是人手腕的局限性造成的。足够可信的数据是鼠标在短期内速度方向的大幅度改变,例如逆向移动,和顺/逆时针切向运动。大体上,我们能采信的角度改变只此三个状态而已,而不能把角速度作为线性变化的输入数据来看待。

但另一方面,鼠标线速度的区别则可以相对可信一些。不少台球游戏用它来控制出杆力度,玩家经过适应后可以获得不错的手感。

今天累了,不往下写了。

Comments

今天又看了云风的书,真希望云风大哥有一天也成为享誉国内外的大师!

好文
:-)
真想跳槽去面试下 哈哈
起码能学到不少

很高兴云风与众高手和大家分享心得体会
最近我也在思考关于鼠标输入的一些问题。我也是在用了浏览器的鼠标手势之后觉得这种设计很方便,不知道如果在游戏中运用会怎么样。我比较孤陋寡闻,《刀剑封魔录》等这些游戏没有玩过。不过我猜想诸如格斗类或者动作类这些比较强调实时性的游戏引入鼠标手势作为主要操作应该是可行的。
记得以前在街机上打街霸拳皇之类的游戏,用摇杆来划招,我觉得这比用十字键要爽多了(索尼手柄上也出现了小摇杆,不知道是不是说明很多玩家喜欢摇杆操作的这种快感)。而鼠标手势和摇杆很类似,操作起来比较灵活方便,应该可以找到那种划招的快感,当然是不是玩家们都接受我就不敢说了。此外,我觉得对于3D的格斗类、动作类游戏,纯手柄操作不够方便,这与我习惯CS、WOW的操作方式和少玩console有关。我记得以前玩生与死还有古墓丽影之类,总觉得对不准方向和跑不对位置,背对着敌人发招是件挺搞笑的事情。不知道现在游戏手柄和这些游戏操作进化到什么程度(听说现在的手柄有滚轮,中间还能扭动...),我认为现在3D游戏里,光是二维平面上的移动起码要有3到4个方向才算方便,然后左右转身要灵活,再加上类似扭头的视角转换,这些操作用方向键加LR再加摇杆显然不如鼠标加键盘方便,如果再加上跳、爬、拳脚之类甚至是划招的话,鼠标加键盘的优势就更能体现了,毕竟6个手指头操作跟8个手指头加手腕操作的灵活性差了不少,而且手柄上大拇指负担过大了。所以,我比较喜欢的操作方式是左手键盘控制移动方向和各种技能动作,而右手控制的鼠标一般有无按键状态、长按左键、长按右键(还可以考虑长按中键)几种状态,可以对应转身、视角转动、划招或点选菜单等几种操作。
有问题是,我不知道这种设计在实现上是否有难度。我没有阅读过有关输入和鼠标手势实现的源码,唯有瞎说一下。我觉得鼠标在无按键状态下进行划招并且点选菜单这种操作是很自然和方便的。但这要求后台要一直分析着鼠标的移动,不知道这种消耗厉害不厉害;尤其是如果应用在3D多人在线动作游戏这样强调实时性的情况下,这种设计会导致性能下降,那就得不偿失了。
呵呵,说了一大通。其实我比较期待一款强调操作技巧的以真实中国功夫为题的3D游戏或者网游。欢迎拍砖

我想编游戏,但是现在在做应用开发,希望你能联系我给我一点游戏开发的路子!好象都很相通,数据库和一些东西,但是就是不明白怎么变成游戏的!困惑中,希望能帮帮我!我的QQ37707256!EMAIL就是上面那个了

楼上的分析似乎只是注重在RTS,和FPS游戏上了。键鼠在RTS上的确是绝对要优越与手柄,但是文章讨论的是键盘和手柄而不是键鼠和手柄。

所谓解放双手,我只想说,判断一个游戏控制器并不是取决于它对手指的利用程度,而应该是玩家的舒适程度。可能你觉得把手放在键盘上玩游戏比握着手柄舒服,但是如果对于一个真正的游戏玩家(使用游戏主机的),手柄绝对要比键盘舒适100倍。
况且,绝大多数游戏实际并不要求我们同时使用多个手指。实际上,3个手指已经足以应付大多数游戏。
PC游戏在RTS和模拟经营类游戏方面使用键鼠的确是十分合适。但是如果是ACT类游戏的话,我个人认为键盘还是远不手柄的。

对于注重操作性的电子竞技游戏,正是操作的的深度,造就了游戏的深度。操作的深度并不意味着操作的复杂度,war3, sc 这样的游戏,一支右手控制鼠标也可以操作游戏,但是如果你要玩好游戏,并且享受操作的快感,你就必须学习如何用左手去操作键盘。你必须学习更加复杂的操作。一个游戏的操作方式就是应该像这样有深度,简单的和复杂的操作方式都应该提供给玩家。如果只有简单的操作,就谈不上操作的快感。sc, war3 之所以能成为电子竞技的原因之一也就在于其操作的深度。这个道理就如同打篮球,小孩子都会打,但是其中又有很多技巧,正是其中的技巧使篮球能成为竞技。我玩 war3 很多年了,面对顶级高手的操作技巧也只能是惊叹和佩服。

操作在 RPG 游戏中,只是一个组成部分,RPG 强调的是角色与扮演,强调的是体验虚拟社会生活所带来的乐趣。当然 RPG 中的战斗等场合,也能找到操作的乐趣,比如 wow 的战斗就很讲究技巧和配合。

如果说操作,键盘+鼠标才是真正解放了双手,分析如下:
右手使用鼠标,手控制鼠标的移动可以定位,食指、中指、无名指,分别控制左中右三个按键,中指还可以滑动滚轮。
左手使用键盘,五个指头都可以动作,用于控制键盘上的按键。
键盘+鼠标的这样的操作方式被广泛的运用到 cs, sc, war3 等射击和即时战略游戏中,并且取得了良好效果。
而使用手柄,并不能真正解放双手,多数情况下能够灵活运用的也就是两个大拇指,其他的手指都用于握住手柄了。

"好好挖掘的话,键盘甚至可以做出比手柄更灵活操作方式。"
这句话是不是说的太想当然了,既然在标题已经承认键盘不如手柄,为什么在这里有随性的说出这样的话?键盘毕竟是做文字输入的,根本就不是为游戏设计的(尤其是强调按键的游戏)。就个人来说,把手平放的舒适度是远不如手柄的。
现在手柄应该已经成为很多PC玩家的标配了吧?是不是可以放些精力在手柄配置上?毕竟如果是使用键盘的玩家应该还不会太在乎按键的复杂性吧?

受益匪浅

即时战略游戏里面,键盘所带来的操作手感和操作快感,我想是其他任何设备都无法比拟的。比如 starcraft, war3 之类的游戏,如果没有键盘和鼠标的配合,是根本就没有办法玩的了。

关于鼠标,有种模式是用鼠标控制指针,根据指针的位置决定其含义。比如根据指针相对于屏幕中心的方向来决定运动方向,根据相对于屏幕中心的距离决定运动的方向,在屏幕中心放置一个静止区域。
用来开飞机还是不错的……

其实还有两个现在很流行的人机交互设备,笔者没有提到,一个是六轴感因设备,其普及是可以预见的(一些手机已经加入了这个功能),还有一种是EyeToy一样的视屏捕捉设备。

网易想干嘛?看云风的描述,在做动作游戏吧,哇哈哈哈

虽然我不怎么玩游戏,但作者对四键方向的论述相当精彩!

街机模拟器里的拳皇,轻按上就是小跳,否则就是普通跳。不知是不是用时间长短实现的。

策略、即时战略和FPS最适合的还是鼠标和键盘,用手柄实在是很不爽啊

一直就认为游戏的按纽是越精简越好,用尽量少的按纽能组合出丰富的动作是件很愉快的事情。
对鼠标的数据采集究竟能作到怎样的程度非常感兴趣,以后来仔细请教。

佩服云风的执着
顺便问一下,很想知道网易将来的发展计划:
1、鉴于梦幻和大话都已经开始从巅峰状态下滑,而其他网游没有大影响力的情况下,网易如何发展自己
2、杭州的研发中心定位是什么,何时建成(想来工作,呵呵)
3、网易作为中国老牌门户,现在网站每况愈下,成为八卦、娱乐的天下,有没有发展计划?
以上,可能问的不是地方,但是实在找不到网易员工可以询问

Post a comment

非这个主题相关的留言请到:留言本