《卧龙:苍天陨落》发布已经有些时日了,相信不少小伙伴已经打完了一周目的游戏内容了。当然今天我们要聊的不是如何去玩好卧龙的技巧,而是《卧龙》中一些诡异的体验来展开,说说类似的“动作游戏”开发中会遇到的一些经典难题。很明显的是,从游戏体验过程来看,这些问题在《卧龙》中是一样遭遇到的。这个系列会分为上下2篇,上篇讲述《卧龙》中的一些体验和问题所在,下篇会以此展开说明动作游戏开发中会遇到一些主要难题。

本文是下篇。

那么在这样一个开发框架下,我们实际开发游戏的时候,会遭遇一些什么样的坑呢?事实上在《卧龙》里面,就遭遇了很多经典的坑,这些坑不光是实现上,还有设计上,因为实现约束了设计,当然,归根结底还是设计者不理解实现,所以错误的抽象和错误的设计,产生了对自己的进一步约束。接下来我们就来看看这些经典的问题:

01“先手必胜”的最佳解决方案真的是架势条吗?

​“先手必胜”更确切地说,应该是“先到攻击帧的致胜”——先动手只是达到这个目的的方法之一,选择一个“前摇”比较短的动作也是一个方法。饭桌上来说(或者好听了叫“理论上说”),“唯快不破”,速度快就能致胜没有问题,但实际上在游戏过程中,这种体验却是一种诡异的感觉:

为什么会造成这样的问题呢?正如我们所说的,《卧龙》只是看起来是“动作游戏”,但是从技术上出发,它是一个“回合制游戏”,所以前摇相当于生效前的惩罚期,是一个冒险的时间段,因为一旦前摇中被打破就代表技能无效了,正如wow中施法读条被打断一样,而在这样的回合制游戏中,前摇最多也就只有移动了一些位置的性质,但是这个性质在《卧龙》中,是不被承认的,因为即使你的位置发生变化,也不足已帮你躲避攻击,正如上面分析的他的命中计算方法说的那样,你只有是闪避动作的无敌时间或者准确的在“窗口期”拆解对方动作,才算是真正的“躲开了攻击”,不然该挨打的一样挨打。

这样一来,就变成了一个简单的算术问题——如果我们两个人拼刀,我的前摇时间-我的提前时间<=你的前摇-你的提前时间(提前时间对于两人来说是零和的,即我提前了3秒,你就提前了-3秒,也就是落后了3秒),那么就是我揍你,反之就是你揍我,除非先挨揍的人有“霸体”(即挨打不会有任何动作上的反馈)。

那么究竟该不该硬直呢?这就成了一个尴尬的问题了:

如果大家都有霸体,那么这游戏就变成了一个“换一个视角的大菠萝或者wow”了,因为在大菠萝和wow中,受伤动作啥也决定不了,只是一个表现,在“空闲”的情况下才会做,双方对战的时候,根本就不会播放受伤动作,所以类似游戏中经常看到两个人激烈的做着出刀动作,双方满脑袋冒数字,却没人做受伤动作。

但是假如都没有霸体,那么挨打的人动作一定会被打断进入一个受伤动作,也就是回合变化了,你被迫进入了一个“待机”的回合,这时候你还没有发动攻击(或者说技能还没生效),而由于受伤动作大多是比攻击动作后摇要长的,以至于攻击得手的一方再次出手的时候,他的“提前时间”一定是占优势的,所以只要前摇慢,基本就没机会,这样一来,如果大家都没有霸体或者都有霸体,就完全感觉不出来这是一个动作游戏了——尽管他根本不是动作游戏,但是作为商品的需要,我们投放给市场需要的是一个动作游戏,那就不能是互相打木桩比dps的游戏,所以显然都是霸体是走不通的。事实也是在《卧龙》里面大多时候双剑双戟这样的武器,因为频率问题导致“速度快”,并且配合一个“青松迎客”,可以抢到绝大多数出手时机。

所以问题来了——我们需要霸体,但又不能需要霸体,同时想着想着还冒出来了一个新的问题“在没有霸体的时候,一直用抢先手的动作是不是就无敌了?”这就构成了一个有意思的但却十分经典的“回合制伪动作游戏悖论”,所以魂系给出了一个偏方解决这个问题——就是类似怪物猎人中异常状态一样,积累一个破防值,在《卧龙》中这个叫架势值,当被攻击的时候就会增加(或者减少,总之是往一个方向去),架势条满了之后,无论角色是否本身就霸体,都会进入昏迷状态,有点类似老的动作游戏中角色连续挨打昏迷,但是不同的是,玩家角色做出任何非移动的动作都会增加这个架势条,以至于很可能第一下挨打就昏迷。

这样一来,可以给弱一点的角色不霸体,给强一些的角色霸体,但是这个“补丁”在这个玩法中的运作依然是不那么如意的,只能说“接受了”,而不是说“这个真不错”,毕竟我们在玩这个游戏的时候,精神都集中在处理QTE了,却还要分心看着仪表盘上的架势条,这样的体验是十分矛盾的,但是不看也不行,因为敌人是否会进入硬直(或者昏迷)是我下一行动的关键信息,如果这个结果不能在第一时间得出,就无法很好的预安排进攻计划,以至于连进攻都是QTE的,这样一来游戏性是折损的。

那么,好的做法是什么呢?

就如真正的格斗游戏一样,每个动作的“后续动作”都是不一样的,尽管在玩家肉眼看起来是相似的,但是逻辑上完全不同。举个最简单的例子,如果我在跑动中使用某个攻击动作,他的速度是相对较慢的,而如果我闪避之后,或者在其他某个动作之后(也可以的情况下)使用了这个动作,就如Cancel系统一样,这个动作就不是从第一帧开始的,或者利用回合制游戏的性质,可以让这个动作播放速度变快,这样就让这个动作变得更快,更容易抢到先手,而逼迫对方使用防御性动作再次夺回先手。

但是这样的做法意味着开发工作量的加大,动作制作者本身倒未必增加工作量,但是策划的配置量却会大幅度提高,这可能也就是《卧龙》开发组没有这么做的关键原因吧。

02 能解释得通的行为就是好的设计了吗?

我们对于动作游戏,或者说是Action游戏(也就是动作游戏和即时回合制游戏,只要看起来有“动作电影”意思的“动作”游戏)的角色设计,大多功夫都是花在动作设计上的,而一个角色动作设计的好坏,其实也是有标尺的,它可以分为三档:

● 上流设计:你从角色的身形等可以看出角色的骨骼,然后基于骨骼和现实知识(或者一些尝试),你就可以知道他会怎么行为,这里的“行为”不光指的是他能做出什么动作,还包括“他在什么时候会做出这样的动作”。比如《怪物猎人》中的迅龙,你可以看出他是一个猫科动物(骨骼上),因此给了他猫科动物的特质和性格,猫科动物在遭遇危险的时候,会躬身,躬身之后会前扑出去,所有的动作都是依赖于猫科动物的骨骼和身体结构做出来的,所有“什么时候做什么动作”也都是按照猫科动物(比如美洲猎豹jaguar)的特性来的,所以我们只要有一些动物知识,就可以预判出他会干什么,也就有了对应可以先想好对策的空间。当然,如果你没有对应的知识,也不能因为你的无知而把设计否定了,毕竟我也看不懂梵高的画,是吧。

● 下流设计:解释的通的设计,通常这些设计都是毫无根据的,所谓“画鬼容易画人难”,他选择怪物的造型完全是现实生活中找不到影子的,因此他做什么动作都可以解释得通,只要最后看上去确实解释得通,比如手突然变成流星锤,还甩个几下,虽然这很不可思议,但是配合美术表现,他有个手变化流星锤的过程,然后就能解释通了,就变得“合理”了。在《卧龙》和魂系中,之所以都采用妖魔鬼怪,其根本目的也是在逃避项目组的设计能力不足。

● 不入流设计:完全不知所云的设计,即便是他做了这些动作和行为,也无法和角色关联起来,这样的设计在《卧龙》中并不是没有,比如一些怪物就存在完全不知所云的行为——突然消失然后出现在某个位置等。

正确的做法是怎样的呢?

首先我们在设计怪物的阶段,也就是原画阶段,就要明确怪物的身体结构,哪些地方是参照什么样的现实生物的,或者即使自己编造,也得编造出合适的骨骼肌肉结构,这是需要一定解剖学知识的。对于每一处独特的细节,都需要进一步分析展示,由此我们做动作的时候才能知道他什么样的动作是合理的。

接下来我们设定这种生物的习性,包括捕食等的特性,这不是一个剧情设计,而是设定一种生物的行为规范,比如“猫科动物弓背”会发起进攻,这是性格以及身体结构共同决定的。当我们设定这个的时候,配合原画和动画,就把怪物整个行为的合理性调顺了——这时候设计出来的怪物,就是可以用常识判断的(当然不具备常识的人无法判断也没关系)。

然后我们才根据这些设定,去落实做模型,做动作,做AI设计,这就是具体实现了。当然,这个东西需要的是设计的硬实力,没有什么好的解决办法,有多少实力做多少事情,如果团队缺少合适的人才,还是应该学习宫崎英高和忍者组那样量力而行。

03一定要做“跳”的人,却从没想过空中问题

因为做了跳,我们就能更自然的飞檐走壁,甚至做一些跳跳乐,这样就可以丰富游戏的场景制作,可以有更多的场景细节,并且有更多的隐藏宝藏了,这为游戏带来了更多维度的快乐——这是一个我们都知道的道理,想来马里奥的核心乐趣也是跳。

可是真的要做一个跳,很容易吗?并非如此,因为我们要做个跳,会需要设计很多细节,就拿战斗环节来说,就有2个问题:

首先是空战和地面战的配合问题,如果没有空战和地面战的配合,那么跳跃战斗就毫无意义,很显然,因为《卧龙》的战斗判定机制,以至于跳和不跳是一样的——该挨打的还是挨打,甚至原本能打中人的动作跳起来做反而难以命中。

当然我们可以把《卧龙》里面的跳跃当做是一种“跑酷”元素,毕竟这类有点“魂味”(就是指玩法模式和游戏系统一看就是“魂系游戏”的意思)的游戏,战斗跟跑地图完全是割裂的,当做两个完全不同的游戏融合在一个软件里来处理的。所以跳跃在《卧龙》中基本不实用,只能用来跑地图和“暗杀”。当然另一方面来说,比如在《艾尔登法环》中,因为判定方式不是《卧龙》这样的大范围aoe用QTE来判定闪避的话,又会出现:因为判定框跟着角色、而角色又在移动,为了避免穿透问题所以用了射线,配合动作融合导致位移变形,最后跳劈成了一个范围十分巨大的攻击动作。所以相比之下,反正游戏同一玩法下的两个元素已经割裂了,就彻底分家吧,让玩家跑酷的时候好好跑酷,战斗的时候愉快的QTE就行。

而跳跃会带来的另外一个问题就是,既然我能挨打,那么我跳起来了空中挨打怎么处理?这是一个让人头疼的问题,尤其是真正做动作游戏的人,即便是做这样的仿动作游戏,他一样要考虑这个问题。在战斗中,角色受击除了击退还有吹飞,被吹飞的角色就会发生向空中(向上)的位移——这固然是一个十分正常的需求,假如一个角色被上勾拳、上挑之类的动作打中,最好的反馈确实是被打飞上天。那么问题来了——如果我跳起来被人上勾拳或者上挑,怎么办?如果也是击飞的话,会不会因此跳跃中借助被击飞可以达到原本到不了的地方?显然对于一个能飞檐走壁的“跑酷游戏”来说,是会的,并且这不是策划想要的。

于是《卧龙》就出现了常见的伪动作游戏(包括且不限于魂系游戏)中的做法——空中受击直接落地,一下就“彻底解决”了策划的难题——玩家不会因为这个达到我策划不想他轻易去的地方了,并且空中受击也有了反馈。这显然是一种很不负责但又很负责的做法,毕竟空中受击在格斗游戏中也是个老难题。

正确的做法又是如何呢?

​动作游戏中的做法是处于不同的动作中,受击动作是不同的,也因此向上(被吹飞)向后(被击退)受力也会被改变(动作中的参数决定变化量)。因此我们在设计的时候,要对于每一种动作设计一系列的“下文”,受击动作也是“下文”之一,这不是一个简单的状态就能判断的,比如同样在空中,我做“升龙拳”的时候受击和做“泰山压顶”的受击动作是该有些差别的,毕竟升龙拳使用的力是往上的,泰山压顶是往下的,同样受到上挑的反馈必然会有些许不同,即便动画相同,逻辑数据处理也会有所不同。并且升龙拳也并不是总在往上的,所以我们要把一个动作分为若干个阶段(最终就是对每一帧,所以才有“动作游戏其实是只有帧而没有动画”的说法),每个阶段都会有各自的“下文”处理。

这是一件十分耗费设计力的事情,数值策划和战斗策划要认真调整每一个细节需要大量的精力,同时也需要非常有动作、格斗游戏的经验,这么做可能对于大厂来说成本无法接受,而对于小厂来说,问题只有一个——大多策划不会。不会就不做是不负责的,但是本着负责的精神,我们至少想到给了你玩家一个反馈——就是直接下落,至于体验好不好,这里就不谈了,毕竟“体验”只是在辩论时候才用的词儿,实际开发根本没用。

03 镜头锁定这个功能究竟是干什么的?

在经典的即时回合制游戏,如《魔兽世界》《最终幻想14》等中,都有一种“指定目标”的技能,这种技能的特点是释放者必须选择一个目标,然后释放对应的技能,技能本身会依赖于目标产生效果,并且技能最终都是毫无差池的打向目标的(如果抛开命中率计算的数学公式,那么就是100%命中目标的)。比如《魔兽世界》里面的火球术,当玩家选择一个目标发射火球术之后,火球术一旦成功释放,飞出去了就必中(除非数学公式得出运气不好没有命中)。

因为这种技能的需要,所以才有了选择目标,所谓的选择目标,就是锁定一个目标的功能。而这个功能是如何转变为锁定目标的呢?是因为后来大家发现《魔兽世界》就是回合制游戏,不那么动作(action)以至于“玩起来不爽”,所以要让游戏增加动作性,一些游戏,比如《激战2》的做法,是保留了锁定目标,但是技能全都是AOE,冲着锁定目标的方向过去,最后中不中是看这个AOE的范围是否能覆盖到目标,由于是AOE并且移动速度较快,大多时候还是可以命中的,这样一来游戏看起来就更有“动作性”了(至少即时制下瞄准成了一个“技巧”)。

而这种基于3D视角的动作游戏中,比如经典的《怪物猎人》系列,本来是没有锁定目标的,由此玩家需要自己调整相机找到目标,并且调整角色的攻击方向来打击目标,使得“命中率”变得完全依赖于玩家技术——这是动作游戏最好玩的地方,却被认为是“玩家之间差距过大而不好接受”,于是为了降低游戏的难度,《怪物猎人》系列到了《怪物猎人:世界》开始也引入了锁定目标,但是锁定目标本身有2个含义:

第一个是:锁定一个攻击目标,这更像是《魔兽世界》和《激战2》这种游戏中的“指定目标”,我锁定了目标,就是因为我大多技能都要依赖于这个目标,去追踪他们,并且对他们造成伤害,如果没有目标,这事儿就办不成。后来(从《激战2》开始)改进为如果没有目标就在正前方假想一个目标,配合技能本身都是aoe的性质,所以打出来的技能不会命中任何目标就不会消失,于是就有了“向正前方发射”这样的效果。这里的锁定目标,是指“为技能选择一个攻击目标”。

第二个是:让镜头尽可能的跟随目标,这样玩家始终能轻易地看到这个目标,即使不自动跟随,锁定目标之后,按一个按钮也可以立即将镜头调整到对准目标。这在怪物猎人系列里面是这样的,因为打击敌人依旧是靠玩家的技巧,所以瞄准依然是一个玩家要精心去做的事情,所以不会有“指定目标”的效果。

但是到了《卧龙》中,就不对劲了,它既是“锁定目标”也是“镜头跟随”,虽然听起来这非常人性化,但实际上也是因为他两个都用上了,才导致了别扭的操作。大多团队没有经验的策划对于这个问题,也是没法拿捏的,也不知道锁定目标其实是有两种的。当然这是一方面,另一方面就是镜头跟随策略,在《卧龙》是强行跟随的,对玩家而言“十分的硬”,根本拽不动镜头,所以一旦敌人运动起来……

那这个要咋做比较好?

首先对于《卧龙》这种伪动作游戏,应当还是采用他同类玩法,也就是《激战2》里面的锁定模式——即锁定的目标就是要攻击的目标,但是由于要体现出“动作性”,以至于游戏速率比《激战2》等承认自己是回合制游戏的游戏要快很多,所以得做一些镜头辅助,但是镜头辅助应该只是尽可能确保去瞄准锁定的怪物,当玩家操作镜头的时候,应该以玩家的操作为准来转动镜头,而当玩家停止对镜头的操作之后,通过缓动来逐渐加大镜头“归位”(也就是转向锁定目标)的速度。

04为什么神兽召唤这么难按出来?

《卧龙》里面有一个系统是召唤神兽,在第二关开始,玩家会获得青龙、麒麟等神兽,在战斗中,如果玩家的神兽槽满了,就可以同时按下YB或者XA来释放(XBOX手柄)不同的神兽技能。神兽技能的特色是使用的瞬间有一个效果,然后持续一段时间另一个效果。尽管游戏中设计了很多神兽技能,但是由于策划十分小气,大多技能生效的威力几乎可以忽略不计,而持续效果要不时间太短,要不效果太差,以至于都不如召唤瞬间能直接回满血、但后续aoe回血因为动作移动距离和受击等机制而几乎可以忽略的青龙来的有意义。这个青龙往往是被玩家用于保命,即当药水耗尽或者是生命垂危但正好被昏迷的时候,如果能量条满了就会释放。但是不幸的是,在实际玩的时候,很多关键时刻,我们会放不出青龙,不是拆招(B键效果),就是重击(Y键),那究竟是我们操作不好,还是出了什么问题呢?

首先是按键处理问题,《卧龙》里面的按键处理是按下按钮的时候“翻译”成指令,告诉系统。这也就是说,如果我要按下组合键必须非常精准的一起按下去,这个精准程度,是根据硬件本身和系统按键设置来定的,因此只有当你精准的按下Y+B的时候,才是真的召唤,若是因为手指问题B比Y按下早0.1秒左右,就会导致变成招架动作(如果用大拇指去执行同时按下Y+B,这是很容易发生的事情)。

其次是动画状态机问题,由于策划设置招架和翻滚动作没有连到召唤神兽动作,就导致在招架或者翻滚中没法召唤出神兽,必须等到动作结束,因此一旦进入招架或者翻滚,企图再召唤神兽就变得困难了。而同时配合他的输入人性化制作,也就是按键输入之后得到了命令,会去预约行为,比如在翻滚动作内,按下了翻滚按钮(B键),这时候他就会在翻滚里面预约下一个动作也是翻滚,由于切召唤神兽必须等动作做完,必然是晚于翻滚的,因此玩家玩命的按(毕竟是紧张的情况下)就会玩命的翻滚,以至于到死都放不出青龙。

如上图所示,整个翻滚动作可以理解为一个Timeline,在开始到任意翻滚阶段之前,输入的行为将会被预约,新的被预约的动作和老的被预约的动作会被列个优先级,取优先级高的留下,比如留下的是翻滚动作,因为他只接受翻滚(或者受伤等),“任意翻滚阶段”之前,玩家输入的翻滚将被预约,一旦进入“任意翻滚阶段”,只要有预约翻滚就会立即翻滚,在这个“任意翻滚阶段”内接收到的翻滚指令,只要有效(优先级决定,毕竟还有受伤等更高优先级动作)就会立即翻滚,而“任意翻滚阶段”之后输入翻滚就无效了。当整个动作结束,此时进入没有动作(没在放技能)了,才会平等地接受召唤神兽的行为,因此召唤神兽必然发生的比翻滚晚,如果翻滚中按了翻滚,就会重新开始翻滚,如此往复,神兽就出不来了。

那动作游戏的输入又是如何做的?

首先是游戏的输入,和软件的输入是截然相反的——在软件里,我们根据输入直接获得指令,比如按下B键,我们就直接获得B键应该执行的事情,如果可以执行那就执行了。这是标准的做软件的思维,并且用这个思维做UI也没问题:

如上图所示,软件的按键处理方式就是如此,用到《卧龙》就是:首先判断当前这个状态,对应的按钮是否有效?因为在翻滚中,所以Y+B无效,而B有效这就导致了问题;而翻滚之前因为按键输入的事后并没有同时进行,所以先执行了B,就开始了招架动作,这时候Y再下去,不管是重击(Y)还是召唤神兽(Y+B)在招架动作都是无效的,反而翻滚(B)是被接受的,于是招架变成翻滚……

而游戏的输入中,则正好是相反的,游戏中玩家的输入将被缓存起来,这个缓存没有任何特殊翻译,仅仅只是某个按键什么时刻被按下、什么时刻被抬起。在动作游戏中,按键输入是这样的,然后根据角色当前所处的帧(或者伪动作游戏的动作状态),反过来查询当前哪些行为有效,然后再看是否去执行:

如果是用动作游戏的方法,我们会缓存所有的操作,比如玩家按下过Y,按下过B。每一帧,根据可以Cancel的信息,去得出那些动作可以Cancel当前的动作,然后去检查他们的按键是否存在,如果存在就把那个动作加入候选列表,最后候选列表中筛选出一个价值高的来作为下一个动作。因此只要玩家短时间内按下过Y和B,召唤神兽就可以和重攻击(Y)和招架(B)一起成为候选动作之一,此时因为召唤神兽优先级,就会做召唤神兽,这样做“手感”会远远好于现在的。当然,另一方面也需要改善招架、翻滚动作的Cancel关系,让他们可以被召唤神兽所Cancel,不然手感好了,设定上依然会让玩家感受不到“召唤神兽是个大招”。

05 总结

在开发一款游戏的时候,我们会遇到很多Gameplay相关的问题,在今天这个画面和shader优先的时代它们不被重视,可是正是这些东西,却是影响着游戏性的核心,虽然不至于一下子彻底崩坏游戏性,但是其中的别扭,却可以够玩家不爽的了。所以一套好的解决方案,会帮助玩家在“无形中”得到真正的好的游戏体验。

本文原载于我们的公众号

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

目录