EQS 是什么:在空间里"找最佳点"
EQS 的全名是 Environment Query System。当 AI 需要"站在哪"时,它给出系统化的答案。
没有 EQS 的时候
要做"远程兵找掩体":
- 方案 A:在关卡里手工放几十个"掩体点",AI 遍历找最近的——工作量大、点位僵硬、关卡改动就失效;
- 方案 B:蓝图里 Tick 搜索半径内的静态网格——性能差、逻辑写得痛苦、无法表达复杂偏好。
EQS 把这件事标准化:一次查询 = 一组候选点 + 一组打分测试。
一次 EQS 查询的流程
1. 生成器(Generator):产生候选点(圆形采样、网格、路径点……)
2. 情境(Context):定义参照物(查询者、目标、双方中点……)
3. 测试项(Test):对每个候选点打分(距离、视线、掩体性……)
4. 排序(Sort):按总分选出最佳项
打分结束后,行为树 / StateTree 拿到"最佳位置"写进黑板,AI 走过去。
典型应用场景
| 场景 | 查询目标 |
|---|---|
| 远程兵找掩体 | 既能藏住又离目标不太远的点 |
| 近战 Boss 绕侧 | 目标侧面 / 背后的点 |
| 掉落物巡逻 | 区域内均匀分布的点 |
| 治疗 AI 站位 | 队友附近且远离战场中心的点 |
| 守卫射击位 | 有视线且在武器射程内的点 |
EQS 与 AIPerception 的分工
| 系统 | 回答 | 数据性质 |
|---|---|---|
| AIPerception | 哪里有目标(Actor) | 事实层 |
| EQS | 该去哪个位置 | 推理层 |
感知告诉 AI"敌人在那",EQS 告诉 AI"我该站哪打他"。两者常配合使用:EQS 的某个测试项可以是"该点能否看到目标(视线测试)"。
