一、概述

行为树(Behavior Tree)是一种控制AI决策和行动的分层结构,广泛使用在游戏开发中,如

  • 游戏NPC AI中的敌人,队友
  • 游戏流程管理,如新手引导系统,任务阶段推进

它以属性结构组织AI的逻辑行为,具有可读性好,模块化,可拓展性好等特点。

二、节点类型

  • 根节点:行为树的起点,每次更新从这里开始
  • 控制节点:决定子节点的执行顺序和方式
  • 叶子节点:实际执行具体行为的节点

三、控制节点

  • 选择节点(Selector):顺序执行,直到有一个成功(OR)
  • 序列节点(Sequence):顺序执行,直到全部完成或有一个失败(AND)
  • 并向节点(Parallel):同时执行所有节点
  • 装饰器节点(Decorator):修改子节点的行为或返回状态,如取反、重复

四、叶子节点

  • 动作节点(Action)
  • 条件节点(Condition)

五、执行状态

  • 成功
  • 失败
  • 节点正在进行中,后续的tick需要从这里继续进行

六、数据共享

BlackBoard黑板,作为中心数据存储,解决了节点间通信的问题。

七、工作流程

  1. 从根节点开始,根据控制节点顺序遍历子节点
  2. 叶子节点执行具体行为并返回状态
  3. 根据状态决定是否执行其他子节点
  4. 按频率不断更新

八、running状态的处理

RUNNING 中的节点在下次 tick 继续运行是行为树实现的核心机制之一。

tick时需要传入上一次的状态。

组合节点需要记住其运行的子节点索引,下次tick时,从这个索引开始执行。

九、编辑器

行为树通常都配合编辑器使用,下面这个编辑器适用于游戏开发,源代码有TS和Lua两个版本。

https://github.com/zhandouxiaojiji/behavior3editor

https://github.com/zhongfq/behavior3-ts

https://github.com/zhandouxiaojiji/behavior3lua