《全境封锁》分析敌方AI设计思路

资讯作者:jiayou日期:24天前点击:11

2016年,汤姆克兰西的《赛区》将玩家带到了战火纷飞的曼哈顿市中心,在那里他们与各种派系和其他特工的敌人作战。育碧制作的这款RPG射击游戏为了让玩家时刻保持警惕,制造了各种各样的敌人。

但是,与我们到目前为止所讲的单机游戏不同,全域封锁作为一款线上多人合作游戏,需要解决各种实际问题,并明确如何管理全球数千名玩家中的各种系统。

整个系列文章将由两部分组成。在第一部分中,我将讨论Massive Entertainment Studio如何在整个世界中创建各种有趣且具有挑战性的场景。当成千上万的玩家涌入纽约街头时,他们如何设计敌人,如何管理自己的行为?

part 1

全境封锁

病毒爆发后,纽约陷入混乱,将与外界隔绝,直到污染得到控制,秩序得以恢复。玩家将作为国土战略局的代理人:在国家紧急状态期间协助政府部门,并帮助第一批“响应者”为纽约带来秩序。

玩家可以在总面积超过6平方公里的曼哈顿地区,从第21街区和第9街区到第55和第3大道,自行或最多4人一组完成一系列故事和开放世界赛事。

《全境封锁》敌人AI设计思路分析

为了给玩家带来各种挑战,地图的每个区域都会出现五个敌对派系,包括热爱喷火器的扫地机、从Rikers岛逃出来的罪犯以及私人雇佣兵公司“最后一人营”。此外,全市污染最严重的——“暗区”也被封锁,这里是游戏的主要PVP场所。在这里,你不仅会遇到敌人,其他玩家也可以随时攻击你。

当玩家探索纽约时,他们会谈论在以下三种场景中与非玩家角色(或NPC)互动:

作为开放世界的流浪者:如“野狗”、平民、出现在安全屋附近的统战战士或巡逻的敌对暴徒。

遭遇:这是玩家在游戏世界中发现敌人和怪物的情况。通常,由于游戏中的系统设置,玩家被设计师的意愿驱使着进入战斗或制定替代路线。

剧情任务:设计师制作的任务是游戏主故事的一部分。这些都是由更长的情节驱动的,将包括多个战斗模块。

在每种情况下,出现在游戏世界中的人工智能都将满足以下两个设计目标之一:

丰富游戏中的世界架构,为玩家增添沉浸感。

提出玩家在战斗中需要解决的难题。

后者是游戏的关键部分:

因为它旨在鼓励玩家在战斗开始前调查相关领域并建立战略思想。一旦战斗爆发,玩家需要不断重新评估自己战斗对象的优先级和空间位置,避免被破坏。因此,本地NPC有必要具备有趣的行为特征:玩家可以识别、保持基本行为的一定一致性,使用各种子系统来处理他们面临的威胁,动态处理目标并响应玩家的行为。

系统

所有的NPC行为都是通过行为树系统实现的,其中行为树的子模块将用于激活和运行一些特定的行为来处理某些目标或变量。这可以是导航到目标目的地、探索潜在威胁区域、攻击敌人、进入掩体等等。让我们看看敌对的NPC的设计和结构。

《全境封锁》敌人AI设计思路分析

上图中的行为树(注:从右向左读)层次结构丰富,可以为每个行为提供多条路径。这样做的好处是既能在一定范围内产生特定的动作,又能尽可能保证整个系统的灵活性。

行为树的上方[右橙]分解了NPC的三种关键反应模式,分别是“系统直接指挥”、“保持主动战斗”和“必要时启动战斗”。

如果继续执行,会到达条件层【蓝色/紫色】,条件层会根据当前的世界条件和角色本身的一些情况来决定可执行的行为。最后,移至较低等级【左侧】,将处理游戏中可能发生的几乎所有战斗变化。

关键是构建中间层,以便它可以链接到下层的不同行为。这样做也是为了避免基于一些非常具体的条件通过行为树的下半部分复制行为。因此,游戏中所有不同的NPC(如下所述),以及探索者Mine——从技术上来说,它是一个人工智能角色——都会有相似的子树或行为来满足复制的需要。

可以想象,这将导致一个相当复杂的行为树架构,如下图所示,这需要编程团队和设计团队的密切合作。

考虑到问题的规模和面临的挑战,编程团队开发了许多工具来编辑和调试每个NPC,并将这些工具构建到整个封锁中使用的斯诺登引擎中。这些调试工具被广泛使用。它们允许开发人员识别在线测试用例中由特定字符引起的问题,然后我们将继续讨论这一点。

《全境封锁》敌人AI设计思路分析

现在,我们对AI架构有了一些了解。让我们看看NPC本身的设计。

原型派系

在出售时,在整个领土上有5个派别,包括36个对手NPC类型。原型被用来决定角色的行为类型,而派系被用来控制特定的NPC属性。为了实现游戏玩法的多样性,整个封锁中有大量原型:

突击型:采用基础设计,覆盖AI。

掠夺者:直接冲向目标。

坦克:可以承受并造成大量伤害。

狙击手:造成远程精准攻击。

投掷者:投掷手榴弹或具有区域效果的物体。

支援类型:在战斗中协助友军单位(如治疗)。

压制类型:限制玩家。

首领:为附近的友军单位提供增益。

控制者:通过间接方式作战(例如使用炮塔)。

当然,会有一些特殊的NPC——不遵循原型——但这些只用于最终游戏和BOSS战斗。

这些原型中的每一个都将清楚地给出玩家将面临何种危险的反馈,并让玩家思考如何攻击。此外,许多原型是相辅相成的(如下图所示),这样设计师就可以利用不同原型的属性来实现他们的目标。

《全境封锁》敌人AI设计思路分析

比如狙击手与玩家保持距离并试图造成大量伤害时,掠夺者会试图减少与玩家的距离并造成近战伤害。同时,坦克和压制会迫使玩家使用掩体,而投掷者会试图迫使玩家离开掩体。

通过这种方式,AI迫使玩家在由敌方单位组成的特定战斗中使用不同的战术。这种设计源于全境封锁。在战斗中,玩家需要不断评估三个关键的游戏属性:

目标优先级:我现在应该攻击谁?

转岗与曝光:在目前的情况下,我是否处于最佳位置?玩家需要频繁移动到更好的战术位置,防止在战斗中吃亏。

耐力奖励:提供长期战斗,考核玩家在一定战斗强度下维持等级的能力。

派系

如上所述,36种NPC类型将分布在主要派系:暴徒,清洁工,瑞克和最后一人营,分为一级和二级。根据你在纽约地图上的位置,你会在战斗中遇到一个或多个派系。

每个阵营都会按照我列出的顺序随着游戏的进行而改变难度。鉴于NPC原型如此之多,设计师很容易通过迭代来管理难度,在整个NPC社区推广就足够了。

《全境封锁》敌人AI设计思路分析

为了实现这个目标,Massive构建了一个AI配置系统,可以修改NPC的很多公共属性。这使得他们对玩家造成的威胁更加可控。这是八个属性:

玩家行为的反应时间。

移动速度

集体行为

掩体的使用

技能应用

惊人的抵抗

抑制阻力

活力

攻击精度

的配置文件可以在NPC所属的特定NPC类型和派系中保持一致。例如:

暴徒-他们是玩家在游戏中会遇到的第一个派系,他们只使用“哑”配置文件,其中所有属性都相当低。

当然,重型、支援型、炮塔都有专门的配置文件,适用于所有门派一致的原型。同时,最后一人营有自己独特的精英配置,这使得他们对玩家的威胁远远超过其他所有人。

影响AI行为的最后一个因素是它在游戏本身中的角色定位。

角色范围从常规敌人到老兵和精英,最后点名敌人,谁将是最优先的目标。随着NPC角色定位的提高,他们的基本属性也会受到影响,比如武器伤害、护甲和设计精度。精英和命名NPC可以获得特殊武器和模型。

他们甚至可以获得定制的激光瞄准镜,这对他们的游戏能力几乎没有影响,但会让玩家更加紧张。

小结

这个系统让全领土封锁建立了一个严格且多元化的非玩家角色集合,帮助他们还原一个末世曼哈顿。虽然这个系统本质上使用了相同的核心AI架构,但是使用原型、门派、配置文件和角色排名不仅可以实现敌方行为,还会给全球玩家带来挑战。

但还有一个更大的问题:在一款面向全球玩家在线运行的游戏中,如何保持这些系统的性能?自推出以来,封锁已拥有至少1000万玩家和100多万同步在线玩家。这需要在数以千计的单个游戏实例中创建、维护和控制许多非玩家角色。

在本系列的第二部分,我们将看看Massive Entertainment如何解决这个问题并将其在线集成,做出设计决策以确保游戏尽可能平稳地运行,以及AI系统上的问题和限制。

此外,我们还将介绍为在线实例中测试AI行为而构建的工具,以及如何使用AI工具在测试服务器上验证故事任务的一致性和稳定性。

在最后一部分,我们研究了游戏的整体结构和它的核心敌人AI。当玩家走在纽约街头时,他们面对的是各种各样的人工智能单位,无论是敌对的还是友好的。全境封锁采用巨大的行为树来实现和处理决策,包括属性管理系统、监督角色派系、技能档案和敌人等级等。

《全境封锁》敌人AI设计思路分析

但这些都无法解决这款游戏所面临的更大、更根本的问题:与我到目前为止讨论的人工智能游戏问题不同,全域封锁是一款线上游戏,需要玩家先连接游戏服务器才能玩。

这就要求所有在线玩家在人工智能的执行模式下必须拥有相同的游戏体验:在一个与其他玩家共享的世界里,他们用自己的装备对抗同一个敌人。

因此,在第二部分,我们将讨论如何建立非玩家角色的在线基础设施,以及如何创建和管理这些角色,以便所有玩家都能获得相同的体验。同时,我也会讲讲在开发过程中,如何利用人工智能角色来帮助测试和完善游戏中的新内容。

part 2

AI如何在线工作

如果你不熟悉网络游戏的工作原理,这种工作机制叫做客户端-服务器模式。每个玩家从他们自己的游戏副本(个人电脑或主机,即客户端)登录到托管游戏的服务器。

这个服务器承载着游戏中的事件:每天或每周发生的挑战,正在发生的世界事件,以及游戏中的经济形势。

这就是我们在执行游戏时需要考虑的:一个玩家在一个团队中的体验不应该与他的队友不同。如果你被敌人近距离攻击,但是你的朋友看到的却不是这样,那其实是非常可怕的。

为了解决这个问题,游戏中所有的人工系统都会在服务器端运行。我在第1部分中提到的行为树人工智能系统都不在客户端运行,所有这些都发生在服务器上。这保证了所有在线玩家的一致性。

行为执行

然而,这带来了一个问题。行为树只代表了人工智能在游戏中的决策,但玩家需要的是看到游戏中所有这些决策带来的性能,因此需要游戏中的各种角色在服务器上执行行为树做出的决策。

同时,为了减少玩家和服务器之间传输的数据量,让人工智能能够顺利执行,所有角色的动画都会在客户端进行处理。服务器端的人工智能系统对指定角色的动画是如何工作的理解非常有限,所以只需要知道执行哪个角色,客户端最终会处理所有这些问题。

《全境封锁》敌人AI设计思路分析

这种方法解决了一个问题,即保持客户端和服务器之间发送的数据最少,但它在NPC运动中提出了一个新问题。

全地域封锁中所有非玩家角色的使用,是一个更智能的角色动画运动过程,也就是用动画来驱动运动。这使得NPC能够更流畅地移动,他们的动画将更符合运动学。

但是,如果服务器不监视移动的执行,它如何知道这些角色是否已经移动到正确的位置?为了解决这个问题,服务器上的运动系统将为要移动的角色计算一个运动计划,然后在客户端上,它必须在角色的动画中找到一个与原始计划匹配的可用动画来创建运动路径。

这听起来很复杂,但它实际上将计算和数据的消耗保持在非常小的范围内。

《全境封锁》敌人AI设计思路分析

这种做法也会造成一个问题,就是一些信息或者事件会在客户端和服务器端同时执行,比如NPC部署炮塔、投掷手榴弹或者执行治疗动作。

这是为了减少客户端和服务器之间的数据传输,但这也意味着一些信息需要在运行时同步。这一行为也导致了在发布全境封锁后的前几个月,PC版上数据修改和插件的泛滥。玩家将修改客户端中的数据,这将增加他们的生命值和伤害。

管理世界

整个封锁区的每台服务器都包含几个游戏地图的例子。在最忙的时候,可能有多达1000名玩家在同一个指定的服务器上玩,伴随着成千上万的AI角色。

为了适应大量玩家和人工智能角色,服务器的刷新频率为10HZ,这意味着所有行为和位置每秒都会更新10次。2016年服务器本身也很强。——40核心机有256GB内存。在优化了游戏之后(包括很多我没有提到的优化),他们可以在不到20毫秒的时间内为每个游戏世界运行一次标记更新。最坏的情况下,最慢的时间只有100毫秒。

此外,玩家和服务器之间发送的连续数据非常少,其平均传输速率只有每秒50千比特左右。因此,理论上可以在56K调制解调器上运行整个区域封锁。

《全境封锁》敌人AI设计思路分析

有趣的是,服务器并不是限制游戏中人工智能数量的因素。真正的限制因素是玩家的设备——,个人电脑或者主机。

在开发过程中,我们发现玩家的控制台已经成为人工智能同时执行数量的瓶颈。因此,同时活跃在游戏中的NPC数量是有限制的。

如果你已经玩过《封锁整个区域》的故事模式,你可能会注意到游戏中经常会有不同时长的休息时段来结束战斗部分,大部分都是为了解决上面提到的玩家装备带来的NPC数瓶颈问题。

对整个领土的封锁也在开放世界的基础上创造了不同的地区。

在每个区域,如果一个NPC被安排为盗贼或特定的遭遇,它将被限制在移动范围内。这在很大程度上是为了保证NPC不会偏离他们原来的刷新点太远,也就是说你不会在时代广场遇到最后一人营的部队;同时也防止了玩家被敌人从曼哈顿的一边追到另一边。

《全境封锁》敌人AI设计思路分析

此外,人工智能角色还有一个与导航行为树相连的感知系统。

这些角色不仅有锥形的视觉传感器,还可以根据其强度水平听到不同距离的声音。另一方面,他们还可以进行战术分析,以确定战斗开始时他们可以进入150万个掩体中的哪一个。

这些传感器的更新速度和准确性取决于玩家和它们之间的距离,也取决于服务器中的天气系统。雨雪等其他恶劣天气会影响这些传感器的范围和精度。同时,敌人的感知系统会在战斗中每帧更新一次,并且在距离玩家50-150米之间每2秒更新一次。当150米左右没有玩家角色时,更新将被完全禁用。

《全境封锁》敌人AI设计思路分析

构建测试工具。

现在,我要讨论的是我们测试了多少非玩家角色和游戏系统,以及AI如何帮助和建立全球封锁。

正如在第1部分中提到的,Massive已经构建了大量的工具,使设计人员能够完成和迭代他们的设计,并帮助程序员发现游戏中的特定问题。

Jonas Gillberg谈到了他们在2016年GDC中使用的工具和系统。这些工具对于程序员来说是必须的,对于不同规模的开发团队来说,他们希望简化生产流程,这是一个很好的参考。

这个测试工具可以在运行时调试行为树,但最令人印象深刻的是这些工具在实时模拟测试中的潜力。

调试工具链允许使用本地服务器来模拟活动实例的行为,这不仅可以确定问题的位置,还可以在测试期间回滚时间线,以知道问题何时发生。

《全境封锁》敌人AI设计思路分析

当然,确保每一项任务都是完整、有效和稳定的,是测试中最有意义的部分。在这种规模的游戏中,比如全地域封锁,一个小小的失误可能会阻碍任务之间的进度,或者让玩家无法触发游戏中需要的具体事件。

但是Massive搭建的测试工具可以创建数百个可以模拟玩家的AI角色,放入测试服务器中运行所有内容。

将有1000多名AI玩家投入地图,但他们有各种作弊功能:不尊重物理碰撞,必要时可以穿墙;您还可以在世界上不需要导航的任意两点之间执行移动行为。

无论是个人还是已经组成团队,都可以解散完成整个任务,或者探索开放的世界。除了四处游荡,杀死自己应该杀死的东西,他们不知道自己应该做什么,但这1000只“猴子打打字机”可以帮助分析错误、测试服务器负载、验证任务进度、世界事件、动态遭遇等许多问题。

结语

距离汤姆克兰西的《赛区2》上映不远,所以思考和见证这些系统在《全境封锁2》中是如何扩张的,是一件非常有趣的事情。

很明显,整个封锁会在它的整个生命周期不断更新,比如地下模式DLC、生存模式DLC、最后一站,甚至过去一年的很多免费更新,他们还在设计有趣的东西。

当然,在这一时期,许多现有的人工智能功能将得到改进和扩展,一些新的系统将脱颖而出。目前他们会如何发展还是个谜,但我敢打赌,未来你会在这里再次看到AI相关的关于整个封锁的文章。

下一篇       上一篇