了解敌人:《光环战争2》的AI设计
前言
Title: Know Your Enemy: Getting to Know the AI Behind Halo Wars 2
Reporter: Drerek Fagan
Conference: Game AI North, 2017
在《Know Your Enemy: Getting to Know the AI Behind Halo Wars 2》1 这次演讲中,Drerek Fagan 介绍了《光环战争2》指挥官 AI 的工作原理,以及整个 AI 系统从战术层面到战略层面的设计和实现。
Derek Fagan 是 Creative Assembly 公司《全面战争》游戏团队中的一名 AI 程序员。2015年,他加入该公司开发了《光环战争2》的指挥官 AI 系统,从此开启了自己游戏开发的职业生涯。Derek 对人工智能的主要兴趣领域是 NPC 行为和机器学习。他于2016年从都柏林圣三一学院获得了计算机科学博士学位,论文研究主题是多智能体强化学习。
游戏介绍2
《光环战争2(Halo Wars 2)》是一款由 Creative Assembly 与 343 Industries 工作室联合设计制作的 RTS 游戏。
本作是《光环战争》的续作,首作 《光环战争 (Halo Wars)》 发生于 2531 年,即《光环:战斗进化 (Halo: Combat Evolved)》(开启整个“光环 (Halo)”系列游戏的第一作)故事背景的 20 年前。《光环战争 2 (Halo Wars 2)》剧情紧接《光环 5:守护者 (Halo 5: Guardians)》。在这一续作中,游戏角色将会发现自己遇到“先行者 (Forerunner)”的装置“方舟 (Ark)”,其拥有制造 Halo 环带的能力。而后者是一种“先行者 (Forerunner)”曾用于检测与遏制“洪魔 (Flood)”的超巨型构造。在“方舟 (Ark)”上,UNSC 部队将会遭遇“被放逐者 (Banished)”,一个从“星盟 (Covenant)”中分裂出的雇佣兵军团。
《光环战争 2 (Halo Wars 2)》精心构建并将许多源自《光环战争 1 (Halo Wars 1)》的概念发扬光大,包括一套类似石头剪刀布的单位平衡系统。举例来说,地面战车单位可用于消灭步兵单位,而步兵单位在对抗飞行单位方面极为有效。同时,飞行单位又是对付地面战车单位的有效力量。这种平衡方式使得 RTS 新手能够轻易上手,同时又为精于策略的老玩家留出足够的战术深度以供研究。游戏由 Microsoft 的 343 Industries 工作室以及广受赞誉的 Creative Assembly 开发,后者曾制作出诸多口碑一流的 RTS 大作,如《中世纪:全面战争 (Medieval: Total War )》1 和 2、《全面战争:幕府将军 2 (Total War: Shogun 2)》、《全面战争:战锤 (Total War: Warhammer)》等等。
您将以俯视角度,控制基地建造、管理资源分配、建造单位、守卫目标以及征服敌人基地。随着游戏进程的展开,各种操作应接不暇,还需要充分发挥快速反应能力、多线操作能力以及战术能力,方能完成任务。“光环 (Halo)”系列的老玩家一定会觉得许多单位非常熟悉。您可在游戏中操作 M12 军用战车“疣猪” (M12 Force Application Vehicle Warthogs)、M808 主战坦克“天蝎” (M808 Main Battle Tank Scorpions)、G77S“鹈鹕”武装直升机 (G77S Pelican Gunships) 等单位。亦有全新的《光环战争 (Halo Wars)》单位,比如野兔轻战车 (Jackrabbit)、棕熊坦克 (Kodiak) 及 EV-44 支援型 VTOL 飞行器 (EV-44 Support VTOL)。
游戏还提供各种多人游戏模式。在遭遇战 (Skirmish) 模式中,您可设置想要的环境以及多人模式类型,在其中对抗不同难度的大量 AI 敌人。同时,还能与 AI 或您的伙伴(通过合作模式)组队对抗敌人。在快节奏且限时的据点 (Stronghold) 模式中,您需要在时间结束时比对手占领更多的基地才能获得胜利。然后是满怀《光环战争 (Halo Wars)》传统 RTS 要素(基地、部队单位建造等)的统治 (Domination) 模式,当然还有《光环战争 2 (Halo Wars 2)》中全新的单位、领袖和特殊能力。还有死斗 (Deathmatch) 模式,玩家在其中进行 1v1 或 3v3 的对抗,直到决出最后的胜利者或团队。
闪电战 (Blitz) 是全新多人选项中最为独特的模式之一。在闪电战 (Blitz) 模式中,您需要建立一套数字牌组,包括一位代表您军团的领袖、手动挑选的个体单位(或团体单位)以及特殊能力。闪电战 (Blitz) 模式同样支持合作,因此一位玩家可以专注于一个方向(比如治疗),而另一位玩家则负责不同的游戏方向,比如防御或进攻。然后消耗能量(可在游戏地图中随机寻到)从牌组中打出卡牌。由于某些卡牌会比其他卡牌消耗更多的能量,因此这一模式的关键在于建立一套平衡的牌组。游玩单人战役即可获得不同类型的卡牌。您亦可以购买卡包,当然 Creative Assembly 再三保证这不会使游戏变得“氪金至上”。
需求和目标
需求
- 战略上足够出色的敌人(Atriox)
- 战役模式
- 玩家必须比 Atriox 采取更好的策略来获胜。
- AI 必须能够代表 Atriox 的形象,在战略上极富才华,在战术上也极为致命。
- 多人模式
- 玩家必须比对手采取更好的策略来获胜。
- 遭遇战 AI 能够训练和锻炼玩家,使他们为多人对战做好准备。
目标
构建一个具备以下能力的指挥官 AI:
- 教会玩家如何正确地玩游戏,而不只是简单地当作打靶练习。(AI 不只是简单地让玩家攻击,更重要的是通过玩家与 AI 的对抗,教会他们游戏的正确玩法。而不是把 AI 当成纯粹的"靶子"进行无意义的攻击练习。)
- 像人类玩家一样玩游戏
- 具备个性特征,从而让游戏有众多性格各异的指挥官。
- 具备不同的战略风格,比如Rush,Turtle,Fast Tech。
- 能够满足不同的游戏模式,如 Skirmish(主要),Death match,Domination,Shtrongholds,Campaign(次要)等等。
- 能够根据难度级别调整AI强度,高难度时更聪明,低难度时更笨。
- 能够在宏观和微观两个层面上做决策。
- 不能作弊
玩家如何思考?
“You need to know how humans play if you are going to make something that plays like a human." Kimberly Voll - GDC 2015
- 基于高水平玩家的思路建模 AI
- 1v1 对战模式中的冠军
- 关键能力
- 以非常高的水平来对战
- 分析自己和他人的游戏过程
- 传达分析结果的发现。将分析结果以简明扼要的方式呈现出来,让其他相关人员能够全面地理解和掌握这些发现的内容和意义。
- AI 是否有微操的能力?
AI 双层架构
宏观战略层
策略类型
- Rush:以最快的速度集结进攻力量,在对手经济刚起步时就发动猛攻,利用先手优势尽早摧毁敌人的根基。这需要 AI 高效地管理资源,快速生产大量进攻单位,在短时间内形成压倒性的兵力。
- Boom:在游戏初期快速开拓多个基地,通过积累资源和大量生产单位,逐步在经济和兵力上压倒对手。
- Map Control:迅速占领关键的战略要地和资源点,从而获得经济、地利等方面的优势,进而建立整体的领先地位。与 Boom 策略类似,都重视经济发展。但 Map Control 更注重快速扩张版图的控制力,采取更加主动进攻的方式。它不仅占领自身的基地点,还会主动出击夺取其他的占领点。
- Fast Tech:追求快速提升科技等级,率先获得高级单位的生产能力。跳过生产低级单位的阶段,而是先渡过一个科技飞跃期,迅速推进到高级兵种。
- Trutle:以防御为先,通过最大限度地加强防御力量和经济基础来确保安全。它不太有进攻性,而是尽量拖延战事,让自身力量持续积累。这种策略与 Boom 很相似,但 Turtle AI 更倾向于在一级单位和防御设施上投入更多资源,尽可能延长一级单位的使用时间,同时开拓多个基地并修建防御设施。
微观战术层
微观行为类型
- Pull back(撤回):在承受攻击或处于不利形势时,将单位临时后撤避免伤亡。
- Kite(放风筝):使用机动力较强的单位对敌人进行持续骚扰,然后在敌人反击时迅速离开。
- Push Advantage(扩大优势):当取得一定优势后,持续施加压力将优势扩大到极致,迫使敌人陷入被动。
- Auto garrison(自动驻扎):当受到攻击时,自动将附近可驻防单位调遣进入建筑物中防御。
- Focus fire(集中火力):集中火力攻击同一个目标,尽快将其摧毁。
- Hold ground(固守阵地):命令单位固守阵地,不准后撤。
- Scatter(分散队形):将集中的单位分散开来,避免遭到范围性攻击的伤害。
- Group up(组队集结):将分散的单位重新集合,增强实力。
- Heal(治疗):对受伤单位进行治疗。
- 主动技能
- 投掷手雷
- 地雷相关的行为
- 隐形和护盾
- ……
Agent 架构
控制级别
将 AI 分为“宏观”和“微观”两层,可以实现不同程度的控制:
- 完全控制:宏观层(Macro)负责整体战略、经济管理、科研布局等,微观层(Micro)负责每个战斗单位的精细指挥、战术行为等。两层紧密协同,AI可以在战略和战术层面都发挥出色的控制能力。适用于对AI要求最高的场景,如遭遇战(Skirmish)和战役模式(Campaign)。
- 部分控制:只控制微观层(Micro)的行为,宏观层(Macro)由预设脚本或简单的策略系统处理。如脚本设定的战役模式 AI 或火力对抗模式(Firefight Mode)等简化场景。
- 无控制:AI 系统完全不介入控制,交由玩家全权处理游戏内的所有操作。
心智社会(Society of Mind)
“Society of Mind"是指一种 AI 系统的架构设计理念,来自于 MIT 教授 Marvin Minsky 提出的理论模型。
在这种设计理念中,智能系统被视为由许多较小的独立进程或“智能Agent”组成的“社会”。每个智能 Agent 负责处理特定的任务,例如视觉、语言、规划等。这些 Agent 相互协作、交互传递信息,共同构成了看似统一的智能系统。
这种分而治之的方式类似于人类大脑是由众多神经元组成的网络。Society of Mind 的设计思想认为,通过将复杂的智能分解成许多较小的模块,能够更容易地克服人工智能系统设计中的难题。
基于“心智社会”的理念,《光环战争2》将 AI 拆分为众多不同的模块,如图所示:
宏观(Macro)层主要负责战略决策和高层次的管理,包括:
- 策略管理器:在游戏开始时读取策略表的数据。
- 策略表是一个表格,包含以下数据:
- 描述 AI 的宏观策略类型,如 Rush,Turtle,Fast Tech等。
- 建筑的建造顺序
- 任务(Mission)
- 攻击
- 防御
- 侦察
- 搜寻
- 科技的解锁顺序
- 指挥官能力的解锁顺序
- 静态数据和一些响应式(reactive)数据。静态数据为 AI 提供了基本的框架和方针,响应式数据则赋予了 AI 根据具体情况调整策略的能力。 - 警报管理器:动态添加任务(Mission)和防御建筑到列表中 - 策略决策器:扩展和调整根据策略表执行的决策。
- Bid Manager:负责宏观层级的行为调度和资源分配决策。
微观(Micro)层则负责具体的战术行为指挥:
- 微观操作管理器:负责指挥单位的微观战术行为,如移动、攻击等。
- 结合来自宏观战略层 “Mission Manager”的信息,最终输出单位的移动命令(Movement Commands)3。
数据驱动
完全脚本化:完全由设计师控制;
完全硬编码:完全由程序员控制;
数据驱动:基于 XML 的领域特定语言(Domain Specific Language, DSL),由设计师和程序员共同控制。双方理解系统需求,共同参与设计DSL,能够快速实现 DSL 的迭代和 AI 策略的原型设计。
通过数据驱动,设计师只需要专注设计各个指挥官的行为,而不必关心这些行为的底层实现。
策略表(Strategy Table)数量
- 发售版本
- 战役:28
- 遭遇战:66
- DLC
- 战役:15
- 遭遇战:111
- 总计:220
策略表的缺点
- 需要维护太多策略表。一个可行的解决办法是采用通用的标准化规则,但也允许有一些例外的特殊处理。
- 随着游戏的持续更新、平衡性调整以及新DLC的推出,设计师需要持续投入资源来更新维护策略表,才能跟上游戏的变化。
长期下去,这无疑会带来人力和时间成本的沉重负担。因此,如何在保持 AI 策略先进性的同时,减轻持续维护的工作量,将是策略表面临的一大挑战。
难度级别
不同难度级别对应不同的 AI 行为,高难度下会表现得更加智能,低难度下会表现得差一点。因此一个策略文件可以包含多个策略表,每个难度对应一个策略表。这种方法主要用于战役模式,让关卡设计师对 AI 有更强的掌控。
另一种方法是使用单个策略表,通过调整参数来适配不同的难度级别(heroic/normal/easy),这种方法用于遭遇战 AI。
还有其他 AI 属性的调整,调整方式通常是基于难度文件中定义的分段函数。诸如强力单位的数量上限、基地防御炮塔上限、科技/指挥官能力升级限制、微操行为限制等属性,可根据难度等级的不同进行调整。
原先设置遭遇战的难度,AI 在低难度下倾向于重点防守自身基地而不扩张,虽然 AI 策略受到了限制,但是玩家反映低难度时 AI 反而过于困难。
后来根据玩家反馈吗,开发团队对低难度 AI 进行了调整。现在的低难度 AI 会扩张,但在限制了升级、指挥官能力使用、防御建设等方面。
优化
- 将触发脚本迁移到 C++ 代码
- 多线程
- 时间切片
- Bucketing(轮询)
总结
整个演讲解释了《光环战争2》AI 系统的设计需求和目标,介绍了 AI 系统分层架构的设计和实现,基于“心智社会”理念拆散了系统,降低了系统复杂性。同时使用基于 XML 的 DSL 实现了数据驱动,策略表的设计也使得游戏 AI 具有足够的灵活性和可控性。这种灵活性和可控性对于构建高质量、均衡的 AI 系统至关重要,值得借鉴学习。
-
本节内容源自 《《光环战争 2 (Halo Wars 2)》将于 2 月 21 日登陆 PC 平台,游戏超棒的附加功能与系统要求亦将一一揭晓 》 ↩︎
-
这里的“Movement Commands”指的是单位战术命令,可能不仅仅是移动命令。 ↩︎