游戏 AI 的三个层次:移动、感知、决策
无论用哪套框架,游戏 AI 在结构上都可以拆成三层。分清楚这三层,是避免"AI 写成一团乱麻"的前提。
三层结构
| 层次 | 回答的问题 | UE 对应组件 |
|---|---|---|
| 移动层 | 我在哪、怎么去那里 | 导航网格(NavMesh)+ 移动请求 + 角色移动组件 |
| 感知层 | 我看到 / 听到 / 感觉到了什么 | AI 感知系统(AIPerception)+ EQS 环境查询 |
| 决策层 | 我现在该做什么 | AIController + 行为树 / StateTree / 蓝图状态机 |
一个铁律:三层之间只通过数据对接,不要互相寄生。 决策层只说"去位置 X",不关心腿怎么迈;感知层只说"前方 20 米有敌人",不决定要不要追。
为什么先分清层次
一个经典的反面教材:把"看到敌人"的逻辑写在移动回调里("移动完成时检查附近有没有敌人,如果有就追")——结果 AI 在移动中不会反应,只有停下来才会察觉敌人,表现极其迟钝。把感知独立成层(感知系统按配置频率更新并触发事件),AI 的反应就和移动状态无关了。
各层的更新频率不同
| 层 | 典型更新频率 | 原因 |
|---|---|---|
| 移动 | 每帧(由角色移动组件驱动) | 平滑运动 |
| 感知 | 按配置(如 0.5 秒一次 + 事件触发) | 看远比动慢,降频省性能 |
| 决策 | 感知有变化时 | 没有新信息就不必重新思考 |
这些都是性能优化的抓手:大量 AI 同屏时,多数卡顿来自"每帧都在跑的错误层"——比如每帧 Tick 决策、每帧全地图搜索目标。第 5 章的性能部分会展开。
本书的组织与此对应
- 第 2 章(行为树)与第 3 章(StateTree):决策层
- 第 4 章(EQS):感知 / 空间推理层
- 第 5 章(工程化):三层如何组织进项目,包括导航与多人
这种分层也对应 UE 的设计:引擎把感知、路径、决策拆成独立的 AI组件,分层即架构。
