中EN
概念页

AI 感知、EQS 与导航

AI Perception, EQS & Navigation

更新于 2026-10-19 约 6 分钟UE5AIEQSAI 感知导航网格寻路

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 降低频率。
  1. Environment Query System Overview UE 5.8 文档
  2. AI Perception UE 5.8 文档
  3. Navigation System UE 5.8 文档

相关页面

游戏开发 · UE5行为树与 StateTreeBehavior Tree & StateTreeUE 的 AI 决策有两套工具:行为树 (Behavior Tree) + 黑板 (Blackboard) 是事件驱动的,条件写成装饰器 (Decorator),用 Simple Parallel、Services 和 Observer Aborts 代替传统并行节点;StateTree 是结合了行为树选择器和状态机转换的通用分层状态机,只在转换触发时按需选择状态,激活路径上的任务并发运行,通过属性绑定传递数据,也是 Mass 的行为层。优先级抢占多的战斗 AI 适合行为树,状态显式、分层或大规模的场景适合 StateTree。游戏开发 · UE5Chaos 物理与碰撞Chaos Physics & CollisionChaos 是 UE5 的物理与破碎系统。日常最常打交道的是碰撞模型:每个物理体有对象类型 (Object Type) 和对其他类型的 Block/Overlap/Ignore 响应,结果由双方共同决定;Hit 与 Overlap 事件都要显式开启。骨骼网格通过物理资产 (Physics Asset) 获得刚体与约束(布娃娃、物理动画);Chaos 破碎基于几何集合 (Geometry Collection) 的分级断裂、簇阈值、连接图与缓存回放,并能把事件交给 Niagara。物理体用盒/球/胶囊/凸包代理,原理对应游戏数学中的包围体与相交测试。游戏开发 · UE5世界分区World Partition世界分区 (World Partition) 是 UE5 的自动数据管理与基于距离的关卡流送 (Level Streaming) 系统:整个世界存为一个持久关卡,按可配置的运行时网格划分为单元格 (Cell),由流送源 (Streaming Source,默认是玩家控制器) 按距离加载/卸载。它配合一 Actor 一文件 (One File Per Actor, OFPA) 支持多人协作编辑,用数据层 (Data Layers) 按玩法状态切换内容,用分层细节层次 (Hierarchical Level of Detail, HLOD) 在远处以代理网格显示未加载的单元格。游戏开发 · UE5Gameplay 框架Gameplay FrameworkGameplay 框架 (Gameplay Framework) 是 UE 提供的一组相互配合的类,用来搭建游戏的基本结构:Actor 与组件 (Component) 构成场景中的一切;GameMode 在服务器上定规则并生成玩家;玩家由“控制器 (Controller) + 棋子 (Pawn)”组成;GameState 与 PlayerState 负责把全局与每个玩家的状态复制给所有客户端;GameInstance 跨关卡存活。游戏开发 · UE5角色移动组件与 MoverCharacter Movement Component & Mover角色移动组件 (CMC) 用「客户端预测 + 服务器校验 + 纠正后重放」实现联网移动:自主代理先在本地移动并把操作存起来,用 ServerMove RPC 发给服务器重演,位置不符时服务器用 ClientAdjustPosition 纠正,客户端再按保存的操作重放;模拟代理只应用复制下来的移动并做平滑。实验性插件 Mover 计划接替 CMC,改用共享时间线、回滚与重模拟的模型,并且更模块化。游戏开发 · UE5Gameplay 调试器与可视化日志Gameplay Debugger & Visual LoggerGameplay 调试器 (GDT) 用于在运行时实时查看玩法数据(Pawn、AIController、行为树与黑板、EQS、感知、导航网格),联网时客户端也能看,并且只复制已启用类别的数据。可视化日志 (Visual Logger) 则把 Actor 的状态和图形化信息录下来,之后在编辑器里按时间轴来回拖动查看,适合排查难以复现的 bug。游戏开发碰撞查询Collision Queries碰撞系统除了检测真实物体的接触,还要回答假设性问题:子弹从枪口朝某方向飞,先打中什么?车能否从 A 开到 B 不碰到东西?某半径内有哪些敌人?这类操作称为碰撞查询。最常见的是投射 (cast),也叫 trace 或 probe:沿射线或线段移动一个假想物体,看它会碰到什么;被投射的东西并不真正进入碰撞世界,不会影响其他物体(GEA4 卷 II 14.3.7)。游戏开发数据驱动与游戏世界编辑器Data-Driven Engines & Game World Editors当游戏行为可以部分或全部由美术和策划提供的数据控制,而不只由程序员写的代码控制时,引擎就是数据驱动的。它能提高团队效率、缩短迭代时间,但工具、健壮的运行时和预览手段都要花大量成本,过度设计反而降低生产力,所以要权衡并坚持 KISS。玩法领域里对应 DCC 工具的是游戏世界编辑器:创建世界块并放入静态和动态元素、设定对象初始状态和行为。GEA 列出了它的典型功能,并比较了不同引擎在何时做平台相关优化上的取舍(GEA4 卷 II 16.3–16.4)。游戏开发AI 感知系统概念AI Perception Concepts感知层把世界变成 AI 可决策的信念:视觉(视线、视野锥、丢失滞后)、听觉、伤害、接触等刺激,经衰减与遗忘写入知识/黑板。GEA 将其与寻路、记忆并列底层;「perception is reality」要求玩家可见结果与感知一致。游戏开发寻路与导航理论基础Pathfinding & Navigation Theory寻路是在图上找代价可接受的路径:BFS / Dijkstra / A 是同一家族;NavMesh、路点、格子是不同的图构建方式。分层(走廊↔房间、扇区↔网格)与「全局路径 + 局部避障」把大规模导航拆开。A 本身不管编队、动态挤让与动画根运动。游戏开发局部避障Local Collision Avoidance局部避障处理「附近智能体/动态障碍怎么挤得开」:在全局路径给出的期望速度上,用 VO / RVO / ORCA 等选一个短期内不撞的速度。它不替代 A/NavMesh,也不能独自解决大尺度绕路。游戏开发游戏 AI 决策管线Game AI Sense-Decide-Act Pipeline游戏 AI(与生成式 DNN 不同)通常按 感知 → 决策 → 执行 分层:底层是寻路、感知与记忆;中层是角色控制(对接动画/物理);上层是目标与决策(行为树、效用、规划等)。GEA 强调「perception is reality」——玩家看不见的内部聪明不算数。游戏开发黑板架构Blackboard Architecture黑板 (Blackboard) 是多模块共享的「工作记忆」:感知写入、决策读取、任务更新键值,避免各子系统用私有状态互相耦合。行为树的 Data Context、GOAP 的 Working Memory、Halo 的 Props,都是同一思想的变体。游戏开发 · GodotGodot 导航与寻路Godot NavigationGodot 同时提供图点寻路(AStarD)与基于导航网格的 NavigationServerD。网格路径适合「区域内任意点」;A 适合格子/路点玩法。

被这些页面引用1 篇

输入关键词开始搜索

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