战斗中的取消:《战神》与动作游戏设计

简介:
让我们从这些游戏的始祖开始:街头霸王:世界勇士。( Street Fighter 2: World Warrior )这是一个传奇故事。在游戏测试期间的某一天,加利福尼亚州一位名叫 Tomo Ohira 的人,用一些疯狂的招式打垮了游戏中的对手。他可以把一些不能连在一起的招式连起来,用取消制造出连续技。

当我听闻此事时,我还是一个身在俄亥俄州的孩子。我当然相信这个故事,因为 Tomo Ohira 是当时美国最优秀的街霸选手。然而,在那之后我从日本开发团队得知,这是游戏里的一个“ bug ”。他们觉得这个破绽很难变得实用,所以就保留了它。

结果,这个 bug 就成了取消 - 连续技的诞生之源。最典型的例子就是隆的龙卷旋风脚取消波动拳,我认为这是很多其他街霸游戏基础打法的催化剂,比如“憋角”和“下轻腿”。

取消的真正原理

让我们来给取消下个定义:当用户通过控制器输入一个动画树的一系列节点,开始播放一段新动画时停止播放前一段动画。不用考虑战斗系统的各个招式,让我们直接来分析取消的种类和方法。

取消分为两个核心种类,“部分取消”和“完全取消”。

“部分取消”能使一个动画在指定的条件下结束播放。“部分取消”有两个常用的条件,一个是“打击前帧”( Pre-hit ,动画可以在打击进行的第一帧之前的任意时间取消),另一个是“打击后帧”( Post-hit ,动画可以在打击进行的最后一帧之后的任意时间取消)。

“完全取消”则是让一个动画在任意的位置结束播放。我进行了归纳总结,只有在少数游戏中会有细微差别,但对于大部分游戏, 99% 都会采用这两种类型。

大部分游戏中,取消的两个方法是“缓冲”( Buffer )和“瞬时”( Instant )。

“缓冲”方法会预先储存用户的输入指令,并在取消条件成立时执行它们。在一些设计良好的游戏中,“缓冲”方法能在取消条件达成之前,用其他输入指令进行自身取消。这样保证了系统响应性的高品质。

“瞬时”方法则是在取消条件成立时,立即接受并执行用户在那一帧的输入指令。“瞬时”方法允许玩家延迟动画的播放时间,并添加到系统的总响应性中。

那么,我们来举一个例子。这里有一段名为“ Square01 ”的动画。这段动画在我们按方块( Square )键时会播放。这段动画共有 60 帧的长度,在 15 帧至 20 帧是一个打击帧窗口(即打击判断生效)。这段动作的伪代码脚本如下:

//60 frames
Animation = Square01

//hit frames
On = 15;
Off = 20;

//attack cancel
Anim = Square02; Button = Square; On = 0; Off = 21; Method = Buffer;
Anim = Square02; Button = Square; On = 21; Off = 60; Method = Instant;

//block cancel
Anim = Block; Button = L1; On = 0; Off = 60; Method = Instant;

你也许会问,这些都代表了什么?注意“ On/Off ”参数,这些帧的值定义了取消窗口的范围。“ Method ”参数定义了取消的类型,如果你忘记的话请看上文的定义。

我们可以看到,在 0 21 帧之间,“ Square01 ”是不能被打击前帧的方块键输入所取消。而在打击后帧,即帧 21 之前,方块键的输入是被记录到缓冲中的。

我们也可以看出,“ Square01 ”在打击后帧之后,即 21 60 帧之间,可以被瞬时取消。并且,在 0 60 帧之间, L1 键可以在任意时间取消“ Square01 ”,也就是完全取消。

如果你明白了上述内容的话,试着去想象一下一个角色的招式中每一段可能播放的动画,并想象一下它们是如何与游戏系统相关联,比如回避、防御、反击、行走、跑步、跳跃、二段跳、魔法、投掷和相关反映动作。给你一个小的参考,《战神 2 》中的 Kratos 一共有大约 4000 个取消节点,以及每一个节点中大量的参数设置。

感到厌烦了?我保证从现在开始不从技术角度去谈论了。

实现的效果

一个完好实现的取消系统对游戏能产生什么样的效果呢?首先,这能判断一个游戏是否给人带有迟滞的感觉,或是爽快并且高响应的感觉。从防御的角度来看,它能给人带来“最好的进攻就是最好的防守”这样一个感觉。玩家可以攻击敌人,并用防御取消来制造新的机会去攻击。

防守取消在《灵魂能力》中是非常有趣的。因为它支持打击前帧的取消,能让玩家制造佯攻,给使用头脑的对战游戏提升了一个新的层次。《街头霸王 3 》和 Marvel 系列应用了“超杀取消”,在传统 Capcom 系列中显得十分华丽,并带来了进攻型的游戏体验。

你也会注意到,取消系统在一些需要节奏感的游戏中表现的十分出色,例如《罪恶工具》( Guilty Gear )系列。如果考虑到一个游戏中取消系统的各种变化,那真是数量众多。

一个典型的例子就是 CvS2 Capcom vs SNK 2 )中声名狼藉的“翻滚取消”( Roll Cancel ),基于一个取消 bug ,一些招式可以变得无敌。最后,变成了游戏的趣味性和竞技性的争论。但是大多数情况下,一个出色的取消系统要具有一定深度,能让玩家发挥他们的创造力,给游戏的乐趣和感官的满足都带来提升。

下面我会介绍一下关于三大主流动作游戏的一些看法。它们是:《忍者龙剑传》( Ninja Gaiden )、《鬼泣》( Devil May Cry )和《战神》(排名不分先后)。(把我正在并已经制作近 4 年的一款游戏放到这 Top3 中可能会引发一些有趣的评论,所以我就不把这游戏写出来了)

忍龙的技术性

《忍龙》是一个非常严格的游戏。它的取消系统非常严格,事实上,打击前帧做出取消判定很容易让我反应不过来。我觉得这是一个非常好的规则,构建了一个牢固的战斗系统,但它也增加了游戏的难度。玩家知道,当他们按一个键发起攻击时,必须在下一段动画开始之前完成打击帧的输入。

这个规则也有一个有趣的地方:玩家甚至不能暂停游戏,因为他们可以换武器或取消攻击。不相信?你可以试试看。忍龙是一个被设计成核心向的游戏,所以他们用一些强硬的规则来保证游戏的公平,使玩家去了解这个严格而缜密的系统。我为板恒伴信和 Team Ninja 为这个系列所做出的努力和贡献而喝彩!

鬼泣的 Style

鬼泣有很多和忍龙相似的规则,但是这是一款 Capcom 的游戏,他们抛出了一个名为战斗模式( Style )的炸弹,并且添加了许多有趣的成分。

鬼泣的主要取消系统集中在近身攻击和远程攻击的切换上。我确信所有的近身攻击都是打击后帧的取消,远程攻击是由开火速度控制的。而 5 6 种的近身及远程武器,使系统的变化更加丰富。如果再加入模式,那么效果是非常惊人的。比起忍龙的技术性,鬼泣更在于无序和华丽的招式。

毫无疑问,鬼泣是一个成功的尝试,从它黑暗阴郁的美术风格,到骄傲、爱说笑话的但丁。尽管如此,当你真正了解它时,你才能深刻“了解”它。并且这个系列有很多激进的 Fans 让你明白他们已经了解了。

战神和它的目标受众

战神与以上两款游戏不同,它支持很多打击前帧的取消,并且把这两款游戏中的一些方法组合起来。最明显的一点,就是战神不是一款核心向的游戏,没有很强的技术性或华丽的亮点,它只是一个具有纯粹砍杀乐趣的游戏。

它仍然具有一些灵光的要素。当然,那些在等待隆和但丁新的传说的 Fans 也给了我们一个机会。取消系统的规则是普遍而有目的的。我们的目标受众玩家不希望去学习技巧。他们只是想按照自己的方式去游戏。比起另外两个游戏,战斗并不是这个游戏的唯一部分。

那么关于 L1 加按键的特殊招式,为什么它们不能被取消?

这些招式显然是 Kratos 强有力的攻击方式,通过一个简单的按键指令发出。它们能立刻攻击到对手,或者使对手位于不利的状态。这些招式看起来也比较华丽,初学者看到四处闪耀的刀光,会觉得这些招式很强大。

就像我刚才提到的,其他游戏只是用打击后帧的取消,来告诉玩家:“要注意攻击前的瞬间。”而战神中几乎所有的基础攻击都能被任意取消,包括打击前帧,让玩家更轻松自如。

但是, L1 加按键的特殊技会有潜在的高伤害能力,这样就不能在打击后帧之前取消。因为这会影响到游戏的平衡性(大多情况是造成无限连)。与此同时,对于初级的玩家,他们通常要了解的是风险与回报的概念。复杂的系统会使他们觉得游戏比较困难。

我知道这会从不同角度引发关于平衡性的争论。但是相信我,我听取过各种见解,而这是我们最终的决定。不管怎样,请随意告诉我我们有多愚蠢。

你不得不面对你的目标受众,而我认为我们抓住了最好的受众群体。那些因为 4 个小招式不能被提前取消而感到失望和愤慨的朋友们,我只能对他们说,对不起,你们错过了更多伟大的游戏体验。

战神的疏漏和瑕疵是显而易见的,但事实证明,这是唯一一款能吸引日本玩家目光的美式动作游戏。我从小到大在玩日本人的游戏,我希望做出一个感觉很日式的游戏,但是又如同美国电影一般好看。战神让我达成了这个心愿。它不是完美的,但有些人觉得它做到了,这正是我们作为游戏开发者所期望的。

顺便说一下,战神的取消方面还有一些深度乐趣。如果你不相信的话,按方块键,然后输入以下任意指令。

移动   (任意方向) = Post-hit frame
跳跃  = Pre-hit frame
翻滚(回避)  = Pre-hit frame
魔法  = Pre-hit frame
投掷  = Pre-hit frame
防御(闪避 / 阻挡)  = Pre-hit frame
切换武器  = Post-hit frame"
目录
相关文章
|
6月前
|
编译器 API C#
技术心得记录:深入分析C#键盘勾子(Hook)拦截器,屏蔽键盘活动的详解
技术心得记录:深入分析C#键盘勾子(Hook)拦截器,屏蔽键盘活动的详解
|
4月前
|
JavaScript 前端开发
我为展开收起功能做了动画,被老板称赞!
【8月更文挑战第23天】我为展开收起功能做了动画,被老板称赞!
113 1
我为展开收起功能做了动画,被老板称赞!
|
Java
手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏20之enemy被攻击显示后退动画(block效果)
手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏20之enemy被攻击显示后退动画(block效果)
167 0
按键精灵设计的简单的重复输入动作
按键精灵设计的简单的重复输入动作
107 0
|
vr&ar 图形学
【Unity3D 灵巧小知识点】 ☀️ | Unity中 使用代码 激活/取消激活 某个游戏对象的方法
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、r美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。
【Unity3D 灵巧小知识点】 ☀️ | Unity中 使用代码 激活/取消激活 某个游戏对象的方法