游戏 AI 导论:感知、决策、执行
Game AI Sense-Decide-Act Pipeline
NPC 不需要真的聪明
说起「AI」,人们现在想到的多半是会聊天、会画画的生成式模型。可《游戏引擎架构》(GEA) 的作者 Jason Gregory 提醒过:游戏业说的 AI 和新闻里的深度网络不是一回事。游戏 AI 更像一套「障眼法」(smoke and mirrors),它的目标不是真的思考,而是让 NPC 看起来在理性地行动。
这决定了游戏 AI 的整个思路:玩家看不见的内部聪明不算数。守卫的「心理活动」再复杂,只要玩家觉得它又傻又随机,就等于白做。反过来,一个简单的系统,只要它的意图能被玩家看懂,就会显得很聪明。
三层:从走路到拿主意
GEA 把一个角色的 AI 粗分成三层:
- 底层基础:路径寻找(常用 A*)、感知(视线、视野锥、对环境的了解),以及某种记忆或知识表示;
- 角色控制:怎样真正地走过去、用枪、上车、躲进掩体——这一层要和碰撞、物理、动画深度对接;
- 目标与决策:给角色定目标、做决策,还可以加上情感状态、群体协调(包抄、人群、鸟群那样的群体运动)、学习和适应。这一层最常见的做法是行为树。
一个闭环
把这几层串起来,就是一个不断转圈的闭环:
flowchart TB S["感知:视线 / 听觉 / 伤害 / 环境查询"] --> K["知识与记忆:黑板 · Props"] K --> D["决策:状态机 / 行为树 / 效用 / GOAP"] D --> A["执行:移动 · 动画 · 武器 · 对话"] A -->|"世界变了"| S
感知把世界上发生的事写进知识;决策读知识、挑一个行为;执行去改变世界;世界变了,感知又看到新的情况。这条课程线的每一课,讲的都是这个圈上的某一段。
厚决策,薄执行
决策层和执行层之间的接口,越薄越好。Jeff Orkin 在《F.E.A.R.》里把角色的状态机压到了只剩三个状态:Goto、Animate 和 UseSmartObject,后两者本质上都是播动画。
| 层 | 负责 |
|---|---|
| 决策 | 什么时候去哪里、播哪段动画、带什么参数 |
| 执行 | 走过去、把动画播出来 |
决策可以很复杂(F.E.A.R. 用的是规划器),执行却只有几个动词。这种「厚决策、薄运动层」的拆法,让两边可以各自演进:换一套决策方法,不用重写走路和播动画的代码。
复杂度的账
行为越加越多,AI 就越难管。Damian Isla 在讲 Halo 2 的 AI 时,列了一张「复杂度要付的账」:
| 代价 | 意思 |
|---|---|
| 连贯性 (Coherence) | 不能在两个行为之间来回抖 |
| 透明度 (Transparency) | 玩家要能猜出 AI 想干什么 |
| 运行时开销 (Run-time) | 每帧的 CPU 时间 |
| 脑力 (Mental bandwidth) | 设计师和程序员还能不能想清楚这套系统 |
| 可用性 (Usability) | 关卡设计师能不能导控 AI |
| 多样性 (Variety) 与变化 (Variability) | Isla 同样列出的两项 |
Halo 2 的应对办法之一,是让关卡设计师用高层的手段——订单 (Order) 和风格 (Style)——去导控 AI,比如「占住这片区域」「允不允许冲锋」,而不是一帧一帧地写脚本。
perception is reality
GEA 把这条原则放在最重要的位置:如果玩家觉得 NPC 愚蠢或随机,再精致的情感模型也没有用。所以设计时要优先保证看得见的意图——喊话、朝向、站位——和 AI 内部的决策一致。
Orkin 在 F.E.A.R. 里还用了一个小技巧:小队的喊话是在行为已经决定之后才补上的,用来制造「他们听懂了命令、在互相配合」的感觉。
在游戏里怎么用
取舍与常见的坑
小结与练习
- 游戏 AI 的目标是让 NPC 看起来理性,不是真的思考;
- 角色 AI 分三层:底层的寻路、感知和记忆,中间的角色控制,最上面的目标与决策;
- 感知 → 知识 → 决策 → 执行 → 世界变化,是一个不断转圈的闭环;
- 决策可以厚,执行要薄;玩家看得见的意图,比看不见的聪明重要。
练习:挑一个你玩过的游戏里的敌人,把它的一次行为——比如发现你、追过来、找掩体——拆进这个闭环:哪一步是感知,哪一步是决策,哪一步是执行?它有没有用喊话或站位让你「看懂」它在想什么?
接下来按这个顺序读:
游戏 AI(与生成式 DNN 不同)通常按 感知 → 决策 → 执行 分层:底层是寻路、感知与记忆;中层是角色控制(对接动画/物理);上层是目标与决策(行为树、效用、规划等)。GEA 强调「perception is reality」——玩家看不见的内部聪明不算数。
游戏 AI 不是什么
Gregory 指出:业界说的「AI」与新闻里的生成式 AI / 深度网络不是一回事;游戏 AI 更常是 smoke and mirrors,目标是让 NPC 看起来理性。(GEA4 Vol II §18.2.3 Artificial Intelligence(摘录笔记))
三层(GEA 导览)
书中把角色 AI 粗分为:
- 底层基础:路径寻找(常用 A*)、感知(视线、视野锥、环境知识)、记忆/知识表示。
- 角色控制:如何真正走出、用枪、上车、进掩体——深度对接碰撞、物理与动画(同书 §13.10)。
- 目标与决策:目标设定、决策逻辑,以及可选的情感、群体协调、学习/适应;常见载体是行为树。
(GEA4 Vol II §18.2.3 Artificial Intelligence(摘录笔记))
flowchart TB S["感知 Sense\n视线 / 听力 / 伤害 / 环境查询"] --> K["知识 / 记忆\n黑板 · Props · 工作记忆"] K --> D["决策 Decide\nFSM / BT / Utility / GOAP"] D --> A["执行 Act\n移动 · 动画 · 武器 · 对话"] A -->|"世界变化"| S
上图:感知写入知识,决策读知识选行为,执行改世界再反馈感知。
与「执行」的薄接口
Orkin 在 F.E.A.R. 里把角色 FSM 压到几乎只有 Goto / Animate:决策层负责「何时去哪、播哪条动画」,执行层只移动与播片。(Three States and a Plan: The A.I. of F.E.A.R.(笔记))这与「厚决策树 / 薄运动层」的现代拆分一致。
复杂度与可导控
Isla(Halo 2)提醒:行为数量上来后,要付 连贯性、可理解性、帧耗、设计师脑力 的账;还要让关卡设计师能用订单/风格等高层手段导控,而不是逐帧脚本。(Handling Complexity in the Halo 2 AI(笔记))
原则:perception is reality
若玩家感觉 NPC 愚蠢或随机,再精致的情感模型也无效。设计时应优先保证 可观察的意图(喊话、朝向、站位)与决策一致。(GEA4 Vol II §18.2.3 Artificial Intelligence(摘录笔记);对话补强意图亦见 Orkin 小队节)
引擎实现指针
- UE:感知/EQS/导航见 AI 感知、EQS 与导航;决策见 行为树与 StateTree。
- Godot:导航见 Godot 导航与寻路。
- 本目录其余页是引擎无关原理,与上列实现页形成「原理 ↔ 实现」互链。
出处
- GEA4 Vol II §18.2.3 Artificial Intelligence(摘录笔记) Jason Gregory《Game Engine Architecture》第 4 版卷 II §18.2.3
- Handling Complexity in the Halo 2 AI(笔记) Damian Isla, Handling Complexity in the Halo 2 AI (GDC 2005)
- Three States and a Plan: The A.I. of F.E.A.R.(笔记) Jeff Orkin, Three States and a Plan (GDC 2006)