StateTree 与 Mass

自动关联目录:StateTree 与 Mass

覆盖说明:官方 Gameplay Systems 正文点名 State Trees 与 Mass Entity System 为 AI 系统之二(已核实)。本页覆盖两者的定位、适用边界与代价,具体 API 以目标版本为准。

1. 定位

StateTree 与 Mass 都是"行为树之外的另一条路",但方向相反:

  • StateTree:比行为树更擅长状态驱动的逻辑,且不限于 AI(可用于任何对象)
  • Mass:为海量简单实体设计,用 ECS 式的数据布局换取规模

一句话定位:个体复杂用行为树/状态树,个体简单但数量极多用 Mass。

2. StateTree

对比Behavior TreeStateTree
组织方式树 + 装饰器/服务状态机 + 层级状态
擅长序列化的任务流程状态驱动(待机/警戒/战斗/逃跑)
数据黑板(Blackboard)参数(Parameters)
适用范围主要 AIAI 与其它任何对象
心智负担树变复杂后难维护状态图更接近直觉

什么时候选 StateTree:

  • 逻辑本质上是"处在某个状态、满足某条件就切换"
  • 需要一套机制同时服务于 AI 与非 AI 对象
  • 行为树里出现了大量"装饰器 + 强制返回"的绕弯写法

什么时候仍用行为树:

  • 现有项目已在用,迁移成本高
  • 逻辑确实是"依次执行一组任务"的流程

3. Mass(Mass Entity / Mass AI)

要点说明
定位大规模实体的框架(ECS 式)
适用成百上千的简单实体:人群、兽群、大批量单位
机制数据按片段(Fragment)布局,处理器(Processor)批量处理
可视化可配合渲染与表示层
与常规 AI 的关系不是替代,而是"简单实体的另一条路"

判断标准:实体数量是否大到"每个都跑完整行为树"已经不可行?是 → Mass。

4. 代价与权衡

设计收益代价什么时候不该用
StateTree状态驱动更直观、可用于非 AI与行为树并存会增加两套心智模型团队已熟练行为树且逻辑是流程式
Mass规模极大时成本可控心智模型与常规 Actor 完全不同,调试更难只有几十个 AI 时完全不必
Mass + 常规 AI 混用按复杂度分层两套系统的数据交换要做桥接简单项目不必混
行为树成熟、文档与社区多复杂后维护成本高状态驱动型逻辑不划算

5. 踩坑与排查

坑现象怎么验证
用行为树表达状态机装饰器绕成一团逻辑若是状态切换,应换 StateTree
只有几十个 AI 却上 Mass复杂度白增数量不够就不该用
Mass 与常规 Actor 数据不同步表现与逻辑脱节需要明确的桥接层
两套决策系统并存团队认知负担明确各自负责哪类实体
StateTree 参数与黑板混用数据分散统一数据源
Mass 调试困难看不到个体状态需要专门的调试可视化

6. 排查顺序

1. 先判断规模:几十个 → 行为树/StateTree;成百上千个简单实体 → Mass
2. 再判断逻辑形态:状态驱动 → StateTree;任务流程 → 行为树
3. 混用时 → 明确分层与桥接
4. 调试 → 各系统有各自的调试手段,见 `AI 调试`

参考

  • 行为树 · 导航系统 · AI 调试 篇
  • 官方 Gameplay Systems 分类(State Trees、Mass Entity System)