建立海盗的天堂:盗贼之海的AI设定(二):骷髅和鲨鱼AI的秘密

作者:Tommy Thompson 游戏邦编译 2019-10-10 1.2k



在本系列的第一篇中,我探索了AI系统在游戏中的运作方式,三大主要活动任务是如何生成的,以及开发人员如何才能让服务器承载所有的AI活动,合理分配资源。获得Rare公司的邀请后,我有很多话题想讨论。开发者就游戏发行时的一些AI相关问题为我们做出了解答。首先,我们将探索在藏宝岛上游荡的猪、蛇和骷髅:它们是如何运作的?骷髅AI行为背后有什么样的惊人秘密?除此之外,我们还会深入探究Rare利用虚幻4引擎创造出的独特水上导航系统,以及了解一下阻止AI鲨鱼游到陆地上是一件多么困难的事。

陆生动物的AI构建

让我们先简单查看下这些动物。就如系列第一篇所说的,《盗贼之海》的其中一种主要任务来自于灵魂秘社:你得去往一个或多个指定岛屿,杀掉高级别的骷髅,用他们的头骨换取奖励。这就要求游戏在必要时将大量骷髅刷新在某个地点,但如果你这时已经取得了淘金者或商人联盟的悬赏物,正在返程的途中,骷髅也会出现。

1.骷髅AI

那么,这个系统是如何运作的?它依赖于一种叫做行为树(behaviour trees)的常用AI范例,这是虚幻4引擎中自带的AI工具。正如我在AI 101系列最新一集中说到的,行为树的特点是可以扩展逻辑,形成多个分支,所以在特定的场景中,AI将做出一个或多个反映场景的决策。此外,他们可以对世界的变化做出快速反应,更新自己行为选择以适应变化。我们在第一篇中说过,很多陆地活动角色,比如岛上的骷髅、动物(我等会儿就展开)都是用虚幻4原本内置的AI工具链。但是骷髅有个特别的地方我想探究探究,自创办《AI与游戏》系列以来,我未曾见过如此独特的设计。


当AI角色出现在游戏中时,尽管你想要确保它们能够使用某些与玩家角色相同的机制——尤其是类人AI角色——但当你构建AI时,通常的思维是角色会使用另一种运行方式的来执行这些行为,跟玩家的操作逻辑完全不同。你会有一个指示执行某个动作或行为的逻辑,在虚幻引擎中,你可以在蓝图中的行为树编写任务,逻辑通常会调用代码中的现有函数——玩家会用这个函数来执行类似的指令。就拿《盗贼之海》举例,你想要在受伤之后补血,这时你会打开物品栏,拿出一条香蕉,按下RT键或者鼠标左键吃掉,这就触发了玩家代码库中的Heal()函数。一般来说如果你想让一个AI角色——比如骷髅——做一样的事,你的逻辑或者是直接运行一样的Heal()函数或者是运行一个为非玩家角色编写的类似函数,并且你要确保吃香蕉动画能够让玩家理解对方也在做同样的事情。所以总结来说就是看起来是在做同样的事情,但实际运行方式是完全不同的。

所以你们可以想象一下我当时有多震惊——坐在Rare办公室里,开发者Rob Massella和Sarah Noonan告诉我骷髅AI其实是在模仿玩家的输入。因此,他们不是简单地触发特定的行为代码,而是相当于用虚拟的手柄/键盘输入,像人类一样“玩”游戏。此外,骷髅使用的基类控制器跟人类玩家是一样的(或用虚幻4术语来说就是Actor,可放入关卡中的对象都是Actor),这意味着双方不仅共享某些动画,而且还共享输入接口。我们再回到香蕉的例子,一个想补血的骷髅,它实际上是按下了虚拟按键,从物品栏中拿出香蕉然后吃掉。


值得一提的是,地面上的运动使用的是岛上的导航网格系统,通过它实现四处走动。这种设计非常惊艳——通过额外的基础数据工作,将AI的特定交互或行为解析为玩家输入,这样就确保了骷髅只能成为玩家的影子,玩家不能做的动作它们也不能做。某种程度上来说这也是有道理的,鉴于他们是……呃,死不了的人类,但更重要的是,这有助于简化骷髅AI的测试——如果你看到他们做一些玩家做不到的事情,你就知道哪里肯定出了问题。从理论上讲,这意味着如果开发者为玩家添加了新的游戏机制,一旦写完了代码,骷髅也有新的内容了!

考虑到这种设计可能需要一些时间去习惯,Andy Bastable向我解释说负责玩法设计的团队会给新手开发者布置一个小任务,帮助他们掌握工具链。开发者要做的就是创建一个“流浪乐队”,一群骷髅必须聚集在一块土地上,拿出他们的乐器,开始一起演奏一首歌。

现在,所有的AI行为都是在服务器端进行管理的,就像你们在之前的Tom Clancy《全境封锁》案例研究中所看到的那样,这样确保了每个设备上的玩家在与AI角色交互时都拥有同样的游戏体验。但还有平衡问题需要解决,正如我在第一篇中提到的,游戏内置的系统会根据玩家的情况调整骷髅的数量和难度。骷髅的行为和基本的游戏参数(如血量和可用武器)可以改变,种类也相当多,迫使玩家使用多种攻击策略来击溃他们。在第一次玩的时候,骷髅移动速度比较慢,攻击性不强,只会用利爪或者是长刀攻击。随着玩家在灵魂秘社的等级逐渐提高,骷髅拥有了以前没有的技能:它们可以更快地发动攻击、更高效地追击、面对攻击懂得后退、用香蕉治愈自己,甚至开始使用手枪和喇叭枪攻击。这一切都是通过使用数据库来实现的,它可以在运行时将函数写入AI角色中,决定这个骷髅会做出什么样的行动。其中包含了50多个独特的参数,促使骷髅出现多样化的属性和行为。


2.动物行为

尽管游戏需要在指定岛屿上制造威胁,但这些地方除了敌人还有各种野生动物:猪、鸡和蛇。它们可以是你在躲避骷髅军团追杀时遇到的又一个大麻烦,它们可以是商人联盟的悬赏物,也可以只是为环境加一点生气。

这些角色也使用行为树,尽管它们的架构与骷髅非常相似,但它们好对付得多:玩家只有在靠近蛇时它才会主动攻击,而猪和鸡则会马上逃离。就跟骷髅一样,数据库的使用能够帮助开发者指定特定动物的行为表现。

在第一篇中我就说过,考虑到负载管理,动物的处理方式与骷髅基本一致,如果它们正在消耗的这些服务器资源用在别的地方更值得,系统可以在必要时让它们进入休眠或者消失。

鲨鱼&导航系统

我们分析了所有陆地上的AI角色,那么海里的呢?让我们来看看玩家的第一个真正威胁——埋伏在海洋深处的鲨鱼,很多很多鲨鱼。

从设计的角度来看,鲨鱼是为了给玩家增加一个新的挑战,确保你不会在水中无所事事,时刻警惕着危险。它们只在小范围、必要时生成。也就是说,你不会在开放世界里偶然遇到一只在海里游泳的鲨鱼,相反,一条鲨鱼会被传送到你附近。如果游戏你觉得你在水里闲得太久了,鲨鱼就会尾随你。


因此,尽管鲨鱼的行为树结构相对简单——它们只会对猎物进行围捕或攻击——但有两个明显的问题需要解决。第一是导航:你要怎么确保AI鲨鱼知道如何在水中移动。通常来说,我们会使用导航网格工具来实现在静态表面物体的移动。这对陆地角色来说是行得通的,因为导航网格是一个二维的平面,模拟物体在三维空间的移动。然而,这并不适用于形状不断变化的表面或体积不断变化的空间,例如水和空气——这意味着你需要定制的一个特别的解决方案。这并不是只有《盗贼之海》遇到的问题,我最近研究的《地平线:零之曙光》也有类似的麻烦——Guerilla Games不得不为空中的敌人单独做一个导航系统。

Rare公司正面攻克问题的方法是构建另一个导航系统,集成到虚幻引擎中现有的导航框架中,但专门针对水下运动。然而在这之前,还有一个设计问题需要解决:鲨鱼不能停下来。虽然不同种类的鲨鱼之间有所差异,但大多数现实中的鲨鱼需要保持运动才能呼吸。所以AI角色也需要复制这种行为:以不同的速度在预定轨迹上游动,期间还要不断微调鲨鱼的运动方向。所以运动系统不仅要确保AI角色能像鲨鱼一样在水中穿梭,它还必须还原鲨鱼的动态细节。


除非鲨鱼被指示去攻击玩家,否则它们一般都是在按弧形轨迹游泳。这是通过计算既定直径的圆弧来实现的,它会影响鲨鱼在运动时的转弯速度,设计师可以调整鲨鱼沿着圆弧运动的速度。同时,速度值被发送到运动组件,这样玩家就能从动画中感觉到鲨鱼运动速度的变化。导航系统指定一个二维或三维空间的地点,然后创建一个适合该位置的自然弧线,让鲨鱼游过去。

开发团队在鲨鱼的转弯速度上下了很多功夫。以这种方式运动可以防止鲨鱼在高速时转向过快。如果鲨鱼需要做一个急转弯,考虑到它即将攻击玩家,速度会慢下来——当然不可能会减速到静止——并确保它在再次加速之前与玩家速度保持一致。但是鲨鱼的运动有一个可接受的误差范围,它们有时会超过它弧线所指向的目标,但前提是它们不会与任何障碍物相撞——我马上讲到。这么处理很好,鲨鱼的运动看起来会更自然。

大部分的运动都是在2D空间设定下,这意味着玩家和鲨鱼在水中是处于同一深度。如果没有,鲨鱼会像往常一样按弧形路线游,但会另外生成一条简单的贝塞尔曲线,让它可以游上或游下到相同的深度。


这很酷,但是会出现一个大问题:相撞。鲨鱼需要避开船只和岛屿,它们依靠虚幻引擎的环境查询系统来发现附近的障碍物,但它们也有短距离的触须式传感器,以防它们会迎面撞上船。这是非常重要的,由于它的游泳轨迹是弧线形,它有极小的可能会在某个小岛上搁浅……这显然是开发过程中一个更为棘手的问题。

为了维护代码库,鲨鱼导航的源代码是虚幻引擎现有导航、移动和AI控制器代码的扩展。由此一来,开发人员的工作就比较轻松了。因为鲨鱼导航的设计目标之一就是让它的运行方式与陆地的基本一致,并且为了测试加以简化,你可以在本系列的后几篇看到关于此的更多内容。

总结

即使是3A游戏中的一个最简单的AI角色,制作起来都可能要耗费大量精力,如果中途出现偏离预期的情况则更是如此。事实证明,仅仅是加入一个会游泳的AI角色都这么麻烦,那游戏的这么多海洋威胁是如何运作的呢?对《盗贼之海》AI的研究还不止于此,还有一些恐怖的AI敌人可能会让我们葬身大海,在系列的第三篇,我们将会面对:

  • 海怪,游戏发行以来它就成了玩家摆脱不了的噩梦。
  • 巨齿鲨,新DLC“饥饿深渊”出现的巨兽。
  • 还有骷髅船,它第一次出现是在诅咒之帆DLC中,现在它们对玩家的船只展开更猛烈的攻势了!


相关阅读:
建立海盗的天堂:盗贼之海的AI设定(一):任务活动是如何生成的?

原作者:Tommy Thompson
译者:Willow Wu
原译文:
https://www.gamasutra.com/blogs/TommyThompson/20190612/344551/The_Secrets_of_Skeleton_and_Shark_AI_in_Sea_of_Thieves_Part_2_of_4.php

相关推荐

最新评论
暂无评论
参与评论

Advertisement
一个行业新趋势:从超休闲到中重度都可广告变现
推广
商务合作 查看更多

编辑推荐 查看更多