告别“呆AI”:《Arma Reforger》全面升级敌人AI,支持掩体和烟雾战术
告别“呆AI”:《Arma Reforger》全面升级敌人AI,支持掩体和烟雾战术
欢迎阅读《Arma Reforger》开发报告!在本报告中,我们将深入探讨最近一次小更新中引入的一些更改。此外,我们很高兴能在新的一年里与大家分享我们正在进行的项目,让大家对我们开发路线图上即将推出的重大更新有一个初步的了解。
情报
我们今年的第一个小更新,即1.0.0.95 更新,主要包括大量的修复和优化,以提高稳定性和性能。虽然我们知道社区渴望获得新功能和资产,但我们认为在实施任何新功能之前,显著改善游戏状态至关重要。
正如您可能经历过的那样,在长时间的Conflict对局中,废弃的武器、尸体、车辆和其他无关资产往往会在服务器上累积。如果不手动(有GameMaster权限的人)或自动清除它们,就会导致服务器 FPS 下降,造成服务器性能低下。在 1.0.0.95 版本中,现在可以正确删除尸体、物品和车辆,从而减少了资产的累积,降低了服务器因无关资产而瘫痪的几率。为了实现这一目标,我们暂时恢复了旧的GarbageManager实体,并计划在下一次重大更新中推出经过改进的垃圾收集系统。
本次更新还解决了6个以上的,与炮塔、车辆和库存相关的崩溃问题。此外,我们还解决了由各种交互引发的几个 VME(脚本中的空指针,可能会影响稳定性,有时甚至会导致崩溃)问题,这将使服务器性能更加流畅。
我们在本次更新中添加的一个有趣功能,是任务标题中的 "随机天气变化"参数。启用后,该参数将在整场比赛中随机改变天气,从而营造出更加动态和多变的环境氛围。
行动
AI掩体系统
如果您对当前 AI 站在开阔地上、对周围的危险视而不见的倾向感到失望,那么您一定乐意听到我们正在实施AI掩体系统。现在,AI会在战斗中或感觉到危险时躲藏起来,使他们成为更可怕的对手,总体上表现得更加真实。
掩体位置是指角色可以站立、蹲下和射击,同时部分免受敌人火力攻击的位置(如箱子、桶、栅栏等后面的区域)。AI掩体系统会向AI步兵提供游戏中掩体位置的数据。
AI有时让人觉得 "不太聪明",一个很常见的原因就是它们无法在游戏世界中做出适当的行为和反应(我们的游戏世界非常复杂)。到目前为止,AI步兵对周围环境的感知能力非常差。他们只能感知友方和敌方单位、车辆、危险事件(如枪声)和导航(由导航标记表示)。人工智能掩体系统提供的掩体点数据扩展了人工智能对游戏世界的感知,使他们变得更加聪明,能够更广泛、更有效地利用周围环境。
在了解如何生成掩体点数据之前,我们先来看看我们对掩体系统的要求。在考虑哪些物体可以在战斗中提供良好的掩护时,首先想到的通常是盒子、栅栏、桶和大石头。一些掩体位置可能是由于预制件的不寻常方向而产生的,而这些预制件原本并不打算作为掩体点。考虑到游戏中世界的大小和地图设计者的工作量,在世界中手动标记这些位置也是不可能的。
基于这些标准,我们决定仅根据几何数据生成覆盖点,而无需在预制件中进行明确配置。成导航网时生成的,导航网的生成可以是您作为地图创建者在工作台中手动重新生成导航网时生成的,也可以是在游戏运行时生成的,即在放置动态组件(例如由游戏管理员放置)时生成的,或者是在某些东西被破坏时生成的(栅栏被破坏,因此该区域可以通行,我们必须重新生成导航网)。
我们通过检查导航网格边缘的多个位置来开始寻找掩护点。些物体--有可能被用作掩体。对于每个潜在的掩体点,我们都要检查前面的物体是否有合理的尺寸来提供足够的掩体。由于我们在导航网格再生期间生成覆盖点,因此我们还利用导航网格高度字段数据进行几何检查。高度字段数据表示3D空间中的栅格化几何,如体素。这很有用,因为我们可以非常快速地执行几何测试,考虑到我们需要测试大量潜在的覆盖点,这是必不可少的。最后,一旦验证了覆盖点,它们就会存储在导航网格文件中。
我们增强了几种AI行为,以利用覆盖点数据。最重要的改进是AI士兵的作战行为。AI将能够在与敌人交战时占据掩体点,并在重新装填或压制时躲在掩体后面。掩体的使用逻辑也取决于交战距离。例如,在远距离战斗中,AI士兵将更愿意待在掩体中,而不是跑到开阔地上。我们增强的第二个最重要的AI行为是他们对枪声的反应。当受到来自未知地点的枪击时,AI士兵会尽量占据附近的掩体,以抵御敌人;如果附近没有掩体,则会分散开来。
我们还增强了其他使用掩体点的次要AI行为。例如,我们在手榴弹规避行为、防御航点行为和空闲行为中加入了掩体点的使用。我们认为,利用掩体将使与AI对战更加有趣,主要原因有两个:与AI士兵的战斗将持续更长时间,而且您现在将有机会压制和包抄他们。
由于这是AI掩体系统的首次迭代,我们还有很多工作要做,并且已经确定了一些我们希望改进的地方:
- 目前,我们不会为从物体或墙壁边缘向侧面倾斜生成掩护点;
- 基于第一点,我们不会在树木或电线杆周围生成掩护点;
- 不在车辆周围生成覆盖点;
- 覆盖点在窗户处生成,但它们通常不位于窗户的中心;
- 目前,AI士兵有可能在目标可视度较低的情况下选择掩体点。
人工智能烟雾弹的使用
人工智能步兵已经能够使用手榴弹一段时间了,但很快,他们也能够使用烟雾弹为自己提供掩护。这将为PvE游戏增添一个新的维度,因为AI又多了一种战术工具,使他们在战场上更具挑战性。
我们的总体任务是让AI能够更战术地使用烟雾弹,并利用烟雾掩护获得优势。
在设计这套功能时,我们希望研究烟雾在战斗中的整体使用情况,而不仅仅是步兵烟雾弹,这样我们就能更全面地了解烟雾在战斗中的作用,并为将来加入车辆和火炮做好计划。我们决定实施的第一个 "原型 "案例是医疗行为中的烟雾弹使用(即医疗人员帮助昏迷队友时)。
为了收集尽可能多的信息,负责此功能的开发人员SzwedzikPL开始与他的Arma 3小组讨论,收集社区意见并验证内部假设。该小组继续制作了一段视频,展示了使用烟雾弹进行战斗的行为,以突出烟雾在军事情况下的各种使用方式。
事实证明,这个视频和与社区的讨论对于此功能的设计非常宝贵,因此我们想借此机会向Arma4Ever表示衷心的感谢,感谢他们提供的意见!
由于在战斗中可以有效使用烟雾部署的情况多种多样,我们需要一种解决方案,它可以作为我们已经实施的某些行为的 "扩展",并且在必要时可以很容易地集成到许多行为中。因此,我们提出了AI活动可以集成和使用的 "活动功能 "概念。"AI活动 "指的是特定的AI群组行为,例如作为一个群组移动到某个地方,作为一个群组进入一辆车,或者在这种情况下,作为一个群组行为给某人治病。我们的第一个活动功能是"AIActivitySmokeCoverFeature"。
如果需要,活动可以自定义其活动功能。医护人员治疗行动自定义烟雾覆盖功能的方式是 "告诉 "烟雾覆盖功能什么对该活动很重要(例如,病人的位置、谁被小组指定为医护人员等)。此外,烟雾掩护功能还允许活动定义属性,以自定义部署烟雾掩护的方式。
目前,AI可以部署烟雾,用烟雾覆盖阵地,用烟雾保护指定阵地(即部署烟雾掩护,使阵地完全被烟雾掩盖,而不仅仅是被烟雾覆盖),以及保护指定阵地不被识别出的目标集群发现(这样,烟雾掩护将部署在能使指定阵地不被已知敌人发现的地方)。总体而言,这只是更全面解决方案的第一部分,该解决方案还将包括请求火炮或车辆发射烟雾。
我们在 Arma Reforger 中的新解决方案将AI对烟雾弹的使用提升到了一个新的水平。这是 Arma 历史上第一次让AI士兵能够根据一些更复杂的逻辑检查,更有战术性地使用烟雾弹,包括是否投掷、在何处投掷以及如何投掷。他们将能够在更多情况下使用烟雾,并根据各种条件以不同方式使用烟雾。
一个挑战是决定如何让人工智能使用烟雾弹。在与上述Arma 3小组协商后,我们明确了用例。随后又花了一些时间,来确定如何在Arma Reforger提供合理范围的同时,为玩家提供真正的新功能。现在,挑战将是完善 Arma Reforger 的这一功能范围,并随后以新的方式为 Arma 4 进行扩展。
另一个挑战是将此功能作为AI的 "可重用扩展服务 "来实现。从一开始就让它与许多行为一起使用并不容易,而且有些方面特别难以平衡。例如,烟雾掩护功能的部分逻辑要求决定应选择小组中的哪些成员投掷手榴弹。该逻辑会查看成员,并尽量挑选离目标位置最近的 "最不重要 "士兵(例如,我们尽量避免命令本应射击和压制敌人的机枪手投掷手榴弹)。事实证明,平衡这一选择过程、角色与距离的关系等,以及许多其他相关因素,是一个相当棘手的过程。
局限和计划改进:
- 目前,医护兵治疗是唯一支持烟雾掩护的操作,但将来会集成更多行为。
- 士兵只能使用烟雾弹来部署烟雾掩护。未来,我们计划为UGL添加烟雾弹,但尚未决定是在Arma Reforger中实装还是为Arma 4留点嫁妆。不过,针对UGL烟雾弹使用的AI解决方案已经准备就绪。
- AI无法透过烟雾看到,但这不会影响移动和寻路(即AI将绕着烟雾移动并穿过烟雾,就像烟雾不存在一样)。今后,我们计划实施一种解决方案,告知AI某个区域被烟雾覆盖,应该避开。
- 关于中止和拒绝部署烟雾覆盖的逻辑仍在研究中。我们计划实施一些条件,允许小组在特定情况下决定不使用烟雾掩护(例如,一名士兵受伤,小组希望掩护军医去救他,但病人在一间房子里,因此在他旁边扔烟雾弹可能不是最明智的主意)。
- 在《Arma Reforger》的范围内,只计划在反应时使用烟雾掩护。烟雾弹只能用于应对各种事件,如有人受伤、一队人撤退、一队人被压制并希望中断接触等。计划在《Arma 4》中使用更复杂的人工智能烟雾掩护
- 烟雾掩护功能尚未与AI掩体系统完全集成。不久之后,掩体状态也将影响使用烟雾弹的决策(例如,如果病人已经有掩体,就不要用烟雾覆盖他,等等)。
人工智能掩体系统和人工智能烟雾弹的使用都将包含在即将到来的更新中,因此我们希望您能享受与新升级的人工智能敌人作战的乐趣。
AI驾驶
作为 Arma Reforger 最需要的功能之一,我们想让您知道它正在开发中。
AI驾驶的支柱是两个系统之间的连接:(车辆)导航寻路和(预处理的)道路网格。我们提供了一种有效的方法,让人工智能在大片地形上找到自己的路:它们找到通往最近道路的路,使用路网,然后找到通往目标目的地的路径。同时,通过Game Master对道路网络进行动态修改(即放置路障等资产)会导致路段断开或重新连接,促使 AI 找到不同的路径。
当放置的资产部分阻塞道路时(例如,阻塞道路一侧的资产),会导致部分断开。现在的问题是,AI无法检测到部分断开的路段,并会尝试寻找不同的路径,即使它们可以绕过障碍物。我们目前正在研究一种解决方案,使AI能够区分完全断开和部分断开的路段。
此外,我们还支持车辆导航链接(如车辆门、栏杆门)和AI驾驶员通过这些它们的自定义行为。这意味着AI驾驶员将能够停车、下车、打开大门、驾车通过并关闭大门。
然后,通过各种海拔高度和角度检查对车辆路径进行处理,并提供给车辆运动组件和 PID 控制器,以模拟人类玩家的驾驶输入。我们的驾驶模型通过与人类玩家驾驶时相同的输入来控制车辆。事实证明,调整推力和转向的 PID 控制器非常具有挑战性,但我们似乎已经成功地为每个车辆模型找到了黄金值。在某些情况下(如某些弯曲的道路),结果相当令人印象深刻,AI驾驶模型甚至在速度和道路稳定性方面超过了人类驾驶员(见下面的视频)。
我们目前正在开发对单个小组的支持,使其能够与车内和车外的士兵一起编队移动。稍后,我们计划将其扩展到由同一群组驾驶的多辆车辆(又称车队)。这就要求我们支持对同一地点的多个寻路请求,事实证明这是一个特别难解决的问题。最后,我们设法通过为每个请求创建一个具有特定领导的 "子编队 "来解决这个问题。
AI驾驶仍在进行中,但我们希望在即将到来的重大更新中实现它。
后勤
我们的音频负责人Filip最近也对他创作的环境音效及其内部技术工作原理进行了详细介绍。如果您对音频设计和实现感兴趣,我们推荐您观看。
我们还在 YouTube 上发布了Reforger RFI 系列的另一个视频!这一次,创意总监Ivan Buchta很高兴能坐下来,就您提出的一些社区问题进行交流。
我们要再次感谢我们了不起的社区对我们一如既往的支持。还有更多更新正在进行中,我们很高兴能向您展示更多精彩内容,敬请期待,战场上见!
发布于 2024 年 2 月 10 日