释放技能为何会产生硬直?从开发角度,看技能设计原理

在电子游戏发展的漫长历史中,总有一些令人耳熟能详的游戏机制和良性恶性Bug在游戏玩家中津津乐道,比如利用内存溢出机制在《沙罗曼蛇》中卡出255条命,又比如说一些因为游戏引擎老旧导致的一些游戏的手感问题,被续作保留并成为手感的一部分,就像《dota2》中一些技能对转身速度的影响,这最初是因为war3的局限性,而dota2却选择这一块机制选择保留。

我们这次就来探讨一个有意思的问题,那就是:打断后摇(也就是玩家们说的“硬直”)这个机制是如何作用且为何被保留的?它和游戏内的平衡以及开发之间都有怎样的关系?由于笔者只会虚幻引擎,接下来只会拿虚幻引擎举例,但是大多数的商业引擎在释放技能的代码逻辑上都是差不多的。

 

动画融合和状态机以及动画蒙太奇的关系

在虚幻引擎中,角色可以通过骨骼绑定大量的动画,但是动画蓝图只有一个,那就需要一个节点来判断角色的状态,这个节点在动画蓝图中就叫状态机。举个例子,比如你的角色当前的最大行走速度变量是100-300,则触发行走状态,并且可以通过混合实现慢慢抬腿到快速行走,当最大速度变成600,角色开始跑步并逐渐从300加速到600。

但是游戏中的技能千奇百怪,而状态机通常只能用于普遍存在且能被提取成函数的通用变量,如果你把大量的技能也写进状态机,就会出现大量的Bug。因为你需要做大量的判断来让状态机精准生效,这即低效也难以优化,比如你判断角色的速度属性用于切换行走和奔跑,但是你做了一个冲锋技能也会提高角色的速度,那他们在状态机里就会冲突。

于是我们只需要根据按键判断角色的CD时间和资源(血量,蓝量,能量等),按下按键第一顺位优先强制播放角色的施法动画,并判断施法动画播放完成后触发技能效果进行actor之间的数值交互,那么就需要一个强制性和优先级都很高的动画播放系统,它就是动画蒙太奇。

 状态机获取速度变量的

这里也不得不指出,状态机的执行结果是没有返回值的,他只能通过变量的变化来触发,但是动画蒙太奇有返回值。因此动画蒙太奇在虚幻引擎中,天生就是为技能系统服务的,而播放蒙太奇的节点,在播放中和播放结束都可以对流程进行控制或者对输入进行许可,像魔兽世界中一边滑步一边释放技能的动作就是在播放技能动画的同时开放了移动输入。

如果你给角色绑定了多个按键的蒙太奇,当你不对正在播放的蒙太奇做任何限制的时候,你播放另一个蒙太奇就会打断当前播放的蒙太奇,如果你一直重复播放一个蒙太奇,就会在这个动画的前几帧疯狂抽搐。这就是很多老游戏的表情系统和打断后摇的核心机制,而一般当需要强制播放结束才能操作的动画则会用一个节点来控制,也就是Delay。

蒙太奇播放

但是Delay作为时间轴控制节点,对性能的开销往往会非常大,所以一般在做CD的时候会用一个int或者float变量,来储存CD时间,然后通过tick事件来在一个统一的时间轴上,只对浮点和整型变量进行判断,而不是每次动作都生成一个新的时间轴,这就导致一些CD的攻击动作会很容易达成打断后摇的效果,因为数值判断和系统级的延迟的优先级是不一样的。


是一直存在的BUG还是刻意为之

既然解释了早期游戏开发者整出来的打断后摇和重复鬼畜表情的代码逻辑,那么为什么现在很多游戏仍然保留了这些机制呢,难道真的是开发者没有能力优化吗?我们以格斗游戏举例,尽管格斗游戏一般都是在2D平面上进行的,但是表现层只是前级,后级的代码上逻辑也是通用的。

在早期FC的格斗游戏中,角色都是一板一眼的,而现代的格斗游戏中,有些攻击动作会严格播放完每一帧才能行动,但是又可以通过爆气等手段来打断,形成新的战略深度。可以说在对判定要求极其苛刻的格斗游戏中,后摇的可打断与否,以及破绽是否成立都是开发者有意进行严格限制的,打断后摇是战略深度的一环,也就是说如果性能开销不大,且要求精确的环境下,开发者是能够优化好这些问题的。

不过在一些对判定要求不那么严格的游戏中,比如moba,很多大家耳熟能详的机制其实一开始就是bug。比如技能接闪现、动作重置普攻这些操作,在英雄联盟早期版本里,都是玩家摸索出来的,尽管像许多比较imba的效果或者可以利用外部程序在人类无法完成的操作中获得质变的一般也被修复了,但是像主动物品重置普攻这些效果一开始并不是写在装备描述里的。

比如我们熟悉的早期版本的破败、提亚马特,都是一开始作为Bug出现,直接提升了一大波上单英雄的对线强度,但是在官方发现问题后,保留了其机制并削弱了数值,让其成为游戏内战略深度构成的一种。

因此,我们可以得出一个结论:打断后摇在现在的游戏中,更多的是开发者为了游戏趣味性做出的彩蛋式设计,而不是无法修复的bug了,不过在早期这些问题的确是引擎技术限制或者是开发者没有注意到而留下的问题,然而现在打断后摇已经成为玩家和开发者的一种习惯性设计了。

更多游戏资讯请关注:电玩帮游戏资讯专区

电玩帮图文攻略 www.vgover.com