迷思与常见架构错误
开始写复杂 AI 之前,先排掉五个最常见的雷。这些问题在建项目时不起眼,后期会发展成"AI 团队的地狱"。
迷思一:AI 越聪明越好
"聪明"是有代价的:感知频率、EQS 查询、行为树规模都会吃性能。玩家觉得 AI 聪明,靠的是表现而不是算力:
- 一个"会找掩体"的 AI,表现上只需要它真的会跑掩体 —— 而不是每帧都重新计算最优掩体;
- 一个"会包抄"的 AI,表现上只需要它移动时绕个弧线 —— 而不是真的做了多智能体路径规划。
设计 AI 的正确姿势是:先定表现(玩家看到什么),再定实现(算到什么程度)。
迷思二:行为树可以写一切
行为树擅长"条件 → 行动"的组合,但不擅长:
- 明确的阶段(这时候用 StateTree 更清晰);
- 复杂的数值记忆(用黑板 + 数据结构更糟,不如专门的组件);
- 需要持续轮询的状态(行为树的 Tick 服务有开销)。
迷思三:Tick 里做决策
行为树的 Service 节点确实会周期性执行,但它的频率要控制。见过把 Service 设成每 0.1 秒跑一次的,100 个 AI 就是 1000 次 / 秒的决策计算。决策应该是事件驱动的:感知有了新信息再重新思考。
迷思四:全部 AI 共用一个行为树实例
行为树资产可以共享(数据资产),但黑板必须每个 AI 一份(记忆是私有的)。把黑板配置放到共享资产里没问题,运行时数据实例化必须分开。
迷思五:只在编辑器里测
编辑器里一切良好 → 打包后 AI 全傻。常见原因:
| 打包后的问题 | 根因 |
|---|---|
| AI 完全不动 | 导航数据没烘焙 / AIController 没生成 |
| 感知失效 | 感知配置依赖编辑器 Only 数据 |
| 行为树不跑 | 资产引用在打包时被裁掉 |
每次版本都做一次打包后的 AI 冒烟测试——这比任何编辑器验证都可靠。
