在《
地平线零黎明》人工智能研究的
第一部分中 ,我谈到了游戏如何创建由人工智能驱动的动物机器群。 这需要复杂的代理层次结构系统,其中每台机器都可以使用层次任务的网络计划程序来决定如何进行操作,并且组代理共同将机器角色和职责分配给畜群。 所有这些都是“集体”系统的一部分,当用户在游戏中时,该系统支持世界上所有机器的生态系统。
在最后一篇文章中,我们将仔细研究各个机器可以用作其基本行为一部分的系统。 它们包括传感器系统,用于陆地和飞行汽车的导航,以及AI行为与动画系统的紧密联系,这为每辆汽车提供了危险但又逼真的行为。
传感器与运动
首先,让我们看一下机器触发AI反应的传感器,并了解动画如何与执行其行为的整个过程联系在一起。 机器可以使用大量独特的传感器:视觉传感器,例如
“骑士”的眼睛,雷达和
“ striders”的存在传感器,听觉传感器,这些传感器从远处的爆炸声中拾取声音并向附近扔石头,以及感觉玩家触摸机器的能力。 每台机器都有一组通过各自的灵敏度值进行校准的传感器,因此,例如
“骑士”或
“反刍动物”很容易上手,但要抓住
“专家”则要困难得多。
传统的传感器系统仅能够跟踪AI周围的事件并“看到” /“听到”它们,但实际上,传感器系统具有更多细微差别。 他们使用附在物体上的信息包,这些信息包可以触发机器传感器之一上的刺激:这些物体可以是玩家,其他NPC,石头,飞箭,其他汽车和自然。 该数据将通知接收者(感应到东西的机器)有关其发现的东西及其状况的信息。 因此,机器像人类的NPC一样,可以理解位于它们前面的尸体与旁边被吹哨的箭头之间的区别。 此外,这可以确保隐藏在高高的草丛或树木后面的玩家不会受到注意-机器会收到此状态下他不可见的信息。
每个AI角色,无论是机器还是人,都能够以不同的方式处理和解释感官数据,因此某些角色可以忽略某些信息,而其他角色则可以做出适当的响应。 实际上,取决于机器中的传感器功率,它可以减少从其可以读取的传感器事件接收的数据量。 这使您可以控制游戏的紧急属性,以便每种类型的角色都可以以自己独特的方式响应信息。
如果AI需要根据此感官数据执行操作,那么我们仍然需要使其看起来逼真。 因此,当机器决定采取某些行动时,例如,移动到新的位置,调查焦虑的根源或攻击玩家,就会出现以最现实的方式使这些行动的执行动画化的问题。 这些机器的动画制作是一项非常艰巨的任务:它们必须同时看起来像是活的原型,并且具有与众不同的类似机器的行为。 为此,导航和战斗系统都必须考虑车辆必须行驶的距离,并且动画工具链必须调整动画的根部骨骼,并根据感知的距离和运动时间对其进行混合。
这样可以确保在机器的任何移动距离和速度下,都可以启动动画,转到行为的主要部分,然后在正确的时间正确混合它们。 这对于诸如运行到特定点的行为非常重要,此时机器不仅需要减速并在正确的位置停止。 但这在战斗中尤其重要。 用于攻击的许多动画都有两个单独的序列:“摆动”,指示攻击的开始,然后是完成,造成损坏。
Horizon Zero Dawn使用与我在
DOOM AI文章中讨论的方法类似的方法:系统监视机器的当前运动,混合运动或攻击动画以达到所需的点,然后使汽车出现或停止恰好在结尾处。
导览
我还没有谈论过另一个严肃的任务-导航。 在全球范围内移动汽车的任务非常复杂,有各种各样独特类型的敌人,并且它们都有不同的大小和形状。 因此,他们必须以自然的方式沿着救济前进。 此外,它们必须根据机器的类型识别局部几何形状的变化并适应它们,或者只是忽略它们。 为此,您需要一种广泛使用的AI工具,称为导航网格。 Navmesh根据某个特定角色在世界上的障碍物来存储有关特定角色如何在地图上移动的信息。 尽管我们可以在游戏执行期间计算所有这些数据,但是通常会在发布游戏之前将此类数据嵌入或“烘焙”,并在必要时将其加载到内存中。
鉴于
地平线零黎明地图非常庞大,并且在特定时间仅需要某些部分(AI处于活动状态并且仅在靠近玩家的位置移动),因此在游戏过程中会创建一个导航网格,但仅在玩家的紧邻范围内。 但是有趣的是,没有使用一个导航网格,而是使用了六个! 它们中的四个根据对象的大小提供角色移动:小,中,大或巨大。 因此,人和骑士可以在一个很小的网格上移动,对于雷电之类的机器,导航网格几乎完全是他们的。 此外,还有两个附加的导航网格:一个用于浮动机器(例如,用于“点击齿”),以及一个独特的网格,可以使机器站立在方便的位置,以防玩家试图爬上它们。
在每种情况下,障碍物都会阻塞或改变导航网格的结构,并且系统会实时重新计算变化,因此移动的障碍物(甚至其他机器)会影响在空间中移动的能力。 这里有趣的是,障碍物可以具有不同的属性,并且可以完全不可逾越,或者根本就不希望移动-但这很大程度上取决于AI机器的行为状态。 如第一部分所述,主动巡逻的汽车在创建后会避开您可以躲藏的植被,但是在探索最近的焦虑源时,草丛仍然不可取,同时,如果有必要,机器仍可以通过它。 相同的原则适用于小石头和树木:它们是不可逾越的物体,但大型机器除外,例如
“ hippos” ,
“石头咬人”和
“ thunderheads ” 。 这些怪物可以打破石头和连根拔起树木,但前提是他们必须生气或追逐玩家。 这些机器处于其他行为状态时,会像其他障碍一样感知到障碍。
空中运动
尽管此导航工具链管理着各种尺寸和形状的地面车辆,但对于空中飞行的人来说根本不起作用。 非玩家角色在空中移动时,不仅必须考虑最近的障碍物,以免与树木或悬崖相撞,而且还必须知道围绕它们的几何形状的高度。 地平线零黎明世界充满了丘陵,森林,悬崖和陡峭的山坡……两种类型的飞行汽车,即
“风筝”和
“海燕”,必须知道如何在空中飞行,以便能够起飞,沿着巡逻路线,陆地,以及拒绝,并在必要时攻击玩家。 为此,该游戏不仅具有基于地面的导航网格系统,而且还具有完全独立的空中系统。
对于AI游戏开发部门而言,创建它是一项艰巨的任务。 他使用了一种称为“ MIP地图上的分层路径规划”的技术。 MIP映射是计算机图形学中使用的一种技术。 旨在最小化纹理或图像占用的内存量。 为此,以逐渐降低的分辨率创建一组相同的图像。 该解决方案非常适合控制游戏中的细节级别:可以看到距离玩家数百米的物体,但与旁边的物体相比,使用的纹理内存更少,并且使用的质量最高。 这种方法被用于导航,因为当汽车沿着世界铺设的路径飞行时,不需要完全准确地知道一分钟内将要到达的地方的局部几何形状,但是有必要在即将着陆之前知道地球的位置。 机载车辆的路径规划系统使用MIP纹理来创建局部几何形状的高度图-一种数据结构,可以告诉我们世界上给定x / y位置的高度。 MIP纹理具有四个级别,并且随着接近地面,它们变得更加复杂和逼真。 3级是简单抽象的模型,0级纹理是世界高度的相当准确的地图。
与导航网格物体几乎一样,在游戏执行过程中并根据需要创建mip纹理:在特定区域内飞行时,机器不需要知道整个世界的高度数据。 当他们需要飞到另一个位置时,飞行导航AI会通过最高级别的MIP纹理启动A *搜索算法,也就是说,它会使用近似几何版本来计算飞行路线的最简单版本。 A *算法使在障碍物上方和下方飞行比在障碍物上方飞行的代价更高,因此,汽车比在障碍物上方飞行的频率更高。 每次系统调用A *算法时,它只有有限的迭代次数,因此,使用最简单的mip纹理(第3级)计算路径后,它会使用计算出的路径的特定部分,然后对其进行改进,并从第1级和第0级借用数据,使它更加逼真并与几何图形保持一致。 此外,它还可以平滑路线,以排除陡峭的坡度和急转弯,从而使路线更加逼真。 该系统运行良好,任何飞行中的飞行器都始终有飞行计划(即使是坏飞机),并且如果有必要,可以通过重复调用搜索算法来对其进行改进,以使航路变得越来越自然。 另外,它有效地使用了内存,但是这种方法有一个缺点-因为它基于地图给定区域的最大高度。 汽车无法在桥梁或石拱门下飞行,但大多数情况下玩家不会注意到这一点。
得益于地面上的导航网格和机载mip纹理,飞行器可以根据几何形状协调攻击,着陆,俯冲攻击,甚至着陆。 在攻击过程中悬停在玩家上方的机器仍会使用预先计算的飞行计划,但不一定沿着该路径移动并播放相应的动画。 汽车的速度与模式(飞行,悬停或悬停)相关,因此它们可以使用相同的导航工具实际在玩家上方盘旋。
起飞和降落使用与飞行导航和地面导航网格物体交互的单独系统:它在您可以着陆的网格物体上寻找合适的位置(通常这些点比地面平均高出地面一点),然后他们选择角度和速度。 降落时,汽车使用适合其尺寸的地面导航网格。 跌落时实际上适用相同的原理,仅在这种情况下,唯一合适的着陆位置是基于机器的当前航向的,尽管坠落看起来不太顺畅,但实际上使用了相同的工具。 此处特别编程的边界案例是
“海燕”潜水攻击。
海燕在玩家上方
盘旋 ,然后朝玩家当前位置掉落。 他使用相同的系统,但是使用的方式更加生动。 但是,还有另一个窍门:在玩家上方旋转时,海燕通常会在攻击之前等待直到其关闭太阳。 也许在玩游戏时,您注意到了这一点,而这是有意为之的。 在测试
“海燕” AI时
,质量检查部门注意到它会定期用阳光遮盖玩家,这会使他的进攻更加混乱,因为在潜水过程中灯光会移动并使玩家蒙蔽。 然后这完全是偶然发生的,但是AI开发部门决定这应该更频繁地发生。
总结
地平线零黎明创造了独特的游戏玩法; 一个充满机械生活的世界变成了一个展现埃洛伊故事和她过去秘密的地方。 机器的人工智能和游戏系统是创造玩家探索的世界末日最重要的方面。 这是一个由10个人组成的团队的大规模工作,它花了几年的时间发展。 创建如此庞大的AI系统,使其在具有巨大开放世界的游戏中运行良好,已变得越来越困难。 因此,游戏开发者社区对于与其他人分享他们的经验至关重要。
参考文献
- 朱利安·贝特林(Julian Berteling),2018年。 “超越杀戮地带:为地平线零黎明创建新的AI系统”, GDC,2018年。
- Arjen Beij,2017年。 “地平线零黎明的 AI ”, Game AI North,2017年。
- Wouter Josemans,2017年。 “将AI重返空中:在地平线零黎明的空中航行”, Game AI North,2017年