如何选择游戏AI架构

Posted on Dec 10, 2017

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

  1. 对于复杂的策略游戏,分层几乎成为一种共识,这是一个可以将问题复杂度降低的有效途径。
  2. 对于HF,UT,BT这些缺乏规划手段的架构,可以使用 expert knowledge,即 prebaked plans,通过预先设置的行为组来实现合理的计划。
  3. 也可以收集测试期间玩家的操作,提供给AI参考(warframe 里AI的爬墙跑酷)。

FPS

一款偏快节奏的FPS,NPC会对玩家的状态(被发现,躲藏,潜行)快速做出反应。如何设计这样的NPC?

HF: ★★★☆

UT: ★★★

BT: ★★★★★

  • 根据玩家的不同状态,指定不同的行为集。

PL: ★★★

  • “快速反应”决定了规划器需要做出快速的判断和replan,对规划器的性能是个考验。

Sports

控制一个棒球游戏中的野手,投手,或者捕手。

HF: ★★★★★

  • 底层:队员有不同的job
  • 高层:一个负责队员协调的Manager,负责协调队员行动。

UT: ☆

  • 为不同角色,制定不同的行为集
  • 将球的位置作为一个核心参数,决定角色的位置
  • 缺点:缺乏团队协作。

BT: ★★★☆

  • 为不同角色,制定不同的行为集

PL: ☆

  • 为不同角色,制定不同的目标
  • 一个负责队员协调的规划器Manager,负责规划所有队员的行动。
  • 缺点:有点杀鸡用牛刀的意味,over-engineering。

结论

2010 年的研讨会,时至今日过去了十几年。涉及的技术至今仍在使用,但很多游戏早已不是采用单一方案了。游戏 AI 不是通用人工智能,在追求更新的技术,更好的架构时,不应背离其服务的主体——游戏本身,它是为提高游戏性(游戏体验)而生的,而不是更高级的智能。