AI 调试与性能

自动关联目录:AI 调试与性能

覆盖说明:官方 Gameplay Systems 正文点名 Debugging 为 AI 系统之一(已核实)。本篇按引擎工具组织。

1. 定位

AI 的问题通常不是"崩了",而是"没按我想的做"——所以 AI 调试的关键是让内部状态可见。

一句话定位:两个工具解决 90% 的 AI 问题:Gameplay Debugger(看现在)和 Visual Logger(看过去)。

2. 两个核心工具

工具看什么什么时候用
Gameplay Debugger当前 AI 的实时状态:黑板、行为树、感知、路径、EQS 查询实时排查
Visual Logger记录一段时间内的 AI 行为,可回放逐帧查看事后排查(尤其是偶发问题)

Gameplay Debugger

在 PIE 中按 '(引号键)唤出,用数字键切换页签:

页签内容
BasicAI 基本信息
Behavior Tree当前行为树的活跃节点与黑板键值
EQS查询与评分结果
Perception感知到的目标与刺激
NavMesh路径与导航状态

排查"AI 为什么不攻击"的标准动作:打开 Gameplay Debugger → 看黑板里的目标键是否为 None → 看行为树哪个分支活跃。

Visual Logger

  • 用 UE_VLOG 系列宏在代码里打点
  • 记录后可在 Visual Logger 窗口里逐帧回放
  • 适合排查"偶尔发生一次"的问题

3. 常用调试手段

手段用途
Show > Navigation显示 NavMesh
感知调试绘制显示视野锥与感知范围
ai.debug.* 类 CVar各类 AI 调试绘制
Log LogBehaviorTree Verbose / Log LogAIPerception Verbose行为树与感知日志
EQS 测试场景(EQS Testing Pawn)单独验证一个 EQS 查询
stat ai / 相关统计AI 耗时

4. 性能:AI 的成本在哪

成本项说明
感知视觉检测最贵,随目标数与频率线性上升
行为树 tick每帧重新求值装饰器与服务
EQS 查询每次查询都要采样与测试,频繁查询很贵
导航动态重建最贵;路径搜索次之
避让个体数越多越贵
动画每个 AI 都要跑 AnimInstance(见 动画性能)

5. 优化手段

手段说明
AI LOD / 更新频率远处 AI 降低更新频率(与 动画性能 的 URO 配合)
感知降频远处 AI 减少视觉检测频率
EQS 节流不要每帧查询,缓存结果
导航模式能用 Static 就别用 Dynamic(见 导航系统)
大规模用 Mass见 StateTree 与 Mass
Significance 联动见 Significance Manager

AI 优化的第一刀通常是"更新频率",而不是"算法"——远处 AI 每 3 帧更新一次,玩家几乎察觉不到。

6. 代价与权衡

手段收益代价什么时候不该用
Gameplay Debugger实时、零成本接入只在运行时看,不留档偶发问题要用 Visual Logger
Visual Logger可回放需要预先打点没打点就看不到
AI LOD / 降频收益大远处 AI 反应变慢近处/关键 AI 不该降
EQS 节流省查询成本决策略有延迟需要即时反应的查询不该节流
Mass规模可控心智模型不同数量少时不必

7. 踩坑与排查

坑现象怎么验证
不知道 AI 在想什么无从下手先开 Gameplay Debugger 看黑板
偶发问题复现不了—加 UE_VLOG 打点,用 Visual Logger 回放
AI 卡住不动看 NavMesh 页签:有没有路径
AI 不感知无目标看 Perception 页签
大量 AI 卡顿帧率掉先看是感知/行为树/导航/动画哪一项
EQS 每帧查性能差加节流与缓存
导航动态重建周期性尖峰见导航篇
只在编辑器测打包后不同测打包版本

8. 排查顺序

1. Gameplay Debugger 看黑板 + 活跃分支 → 定位是哪个系统给出的问题
2. 感知问题 → Perception 页签(见感知篇)
3. 移动问题 → NavMesh 页签(见导航篇)
4. 选点问题 → EQS 页签 + EQS Testing Pawn
5. 偶发问题 → UE_VLOG 打点 + Visual Logger 回放
6. 性能问题 → stat ai + 分项(感知/行为树/EQS/导航/动画)逐个关掉对比

参考