AI 感知、EQS 与导航
AI Perception, EQS & Navigation
AI 的感官层由三块组成:AI 感知 (AI Perception) 组件挂在 AIController 上监听视觉/听觉/伤害等刺激并更新黑板;环境查询系统 (EQS) 用生成器产生候选项、先过滤后打分,回答「哪里最好」;导航系统从碰撞几何生成分瓦片的导航网格 (NavMesh),按多边形代价寻路,并提供 RVO 与 Detour Crowd 避让。它们为行为树/StateTree 提供输入。
AI 的「感官」层
决策(见 行为树与 StateTree)需要输入:AI 感知 (AI Perception) 提供感官刺激,环境查询系统 (Environment Query System, EQS) 回答「附近哪个位置/对象最好」,导航系统 (Navigation System) 负责怎么走过去。
flowchart LR SS["Stimuli Source 刺激源"] --> PC["AI Perception 组件 挂在 AIController"] PC -->|On Target Perception Updated| BB["黑板 Blackboard"] BB --> BT["行为树 / StateTree"] BT -->|Run EQS Query| EQS["EQS: 生成器→过滤→打分"] BT -->|Move To| NAV["导航网格寻路"]
AI 感知 (AI Perception)
AI Perception 组件加在 AIController 上,充当刺激监听者,收集已注册的刺激源;感知更新时触发 On Perception Updated / On Target Perception Updated(后者带 AI Stimulus:Age、Expiration Age、Strength、刺激位置、接收位置、Tag、是否成功感知),通常用来更新黑板键。(AI Perception)
| 感官 | 要点 |
|---|---|
| Sight 视觉 | Sight Radius / Lose Sight Radius(滞后避免抖动)、周边视野半角、按阵营检测(阵营只能在 C++ 定义;蓝图可勾 Detect Neutrals 再用 Tag 过滤)、Auto Success Range |
| Hearing 听觉 | 感知 Report Noise Event,Hearing Range |
| Damage 伤害 | 响应 Any/Point/Radial Damage |
| Touch / Team / Prediction | 碰触、附近队友、预测目标未来位置 |
通用参数 Max Age(0 = 永不遗忘;需开启 Project Settings 中 Forget Stale Actors)、Starts Enabled、Dominant Sense。被感知的一方挂 AIPerception Stimuli Source 组件自动注册。调试:运行时按 ' 键,再按小键盘 4。(AI Perception)
EQS
EQS 用生成器 (Generator) 产生候选项 (Item),在上下文 (Context) 参照下运行测试 (Test) 进行过滤与打分,返回最佳项;例如找最近的血包、威胁最高的敌人、能看到玩家的位置。思想来自 UE3 的 Environment Tactical Query。(Environment Query System Overview)
- 自定义生成器可用蓝图或 C++(C++ 更快),自定义测试只能用 C++。
- 过滤测试总是先于打分测试执行,以减少需要打分的项,因此测试添加顺序无关紧要。
- 通过行为树的 Run EQS Query 任务运行;需启用 Environment Query Editor;编辑器内可用调试球预览结果。(Environment Query System Overview)
成本模型(通识):开销≈候选项数 × 测试成本,射线类测试(可见性)最贵,正好对应 Chaos 物理与碰撞 中的 Trace 查询,应先用便宜的距离过滤缩小集合——这与官方「先过滤后打分」的设计一致。
导航 (Navigation)
导航系统从关卡碰撞几何生成导航网格 (Navigation Mesh),把网格分成瓦片 (Tile),瓦片再分成多边形构成图;每个多边形有代价,代理寻找总代价最低的路径。(Navigation System)
| 机制 | 说明 |
|---|---|
| 修改器 (Modifiers) | 改变多边形代价,影响路线偏好 |
| 导航链接 (Nav Links) | 连接不连续区域(平台、桥),可自动生成 |
| 生成模式 | Static、Dynamic、Dynamic Modifiers Only |
| 避让 | RVO(Reciprocal Velocity Obstacles)与 Detour Crowd Manager |
| 世界分区 | 有专门的 World Partitioned Navigation Mesh |
(Navigation System)瓦片化是动态重建与流送的基础:只需重建受影响的瓦片(通识);开放世界配合 世界分区。因为导航网格来自碰撞几何,碰撞设置会直接影响可走区域。
取舍与坑
- 视觉感知按阵营过滤需要 C++ 团队接口,纯蓝图项目常退而用 Detect Neutrals + Tag。(AI Perception)
- Dynamic 生成最灵活但运行时重建有 CPU 开销;Dynamic Modifiers Only 是折中(取舍为通识,模式名来自 Navigation System)。
- EQS 每次查询的候选数量要控制;频繁查询可配合行为树 Service 降低频率。
出处
- Environment Query System Overview UE 5.8 文档
- AI Perception UE 5.8 文档
- Navigation System UE 5.8 文档