跳到主要内容

behavior-tree 简介

behavior-tree 是一个基于 behavior3 的 Go 行为树实现,可直接使用官方在线编辑器编辑逻辑节点,并保持与原版编辑器一致的数据格式(使用 JS 版本翻译而来)。

behavior-tree 是仓库和产品对外品牌,对应 Go module github.com/henrytien/behavior-tree。Go 包声明使用 package behaviortree,不能写成带连字符的 package behavior-tree;示例可继续使用 b3 作为显式导入别名。本仓库源自 magicsea/behavior3go,现独立维护。

命名规则

  • 对外品牌、仓库名、文档站和 module path 使用 behavior-tree
  • Go package declaration 使用 behaviortree,因为 Go 标识符不能包含连字符。
  • 文档示例可继续写 b3 "github.com/henrytien/behavior-tree",用于保持示例简短并兼容 behavior3 风格的常量命名。

与一般行为树的区别

此行为树和一般的行为树略有不同:

  • 结构无状态:行为树结构只保持一份,所有运行状态记录在**黑板(Blackboard)**里。
  • 一般的行为树每个对象都需要一份完整的树结构来保存状态;而这里只需一个树实例就能驱动成百上千个对象,各对象的状态彼此隔离在自己的黑板中。

这种设计在游戏服务器等需要管理大量 AI 实体的场景下尤为高效。

节点分类

行为树由四类节点构成:

分类常量说明
组合 Compositecomposite控制子节点的执行顺序(Sequence / Priority 等)
装饰 Decoratordecorator修饰单个子节点的行为(Inverter / Repeater 等)
行为 Actionaction叶子节点,执行具体逻辑(Wait / Log 等)
条件 Conditioncondition叶子节点,返回判断结果

每次 Tick 都会从根节点开始向下传播信号,节点返回四种状态之一:SUCCESSFAILURERUNNINGERROR

下一步