Origin
zhuanlan.zhihu.com
Tags
简悦
项目
收藏夹
创建时间
收藏类型
Cubox 深度链接
更新时间
原链接
描述
Translated by :
Warren_Pearce 2023/3/20
notion image

导语:

这篇文章带来的内容是顽皮狗动画团队在 GDC2021 上分享的关于提升游戏场景中 NPC 表现力的细节制作,原文可以在顽皮狗的官网中找到,笔者作为一个正在学习游戏设计的学者,将这篇讲座笔录翻译为中文,分享出来供广大的玩家和想要了解游戏幕后的游戏爱好者学习,希望我可以尽我绵薄之力,帮助到想要了解这款游戏的大家,谢谢!
notion image

注意事项:

(1)文章中出现的()内的内容是原文中就存在的解释性内容,
而(____)括号中带有下划线的内容,是笔者根据需要添加的解释性内容;
(2)文章中会有大量的 “专业名称”,笔者会在文章中根据自己的理解翻译为中文,但会在()中标出原文,防止读者在阅读的过程中产生歧义;
(3)文章中大量出现的用于描述游戏场景的词汇(例如 enviroment等)本质上都是在描述当前正在介绍的关卡布局,因此不必细究,根据句子内容理解即可。
notion image

以下为讲座中的全部内容:

大家好,欢迎来到这个关于如何将《最后生还者 第二部》中队友 NPC(Allies)带来 “生命” 的讲座。
注:原文中使用的是 Allies,指的是在《最后生还者》系列游戏的大多数时间中跟随玩家的友方非玩家角色,本文随后统一翻译为 “队友 NPC”。

人物介绍:

我是 Bryan Collinsworth , 我是顽皮狗的一名游戏设计师,主要负责游戏中的玩法设计和脚本编写。
我是 Michal Mach , 我是顽皮狗的首席动画师,我负责领导游戏《最后生还者 第二部》的技术动画(Technical Animation)部门和 NPC 动画(NPC Animation)部门。
我们会留出这次讲座的前半个小时来专注于讲解《最后生还者 第二部》的队友 NPC 在环境互动玩法时的行为;
在讲座的后半个小时,我们将时间交给我们的同事 Asher Einhorn,让他来谈论制作在战斗玩法中的队友 NPC 的不同挑战。(本篇并不涉及)

首先,一些基础概念:

当我们谈到队友 NPC,也就是友方非玩家角色 (friendly non-player characters),它在这个游戏中的许多环节都陪伴着玩家,实际上是大多数环节。在《最后生还者 第二部》中,有海量的队友 NPC!
然后,当我们说 “环境互动玩法”(Ambient gameplay) 时,我们指的是一系列当玩家的角色正处于完全控制的状态下,探索、移动并与游戏场景互动的情况。
并且,不是在已经被战斗状态占用,或是遭遇到敌人的时候(游戏中也有非常多这样的情况!)
在开发过程中,我们用十足的动力来推进我们的队友 NPC 在这些环境互动玩法环节中达到更进一步的逼真效果。
但是,我们为什么要这样做???

挑战 1:

具有突破性的高保真度过场动画中的角色表现要求在游戏内的队友 NPC 也必须要感觉像动画中那样栩栩如生。
首先,我们的动画表现的效果向前迈出了一大步,这导致所有其它部分的标准都提高了(我们现在拥有这些美妙的表演、栩栩如生的过场动画),就像这个艾莉和她的小情人蒂娜:
notion image
但是非常不和谐的是,当玩家看完一段激烈的、充满情感和意义以及故事性的动画后,我们又把游戏的控制权还给玩家,让他们继续进行环境互动玩法,而此时你会看到刚刚在过场动画中生动又活泼的蒂娜一下就蔫儿了,她就像回到和那些大多数粗制的游戏 NPC 一样,只能做极少的事情。
因此,我们知道我们需要精进队友 NPC 每时每刻的游戏内表现,来尽我们所能让这些角色接近它们在动画中的生动表现。

挑战 2:

更多的关键故事和角色性格塑造时刻发生在游戏操作过程中,这要求队友 NPC 做出多个方面功能的响应。
我们在《最后生还者 第二部》中也有一揽子关键故事的时刻,它们不会只在创作的过场动画中播放… 它们发生在这些完全受玩家控制的场景互动环节。
notion image
我们知道对于许多玩家来说,图片显示的 “博物馆的回忆” 关卡是这个游戏的高光时刻,它同时也是我们今天想要去介绍的例子。但是至关重要的是,许多让这个场景变得如此令人欣喜的角色之间的互动时刻是在游玩过程中动态发生的,也就是玩家在乔尔的旁边自由探索这个空间的时候。
为了达成这个效果,我们必须保障队友 NPC 像这个关卡中的乔尔一样,保持激活状态,并且在角色互动时处于占用状态,即使是在那些最小的,或者是最容易被错过的互动元素。我们也必须给它们(指队友 NPC)灌输它们处于的环境、以及对玩家的感知意识。

挑战 3:

高度细节化的 “广线性” 环境要求队友 NPC 可以做到写实地在环境中探索并引导玩家的方向。
notion image
现在,让我们谈论一下游戏环境!相比于《最后生还者》(本系列游戏的前作),这部游戏的环境是更加大范围、开放、多路径的。西雅图市区这一关是其中最开放的关卡之一,但即使是后面的博物馆关卡或是水族馆关卡,都是我们叫做的 “广线性”(Wide-linear)空间。这些环境可以被玩家出于各种不同的目的和处于不同的节奏探索。
这种对环境探索的开放性要求队友 NPC 可以一直跟得上玩家,但是需要让它们自然地这样做,并且有独立的感觉(而不像是被玩家牵着鼻子走,比如简单的跟随玩家位置移动)。
我们想要队友 NPC 们感觉像是它们第一次来到这个环境,并探索这些区域(就像玩家一样)。
真的,就像它们在和玩家 “合作探索”。

挑战 4:

《最后生还者 第二部》拥有比以往任何的顽皮狗游戏更多的队友 NPC——11 个人类队友 NPC 加上一条狗!
notion image
最终,正如我之前提到的,我们在游戏中拥有的队友 NPC 数量远超任何以往的顽皮狗游戏:
11 个人类加上一条狗。并且它们全都有着完全不同的体态特征。
我们需要建立一个系统,可以给我们提供一个可以在大量不同角色上通用的、真实的环境互动行为,并且还需要让它们彼此具有各自的特点和一些不同的地方。

以前的队友 NPC 系统:

所以这些就是我们需要面对的挑战以及我们为自己设立的目标。
现在,让我们讨论一下先前存在的为队友 NPC 提供的系统和工具。(即使来到《最后生还者 第二部》的开发当中,我们依然使用到了这些在先前的项目中开发出的系统)
这些绝非是让人嗤之以鼻的,并且它们本身被认为是在《神秘海域 4》和《最后生还者》中对队友 NPC 的逼真程度具有开创性的提升。但我们也立刻感受到了一些限制。
我们有一个限制性的动作捕捉资源库,我们叫做影视化动作包或者 CAPs(Cinematic Action Packs),这个资源包中的动画只能在世界中的某个确切的位置播放。
(因为动作捕捉的动画制作是有限制的,这些动画资源通常是最常见和最特殊的,基本上角色的行为会与特定的场景布局相配合)
这些 CAPs 是很难去调整到其它的应用场景中去的,而如果你真的这样去做了,玩家会轻易地在游戏过程中注意到那种刻意拼接造成的 “缝合感”。
我们拥有一个队友 NPC 的探索行为,但是它们只能通过随机播放或者循环播放制作好的动画的方式与世界产生交互。它们从不会停止,它们会严格地专注于它们的下一个目标,这导致它们表现出 “机械感” 或者你可以说它们看上去像是 “着了魔” 一样。它们甚至不会注意到玩家,即使玩家从它们的面前走过,也不会有任何反应。
我们也制作了一个引导的行为,让队友 NPC 们可以利用限制样条路径(limited spline paths)来引导玩家的方向。但是,“多亏了” 它们的移动系统,让它们一直挣扎于诸如通过发卡弯、走回头路、跟随玩家或者对玩家的速度变化做出足够的响应这样的问题中。甚至像停在某个地方或是在一个自然的地方原地等待这样看似简单的行为实现起来也十分困难。
最终,我们开发出了头部视线系统(head look-at system),NPC 们的移动可以只对玩家和世界做出反应,但是这个系统还是远远无法达到像真实人类的全身动作那样的复杂度(比如倒退行走)。
实际上在我们过去的游戏当中,伙伴们常常没有任何环境意识。
(这里指的是在以前的顽皮狗游戏中,并不存在一个专门控制 NPC 与游戏场景互动的系统,而不是说这些队友 NPC 无法与环境产生互动,比如《最后生还者》匹斯堡关卡中,艾莉和山姆可以在场景中坐在沙发上聊天、可以一起玩飞镖、一起踢足球等,而这些互动都是设计好的游戏内动画演出,并不是角色与环境的互动)

以前的探索系统:

这是一个关于队友 NPC 环境互动行为的小例子:(来自 2019 年 9 月的一个可玩 Demo):
这里的蒂娜在随机次序地在这个空间内预先设定好的特定点位播放指定的少量动画。而正如我们上面所提到的,当我们看到她的这些行为时,那种 “缝合感” 显露无遗:
比如她可以冷不丁来一个 180 度大转向;“之字形” 穿过一个房间;或者她可以笔直地走到下一个动画的位置,即使她看上去根本不知道那是哪儿,也不清楚她为啥想要到那去。
根据上述的现象,她并不会真的感觉她对这个空间是有感知的,或者像一个真实的人类会做的那样,以好奇心为基础来进行有条理、系统性地对场景进行探索。
就像有人看到这种现象时提到的,她看上去像是 “中邪了”,就像是在她脑子了有一个声音在告诉她下一步需要去哪。

改进系统的步骤:

为了将我们的队友 NPC 环境互动行为推进到下一个级别,我们开始专注于那些真正需要队友 NPC 并且承载场景互动元素的少量的关键玩法。
作为一个出发点,在我们把这个关卡进行到底的这一系列的过程当中我们会只去关注我们的队友 NPC 做了什么。
然后我们开始商议和辩论甚至表演出来我们期望的真实的人类在这些情景下的行为(这与它们处于的环境和玩家的行为都有关系)。
接下来,我们开始迭代我们的动画、设计、系统和程序来让我们的队友 NPC 在这些时刻的行为更加接近人类,理想状态下和我们自己一样。
剩下的半个小时,让我们深入地观察一下这两个场景,它们都很确切地体现了我们是如何为队友 NPC 带来生命的。

博物馆:

1. 动作捕捉表演(Mocapped Performances)

2. 探索系统 (Explore System)

3.“观察四周” 动画表演 (Lookarounds)

notion image
首先,博物馆。这是一个闪回场景,乔尔(队友 NPC)带着艾莉(被玩家控制的角色)去到一个废弃的博物馆作为她的生日礼物。

挑战与目标:

对与这个场景,我们的挑战和目标是什么呢?
首先,正如你可以在上方看到的,这里没有设置成一种致力于让玩家通过的空间。玩家可以按照任意的顺序和速度自由探索这个博物馆场景。
同时,无论玩家在这里做什么,乔尔必须真的看上去在和玩家共同探索这个空间。在这里,机制、玩法、讲述故事的角色性格和语气都是很重要的。
艾莉对这里的恐龙和其它的好东西都超级上头。作为队友 NPC,乔尔也必须看上去可以意识到这个空间里的哪些事物是有趣的、刺激的。并且对这些事物和激动的玩家角色做出适当的、符合他性格的反应。

队友 NPC 的动画表演:

站在动画的角度,我们已经通过给乔尔(队友 NPC)提供数百个简短的(大概每个 5 到 30 秒)动作捕捉动画表演来解决上述的需求。
这里的动画表演有三个主要的种类:
(1)动作资源包(Action Packs):
动作资源包是一个动画表演的集合,里面的动画资源只在场景中的某个具体的位置播放,来让艾莉(也就是这个场景中玩家操控的角色)似乎意识到他们所处于的环境(起到引领玩家探索场景的作用,这部分包含很多隐晦的指示性动作,来吸引玩家探索场景中的元素)
(2)待机动画表演:
待机动画表演以及角色自身的动画。它更像是传统的角色待机(就是当角色停止时播放的动画),不过这些动画主要的目的是向玩家传达这个时刻角色的语气(配合台词的肢体动作)以及展现各个队友 NPC 的性格。
(3)探索风格的走路动画:
队友 NPC 们需要有在不同的动画表演中移动的能力,但是默认的移动动画看上去太刻意了。所以我们决定给队友 NPC 提供一个新的探索式风格的走路动画,让它们与角色表演出来的情绪更匹配。
好了,现在让我们谈论这些动画表演中更细节的地方:

影视化动作包(Cinematic Action Packs)(CAPs)

影视动作包(CAPs)是我们在许多以前的项目中用到的原始动画表演。
这里面的资源在我们需要 NPC 们与环境互动时很好用,但是这些资源有许多缺点:
(1)它需要你为它再定制一套开始和结束动画才能让这个动画表演的过渡效果看上去不错,但是这就意味着它们其实创作成本很高;
(2)由于它们是与场景的布局适配的,所以有时候你很难把它们准确地放置到关卡当中去,因为我们并没有一个很好的可视化工具来对齐这些几何图形。
(3)它们的复用性通常很受限制,其中一个原因是我们搭建的游戏中的自然环境并不使用我们在游戏关卡中设置的度量标准,另一个原因是每个动画表演的独特性。这些动画表演都太有特色了,所以你要是逮着一个猛用就会很明显。

定位动作包(positional Action Packs)

notion image
在《最后生还者 第二部》中,我们引入了一个新的动画资源包叫做定位动作包。
(1)不像 CAPs,定位动作包中的资源不包含与环境有身体上的交互表演。它们会被放置在某个位置点,并且设定好动画的朝向,好让这些动画播放的时候令队友 NPC 看上去对这个世界是有意识的。
(2)自从这些动画不具有交互属性开始,我们还是整了个 “摆弄房间”(这里比喻的是给动画设置的坐标和方向提供了一个随机变动的范围),这样 NPC 们的那些动画就没必要在定位和朝向上做到那么精确,这样看上去就更可信,更没有那种 “机械感”。
(3)动作与移动的衔接帮助队友 NPC 在过渡到各个想去的坐标点以及面向角度时更加丝滑。
(4)这些动画表演非常容易去制作,因为它们不再需要定制一套开始和结束时的衔接动画并且使用这个资源包的角色也不会触碰任何东西(意味着你也不需要调整环境布局了)。
(5)相比较 CAPs,定位动作包中的资源最大的优势是——它可以巧妙地避开多次使用时产生的氛围感破坏。(这样一来,这些资源的复用性就大大加强了)
打个比方:当你看到乔尔隔两分钟就以同样的方式打开同一个抽屉一次时,你马上就感觉到有点奇怪了,但是你几乎很少能够注意到他围着那个巨大恐龙化石参观的时候,使用的都是同一个不易察觉的观察动画(只不过根据他的位置改了一下角度而已)。
(6)在开发的过程中,我们更倾向于使用这种定位动画资源,正如上面所介绍到的,它对精度的要求更低、还有着更强的可塑性。

待机动画表演:

最后一种动画表演是待机动画表演。
它们的特点是以它们本身为中心的或者说是内在的,因为它们也不与环境互动。
它们还是需要对环境有感知,比如当这些待机动画在播放时太靠近玩家或者面对墙壁播放时,都会看上去像是出错了。理想状态下,这些动画应该在场景的中间地带播放。
我们已经捕捉了许多的待机动画,足以满足多个队友 NPC 和不同的游戏节奏,不过我们也为每个不同的队友 NPC 留了至少一个独特的待机动画。
(比如列弗就有多个非常具体且独特的待机动画来刻画他在游戏中的性格变化曲线。
列弗在你最开始见到他时,是一个很内向的人,但是当你把剧情推动到芭芭拉章节时,他的待机动画表演已经和最开始产生了巨大的差异。)

探索风格的行走方式:

这是动画难题的最后一部分,也就是动画表演之间的动作。就像我说过的,我们为我们的队友 NPC 打造了全新的行走动画,至于原因… 你可以清楚地在这个视频里看到:
蒂娜的默认行走太快了,她看上去像是开会要迟到了。而另一方面,乔尔的行走所展现出来的速度和能量则更接近我们想要他表达出的情绪。
自打我们决定开始在一两周的时间里制作一套像这样的 “动画匹配集”(motion matching set),我们清楚这是一个耗费巨大的选项,不过这完全是值得的。

探索系统:

notion image
接下来,我们需要需要一种方式让像乔尔这样的队友 NPC 们将上述的这些所有新的动画表演连接到真实的、动态的探索过程当中去。
即使现在我们已经有了一大堆全新的动画资源,当前的系统依然只是把这些动画随机调出来播放,或者明显地循环播放它们。我们真正想要的是给我们的 NPC 们提供一个代理权限让它对环境和玩家具有意识(类似于一个中控状态机),并且利用这个 “意识” 来选择更有逻辑性的下一个目标或者动画表演。
正当我们抓耳挠腮的时候,我们的程序员们指出,已经有了一个在游戏中的其它地方使用的和我们的需求非常相似的系统,我们一下就有了一个飞跃式的进展。
他们提到的这个系统就是顽皮狗在以前的许多游戏中开发出来的 敌人 NPC 在遭遇战中使用的哨点选择系统。(顽皮狗的战斗 AI 设计中有详细介绍到这个系统:Post Selector System)
我们意识到我们可以通过修改这个系统来帮助我们的队友 NPC 在环境空间里的导航(或者说走位)更有逻辑性——就像你在演示中看到的乔尔那样。

探索系统——哨点:

哨点选择系统是如何工作的?
首先解释一下哨点的部分:“哨点”(Posts)基本上就是在场景中设置的 NPC 可能想要移动到那里去的点位。在它原有的应用场景(也就是战斗场景中),例如周围有掩体的点位和有高低差的点位这样有利于战斗的点位会变成 NPC 们潜在的选择目标。
notion image
但是在我们的环境探索系统中,我们为哨点重新设置了一套新的布局。
哨点现在在场景中的位置是为了方便让队友 NPC 可以在那里播放我们动作库里的某一个探索动画或者待机动画时,看起来很合理。
如图所示,每一个在 Debug 界面显示为像是 “颠倒的绿色棒棒糖” 的东西就是哨点。你可以看到有一些哨点被放到了场景中指示牌的前面,或者在恐龙化石的下方——这些位置都可以让乔尔可以在那播放一段具体的、具有环境意识的定位动作包里的动画。(表现出来的效果就像是他真的在读那个告示牌、或者真的在凝视那个化石)
接下来,对于那些专注于本身的待机动画,我们把它们放置到了可以在一个规律的间隔时间上刷新的自然生成的点位上,我们叫做 “徘徊哨点”(wander posts)。这些哨点分布在场景中那些可以到达的开放区域当中。
我们发现真正打破早期使用的队友 NPC 系统的那种混乱、机械的感官的,其实是当我们成功让我们的队友 NPC 们可以时而移动去响应玩家的行动;时而播放世界交互的动画,然后游荡到那些位于房间中间的开放的点位;然后又开始整理他们的衣服、或是挠头、或是做一些带有他们性格特色的独特待机动作。

探索系统——选择器(selector)

但是,队友 NPC 们如何选择它们下一个想要去的哨点,在逻辑上看起来才像是人类呢?
实际上,每次当队友 NPC 需要走到一个新的地方时,我们为队友 NPC 周围的上百个哨点评估了一大揽子不同的标准,每一项标准在这套评估系统中都占有一定的权重,每个哨点会在所有标准的打分和权重计算之后得到一个总分,得到最高分的哨点会成为队友 NPC 选择的对象。
在这个图片上你可以看到一个已经选择的哨点,也就是标记为 “1” 的那个点,在 debug 界面中它被显示成了圆柱体,还有那些关键的标准分数以及权重也在屏幕下方显示了出来:
notion image
我们也列出了我们偶然发现的一些对于队友 NPC 的探索最重要的几个标准。
前几个比较重要的点是:
(1)哨点与队友 NPC 的关系,如果一个哨点包含在一条理想路径的里面——距离队友 NPC 又不远又不近,那它就会获得一个较高的分数;
(2)如果它包含在队友 NPC 面向的视线角度之内,它也会相应的获得高分;
(3)但是如果这个哨点太接近墙壁或者是队友 NPC 刚刚才去过的,那它就会在这时被打低分,或者甚至直接被忽视成为一个选项的可能。
剩下的三个标准是关于和玩家好好相处的。即使有那么一个哨点是比其它更好的,但是到那去会让队友 NPC 距离玩家现在的位置太近以至于玩家都替游戏中的角色感到尴尬了,或者离得太远,我们依然会给这个点打低分。
反过来说,我们就是给当前玩家屏幕中的哨点提供了额外的分数。
我们马上会给大家展示这个探索系统在 Debug 界面下工作的视频,并且实时讲解它。
但是首先,这里还有个 One More Thing…

“观察四周” 动画表演:

现在我们以及拥有了各种需要的小零件了:智能哨点选择器、广阔的动画资源库、还有合适的位移系统。但是我们的队友 NPC 看上去还是很木讷,因为它们总是神奇的知道下一步需要上哪去了。我们需要以某种方式可视化一种 “思考” 的过程(也就是把哨点计算的过程具象化出来,让队友 NPC 看上去在思考下一步要去哪)。
于是我们又特意为这个 “思考” 的行为捕获了一系列简短的过渡动画,并且也是有不同的角度和方向的。在大多数动画表演结束、下一个哨点已经被选择时(因为这个过程很快,往往在这个 “思考动画” 播放之前,选择器就可以计算并选择出下一个哨点),队友 NPC 会播放一个 “观察四周” 的动画表演,表现出它们在探索周围,等这个动画结束后,选择器才把刚刚计算好的到达下一个哨点的方向和路径授予这个队友 NPC。
通过把以上的表演整合起来,终于让我们的队友 NPC 表现得像一个人类了。

把它们全部整合起来!(利用 Debug 界面观察):

好的,这就是现行的系统。
你可以看到他是怎么寻常的选择位于他前方的哨点,而不是上来表演一个 “面壁思过” 之类的。他一直保持在玩家的视角当中,并且和她(玩家的角色)保持一个相对的距离,但是并没有挤压她的空间。而且他还可以时而做内在的待机动画(比如擦他的靴子)、时而做一些环境互动(比如盯着天花板)。我们设置了一堆变量,基本上在任何时候,只要玩家把镜头对着乔尔,他都会表现得很积极、对这个世界很投入。
通过带来那么多多样的小动画来完成表演,再让乔尔通过一个调整好的哨点选择系统来有条理的选择他想去的地方,再把这些内容通过短暂的 “观察四周” 动画整合起来……
我们就这样创造了像这样的队友 NPC 行为,给人的感觉就很接近于真的有一个叫做乔尔的人陪着艾莉去一个真实存在的恐龙博物馆。

水族馆

1. 引导系统(Lead System)

2. 移动动画表演(Move Performances)

3. 行为过渡(Behavior Transition)

notion image
现在,让我们转向另一个例子,和刚刚阐述的,我们开发的其它核心的队友 NPC 系统
又是完全不同的玩法。
我们直接跳到 “西雅图废弃水族馆” 这个关卡。玩家在这个关卡中游玩的是艾比(《最后生还者 第二部》游戏中的另一个可操作的主角),她现在需要帮助画面中的这个年轻人雅拉在这个水族馆中寻找她丢失的弟弟。

挑战与目标:

除了要探索非线性的空间,我们频繁地面对一个不同的、但是与队友 NPC 的行为同样重要的行为需求,就像下面列出的这种情况:
雅拉必须要利用一个相对线性的搜索路线来引导玩家,并且在此同时,也要让玩家在被她引领的时候感到雅拉这个角色是生动的、有意识的、对周围环境是投入的。
我马上要来逐个谈论我列在这里的挑战和目标,不过先让我们跳回到演示这个玩法节奏的视频。

在水族馆搜索——天然的、原始的玩法:

对于队友 NPC 引导行为最基本的目标是让 NPC 以一种动态的、简洁的、容易跟随的方式保持在玩家前方。
你可以看到,只要玩家保持向前移动,雅拉就会坚定地走在我们前方的道路。
但是雅拉在此并不只是像一个机械化移动的球门柱一样。就像《最后生还者 第二部》多数的引导类队友 NPC 一样,她有一个清晰的叙事性动画来展现她现在正在干啥。雅拉想要找到她丢失的弟弟的这种欲望牵引着她前进,并穿过这个空间。与此同时,她的注意力又时不时的被拉回到玩家的角色身上,因为她想要让玩家的角色参与到她弟弟的搜索当中。
于是我们需要许多超出基础引导技术的内容:我们想要雅拉大声呼喊、还要对她的弟弟吹口哨;她还要动态地转向并且还要对每个房间和转角这些弟弟可能躲在的地方仔细端详,然后再转过头来和主角对话并问问题——这些所有的附加动作都从不会打断她向前的动画!

引导系统:

要达成这些目标,我们的第一步就是去提升我们的队友 NPC 引导行为系统。
这个视频有一些 debug 显示了这个系统基本上是怎么运行的:
地板上的绿线是一个由关卡策划放到这个关卡中的样条曲线,我们想要队友 NPC 沿着这条路径来引领玩家;
那些垂直的条状标识是这条样条曲线上的点或者说是节点。队友 NPC 引路的机制就是通过这些节点来移动——但是要是玩家没跟上队友 NPC,或者玩家往反方向走了,它们就会停下来并且在下一个有效的节点等着玩家,因此我们很小心地把这些节点放置在场景中显得自然、合理的位置;
最后,这些绿色、橙色、蓝色的面板,或者你叫做 “片儿”(blades),显示的是由关卡策划设置的距离标识,用来显示在玩家面前有多远是队友 NPC 在带领玩家的过程中,想要和玩家保持的距离。
其中最重要的是那个绿色面板——那就是雅拉 “认为” 的最理想的距离。
只此一项就已经给《最后生还者 第二部》中我们的引导系统带来了关键的提升。看看在向前走的过程中,雅拉几乎都保持在那个绿色的理想距离附近,也没有任何奇怪的速度、方向、动画上的变化。
新的动作衔接技术(这与前面提到的用于衔接 CAPs 中的动画资源的衔接动画并不相同,而是指在移动过程中衔接移动动画表演的技术,后面会提到)
以及非凡的程序设计把这种现象变成了可能。
这些更深层次的魔法(指代码和算法层面的实现)让我们为关卡设计师们简化了系统,这样我们就可以把注意力放到如何让队友 NPC 的玩法更逼真这一真正重要的地方了——就是对这个引路队友 NPC 的语气和性格的塑造。
真正传达这些内容的是例如这些因素:
一个队友 NPC 在带领玩家时认为的 “理想距离” 到底应该是多少?
它们停下来等玩家时的那些动作细节等。
因为这是一个需要玩家大量参与的、在室内空间的紧急搜索,我们让雅拉的理想引导距离保持得相对紧凑(为了那种紧张的氛围)——她只在艾比前方几米的地方。而且当她停下的时候,我们调整了她的角度,她会转过头来,以一个不错的角度面向玩家(大概 90 度,就像我们在现实里等自己后面的人会做的那样)。因为这相当于创造了一个肢体语言,真正捕捉到了雅拉当时的一种紧张感:一方面想要用躯干继续前进,另一方面又催促玩家赶紧贴在她后脑勺跟紧了。
不过设计师也可以调整这些设置,来让队友 NPC 表现得更漫不经心、更放松,或者自由变化的引导行为,以便在其它的游戏场景中使用。

返回式引导:

在营造我们的队友 NPC 引导行为的真实性这方面来说,让队友 NPC 可以返回是一个巨大的进步。
在以前,我们的策划总是需要调整一大堆设置和参数来控制 NPC 往回走的距离,但是都始终得不到我们想要的结果。
在《最后生还者 第二部》的开发当中,对于这方面的另一个突破性的时刻,就是我们注意到了当人类需要回头去找那个跟着自己的人时,两人之间的距离这一指标的重要性远远不如另一个基本的事情——就是视线
在此序列,如果玩家在跟随队友 NPC 的过程中停下来了,或者掉队掉的太远,以至于我们都看不到雅拉了。这时候雅拉并不是只是沿着样条曲线回头走多少米的距离,而是一直往回走到她可以再次看到玩家的那个位置的第一个节点,同样的,玩家也会在这时候看到她!
这其实比给她设置一个固定距离要简单,但是当你看到效果之后反而更有感觉!

移动动画表演:

但是当雅拉在运动中转身的时候,这些点又是怎么回事呢?
这就是另一个我们想要点出的关键元素——“移动动画表演”(Move Performances)。移动动画表演是特殊的运动,这些动画表演同样也是由动画捕捉技术制作的,特殊点在于这些动画表演的播放是 “在运动中”(while in motion)的,(也就是说是在角色移动的同时播放的角色的身体动作表演)比如转向一侧、倒退行走、或者甚至在行走和讲话的同时,来个 360 转体吸引玩家的注意力。
为了触发一个移动动画表演,一个策划首先在关卡中放置了 “兴趣点”(points of interest or POIs)。这些点的作用差不多就和它们的叫法差不多:就是一些存在于游戏世界中的可能引起游戏中角色兴趣的位置点。
这里,举个例子,我们在雅拉寻找弟弟的这段路程中的每一个水族馆的房间都放置了一些兴趣点。
我们稍后就会详细介绍,不过我还想要提出一个在开发后期出现的突破点。最开始我们只是在环境中放置静止方位的兴趣点。但是我们意识到把一个兴趣点附在玩家角色的头顶上也能触发更多的动画表演,当玩家控制的主角与队友 NPC 对话的时候,在对话的关键时刻把主角头顶的兴趣点打开或者关闭,我们就可以以这样的方式在队友 NPC 转过来和玩家对话的时候来促使它们播放移动动画表演。
(也就是说,相比于场景中放置的那些兴趣点,玩家控制的这个主角就是一个移动的兴趣点,那么当游戏中队友 NPC 与主角对话时,就相当于触碰到了一个兴趣点,就可以有权限播放移动动画表演了)

Debug 界面下的移动动画表演:

notion image
我们的挑战在于队友 NPC 们在这个过程中还是可以在多个方向上移动的,或者是以一个多变的速度经过某个位置点。
为了找到最好的衔接动画,移动动画表演系统(the move performance system, 提供移动动画表演的系统,用来控制 NPC 的移动动画表演的)根据兴趣点的类型和移动速度来筛选列表中超过 100 个可用的动画,再从筛选过的列表当中尝试选出一个合适的候选动画来衔接角色现在的姿势,再调整到兴趣点的位置或方位,并且我们还要检查这个动画的播放轨迹是否和剩下的导航路径接近。(由于是移动中的动画,角色会有一些走位,可能会偏移导航使用的样条曲线)

Debug 界面下演示移动动画表演:

总结一下,让我们在 debug 界面的加持下再看一遍这个演示片段:
任何你看到的绿色的球形就是一个兴趣点,当队友 NPC 经过它时,成功触发了一段移动动画表演。有些兴趣点被放在了场景中,然后… 在对话中,你会看到主角的头上突然出现了一个兴趣点。
任何时候你在这个屏幕上看到的那一大堆红色绿色的东西——那显示的是移动动画表演系统在检测附近的兴趣点,并且探查一个合适的移动动画表演和它匹配。通常情况下这个过程发生得贼快,你基本看不到检测的过程显示出来,系统就已经匹配到合适的动画然后开始播放了!

一张 “美女写真” 结束这段演讲:

notion image
好了,这就基本上到了我们今天所有的时间了,我们非常激动把剩下的半个小时时间交给 Asher Einhorn 让他来介绍战斗中的队友 NPC,但是首先…..

谢谢大家:

Vinit Agarwal
John Bellomy
Richard Cambier
Sylvia Chambers
Morgan Earl
Asher Einhorn
Jason Eldred
Travis McIntosh
Kareem Omar
Almudena Soria
Alex Stewart
Laura Swartz
Karina Villanueva
这完全是大家同心协力的成果,我们还有无数的人想要去感谢。基本上顽皮狗工作室的所有人都以某种形式参与到了 “赋予队友 NPC 生命” 这项事业中来了。
以上这个名单中的各位在我们今天介绍到的所有系统当中都起到了决定性的作用。其中的任何一位都有资格站在我们现在这个位置上来讲话;我们想要确保他们被大家认识,我想告诉大家,能够代表他们并向大家展示这只队伍的作品是我莫大的荣幸。谢谢!

▎本文由 简悦 SimpRead 转码。