一、概述
行为树(Behavior Tree)是一种控制AI决策和行动的分层结构,广泛使用在游戏开发中,如
- 游戏NPC AI中的敌人,队友
- 游戏流程管理,如新手引导系统,任务阶段推进
它以属性结构组织AI的逻辑行为,具有可读性好,模块化,可拓展性好等特点。
二、节点类型
- 根节点:行为树的起点,每次更新从这里开始
- 控制节点:决定子节点的执行顺序和方式
- 叶子节点:实际执行具体行为的节点
三、控制节点
- 选择节点(Selector):顺序执行,直到有一个成功(OR)
- 序列节点(Sequence):顺序执行,直到全部完成或有一个失败(AND)
- 并向节点(Parallel):同时执行所有节点
- 装饰器节点(Decorator):修改子节点的行为或返回状态,如取反、重复
四、叶子节点
- 动作节点(Action)
- 条件节点(Condition)
五、执行状态
- 成功
- 失败
- 节点正在进行中,后续的tick需要从这里继续进行
六、数据共享
BlackBoard
黑板,作为中心数据存储,解决了节点间通信的问题。
七、工作流程
- 从根节点开始,根据控制节点顺序遍历子节点
- 叶子节点执行具体行为并返回状态
- 根据状态决定是否执行其他子节点
- 按频率不断更新
八、running状态的处理
让 RUNNING
中的节点在下次 tick
继续运行是行为树实现的核心机制之一。
tick时需要传入上一次的状态。
组合节点需要记住其运行的子节点索引,下次tick时,从这个索引开始执行。
九、编辑器
行为树通常都配合编辑器使用,下面这个编辑器适用于游戏开发,源代码有TS和Lua两个版本。
https://github.com/zhandouxiaojiji/behavior3editor