中EN
精修课概念页

游戏 AI 导论:感知、决策、执行

Game AI Sense-Decide-Act Pipeline

更新于 2026-10-19 约 9 分钟游戏AI感知决策执行Sense-Decide-ActGEA

NPC 不需要真的聪明

说起「AI」,人们现在想到的多半是会聊天、会画画的生成式模型。可《游戏引擎架构》(GEA) 的作者 Jason Gregory 提醒过:游戏业说的 AI 和新闻里的深度网络不是一回事。游戏 AI 更像一套「障眼法」(smoke and mirrors),它的目标不是真的思考,而是让 NPC 看起来在理性地行动。

这决定了游戏 AI 的整个思路:玩家看不见的内部聪明不算数。守卫的「心理活动」再复杂,只要玩家觉得它又傻又随机,就等于白做。反过来,一个简单的系统,只要它的意图能被玩家看懂,就会显得很聪明。

三层:从走路到拿主意

GEA 把一个角色的 AI 粗分成三层:

目标与决策定目标、做决策;可选的情感、群体协调、学习角色控制走路、用枪、上车、进掩体底层基础寻路、感知、记忆与知识行为树、效用 AI、GOAP、选型、群体与阵型对接动画与物理感知、黑板、寻路、局部避障
三层由下往上搭:底层提供感官、记忆和找路的能力;中间一层把「去那里」「开枪」变成真正的动作;最上面才是拿主意。右边是这条课程线里对应的几课。
  1. 底层基础:路径寻找(常用 A*)、感知(视线、视野锥、对环境的了解),以及某种记忆或知识表示;
  2. 角色控制:怎样真正地走过去、用枪、上车、躲进掩体——这一层要和碰撞、物理、动画深度对接;
  3. 目标与决策:给角色定目标、做决策,还可以加上情感状态、群体协调(包抄、人群、鸟群那样的群体运动)、学习和适应。这一层最常见的做法是行为树。

一个闭环

把这几层串起来,就是一个不断转圈的闭环:

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 分三层:底层的寻路、感知和记忆,中间的角色控制,最上面的目标与决策;
  • 感知 → 知识 → 决策 → 执行 → 世界变化,是一个不断转圈的闭环;
  • 决策可以厚,执行要薄;玩家看得见的意图,比看不见的聪明重要。

练习:挑一个你玩过的游戏里的敌人,把它的一次行为——比如发现你、追过来、找掩体——拆进这个闭环:哪一步是感知,哪一步是决策,哪一步是执行?它有没有用喊话或站位让你「看懂」它在想什么?

接下来按这个顺序读:

  1. 本课:游戏 AI 导论
  2. AI 感知:守卫看见了什么,又以为看见了什么
  3. 黑板架构:感知、决策、执行共用的一块记忆
  4. 行为树:失败了,还有 Plan B
  5. 效用 AI:给每个念头打个分
  6. GOAP:只告诉 AI 想要什么
  7. 决策架构选型:同一个守卫的四种写法
  8. 寻路:A* 怎么少走冤枉路
  9. 局部避障:走廊里两个人怎么不跳舞
  10. 群体与阵型:鸟群、小队和阵型
  1. GEA4 Vol II §18.2.3 Artificial Intelligence(摘录笔记) Jason Gregory《Game Engine Architecture》第 4 版卷 II §18.2.3
  2. Handling Complexity in the Halo 2 AI(笔记) Damian Isla, Handling Complexity in the Halo 2 AI (GDC 2005)
  3. Three States and a Plan: The A.I. of F.E.A.R.(笔记) Jeff Orkin, Three States and a Plan (GDC 2006)

相关页面

游戏开发AI 感知系统概念AI Perception Concepts感知层把世界变成 AI 可决策的信念:视觉(视线、视野锥、丢失滞后)、听觉、伤害、接触等刺激,经衰减与遗忘写入知识/黑板。GEA 将其与寻路、记忆并列底层;「perception is reality」要求玩家可见结果与感知一致。游戏开发黑板架构Blackboard Architecture黑板 (Blackboard) 是多模块共享的「工作记忆」:感知写入、决策读取、任务更新键值,避免各子系统用私有状态互相耦合。行为树的 Data Context、GOAP 的 Working Memory、Halo 的 Props,都是同一思想的变体。游戏开发行为树原理Behavior Tree Fundamentals行为树 (Behavior Tree, BT) 用层级节点控制决策流:叶子做动作或条件,Sequence / Selector 等组合节点决定子节点如何推进;节点返回 Success / Failure / Running,从而自然跨多帧。相对 FSM,BT 更易用优先级回退表达「失败了还有 Plan B」。游戏开发效用 AIUtility AI效用 AI (Utility AI) 为每个候选行动/决策计算「有多想做」的分数,选最高分(或按分抽样)。Dave Mark 的 IAUS 将其做成纯数据驱动架构:考量 (Consideration) + 响应曲线打分,行为模块可拼装;相对硬编码 if/then,更不易卡死在单一行为。游戏开发目标导向行动规划 GOAPGoal-Oriented Action PlanningGOAP 把「如何满足目标」交给运行时规划:行动带前提与效果,用 A 在世界状态空间搜索最低成本动作序列。F.E.A.R. 用极薄 FSM(Goto/Animate)执行计划,换来目标与行动解耦、行为可叠加、失败可重规划。游戏开发决策架构选型:FSM、行为树与效用Choosing FSM, Behavior Tree & Utility AIFSM 强在少量离散状态与硬转换;行为树强在优先级回退与模块化任务;效用强在连续权衡与数据驱动调参;GOAP 强在声明式动作组合与重规划。实作常分层混用,而不是四选一宗教战。游戏开发寻路与导航理论基础Pathfinding & Navigation Theory寻路是在图上找代价可接受的路径:BFS / Dijkstra / A 是同一家族;NavMesh、路点、格子是不同的图构建方式。分层(走廊↔房间、扇区↔网格)与「全局路径 + 局部避障」把大规模导航拆开。A 本身不管编队、动态挤让与动画根运动。游戏开发局部避障Local Collision Avoidance局部避障处理「附近智能体/动态障碍怎么挤得开」:在全局路径给出的期望速度上,用 VO / RVO / ORCA 等选一个短期内不撞的速度。它不替代 A/NavMesh,也不能独自解决大尺度绕路。游戏开发群体与阵型行为Group & Formation Behaviors群体行为分两路:涌现式(Boids 分离/对齐/聚合)适合鱼群鸟群与背景人流;编排式(小队命令、阵型槽位、订单/风格)适合战术 AI。F.E.A.R. 表明复杂「侧翼」常可由个体目标 + 导航涌现,不必重型小队规划器。游戏开发 · UE5行为树与 StateTreeBehavior Tree & StateTreeUE 的 AI 决策有两套工具:行为树 (Behavior Tree) + 黑板 (Blackboard) 是事件驱动的,条件写成装饰器 (Decorator),用 Simple Parallel、Services 和 Observer Aborts 代替传统并行节点;StateTree 是结合了行为树选择器和状态机转换的通用分层状态机,只在转换触发时按需选择状态,激活路径上的任务并发运行,通过属性绑定传递数据,也是 Mass 的行为层。优先级抢占多的战斗 AI 适合行为树,状态显式、分层或大规模的场景适合 StateTree。游戏开发 · UE5AI 感知、EQS 与导航AI Perception, EQS & NavigationAI 的感官层由三块组成:AI 感知 (AI Perception) 组件挂在 AIController 上监听视觉/听觉/伤害等刺激并更新黑板;环境查询系统 (EQS) 用生成器产生候选项、先过滤后打分,回答「哪里最好」;导航系统从碰撞几何生成分瓦片的导航网格 (NavMesh),按多边形代价寻路,并提供 RVO 与 Detour Crowd 避让。它们为行为树/StateTree 提供输入。游戏开发状态模式与有限状态机State Pattern & Finite State Machines状态模式 (State Pattern) 把对象“依赖状态的行为”分散到各个状态类中,对象只持有指向当前状态的指针并把调用委托给它,状态切换就是换指针。它是实现有限状态机 (Finite State Machine, FSM) 的一种方式。FSM 能用很强的结构约束理清一团乱麻的标志位代码;状态组合爆炸、需要复用和需要“回到之前状态”时,分别用并发状态机、分层状态机和下推自动机来扩展。游戏开发动画管线与动作状态机Animation Pipeline & Action State Machines低层动画管线把片段和混合规格变成局部姿势、全局姿势和蒙皮矩阵调色板;其上的动作状态机 (ASM) 给游戏代码提供"按状态驱动动画"的接口。每个状态是任意复杂的片段混合,跟踪当前所有片段的方式有扁平加权平均和混合树两种;过渡用数据驱动的过渡矩阵描述,控制参数通过节点搜索、命名变量或控制结构体暴露给代码(GEA4 卷 II 13.9–13.10)。

被这些页面引用1 篇

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原