如何选择游戏AI架构
Conference: GDC 2010
Session Name: Deciding on an AI Architecture: Which Tool for the Job?
Speaker(s): Alex Champandard, Michael Dawe, Dave Mark, Steve Rabin, Charles Rich
Track / Format: AI Summit
Video: GDC Vault - Deciding on an AI Architecture: Which Tool for the Job?
“工欲善其事,必先利其器。”
—— 《论语·卫灵公》
AI 架构的选择是 AI 程序员需要解决的最重要问题之一。这个选择将为项目奠定基础,同时也决定了未来的方向。主要的 AI 架构都有自己的优缺点,很难确定哪一个架构最适合一个项目。
本次讨论将从独特的角度探讨这个问题。每一种主流架构都有一位代言人,他们将被提供假想的游戏例子,并被要求解释为什么他们支持的架构是最合适的选择,而其他的则不合适。通过不同架构的代言人就同一问题进行讨论和分析,可以更全面地评估每种架构的优劣,并对具体项目做出更合适的建议。
架构简介
PL: Planners
Advocate: Alex Champandard 特点:
- 可以自动搜索得到一组合适的行为
- 组合多个基本行为,从而完成目标
BT: Behavior Tree
Advocate: Michael Dawe BT 特点:
- 分层组织架构
- 使用复合和装饰节点完成决策
UT: Utility-Based Methods
Advocate: David Mark UT 特点:
- 根据行为的效用函数评估行为
- 使用权重对行为的评估进行微调
HF: Hierarchical Finite State Machines
Advocate: Steve Rabin HFSM 特点:
- 通俗易懂的设计模式
- 状态与行为的一一对应
应用场景
RPG
一个类似无冬之夜的RPG,角色有很多的武器,物品,法术,以及其它可选的动作。任何玩家可以用的物品也可以给NPC使用,如何设计玩家队伍里的队友 NPC?
HF: ★☆
- 类似 BT,对行为进行归类,完成层次结构
- 难点:分层结构
UT: ★★★★☆
- 无需分层,针对每个行为设置条件
- 难点:条件的建模,众多行为的可控性和调试
BT: ★★☆
- 按行为类别对行为进行归类,完成行为的层次结构。例如,战斗类,对话类,开锁捡拾物品,场景互动等等
- 根据NPC的职业,种族等更多类别,进行更多行为的分类。
- 难点:行为的顺序
PL: ★★★★☆
- 无需分层,针对行为设置条件和结果
- 根据规划得到一组规划的行为
- 难点:条件和结果的建模,重新规划的时机。
Common Wisdom
对于RPG游戏的战斗而言,AI 的目标通常比较明确,即使 AI 的实现比较 reactive,也能解决问题。
Strategy
- 一个可以通过很多途径获胜,但在各个层面具有众多复杂操作的策略游戏。例如,帝国时代,文明等。
HF: ★★☆
- 分层:根据获胜的方式划分策略集合,策略集合相当于AI如何取胜的配方。
- 在确定了高层级的状态集之后,指定状态转换的过度条件。
- 分层
UT: ★★★★
- 分层:根据获胜的方式划分为行为集合。
- 不分层:先确定下获胜方式,将其转化为权重,再附加至每个行为。
- 难点:分层,调试,AI too reactive 缺乏远见。
BT: ★★☆
- 分层:根据获胜的方式划分为行为集合
- 为每一种行为集合制定子行为
- 难点:分层
PL: ★★★★☆
- 从高层级,根据获胜方式划分为不同类型的目标
- 将高层级目标划分为多个低层级的目标
- 针对低层级的目标,规划得出行为序列。
- 难点:分层,行为的条件和结果建模,重新规划及性能。
Common Wisdom
- 对于复杂的策略游戏,分层几乎成为一种共识,这是一个可以将问题复杂度降低的有效途径。
- 对于HF,UT,BT这些缺乏规划手段的架构,可以使用 expert knowledge,即 prebaked plans,通过预先设置的行为组来实现合理的计划。
- 也可以收集测试期间玩家的操作,提供给AI参考(warframe 里AI的爬墙跑酷)。
FPS
一款偏快节奏的FPS,NPC会对玩家的状态(被发现,躲藏,潜行)快速做出反应。如何设计这样的NPC?
HF: ★★★☆
UT: ★★★
BT: ★★★★★
- 根据玩家的不同状态,指定不同的行为集。
PL: ★★★
- “快速反应”决定了规划器需要做出快速的判断和replan,对规划器的性能是个考验。
Sports
控制一个棒球游戏中的野手,投手,或者捕手。
HF: ★★★★★
- 底层:队员有不同的job
- 高层:一个负责队员协调的Manager,负责协调队员行动。
UT: ☆
- 为不同角色,制定不同的行为集
- 将球的位置作为一个核心参数,决定角色的位置
- 缺点:缺乏团队协作。
BT: ★★★☆
- 为不同角色,制定不同的行为集
PL: ☆
- 为不同角色,制定不同的目标
- 一个负责队员协调的规划器Manager,负责规划所有队员的行动。
- 缺点:有点杀鸡用牛刀的意味,over-engineering。
结论
2010 年的研讨会,时至今日过去了十几年。涉及的技术至今仍在使用,但很多游戏早已不是采用单一方案了。游戏 AI 不是通用人工智能,在追求更新的技术,更好的架构时,不应背离其服务的主体——游戏本身,它是为提高游戏性(游戏体验)而生的,而不是更高级的智能。