moonbit-behavior-tree 是一个针对游戏 AI 与智能体(Agent)开发设计的行为树引擎库。项目使用纯 MoonBit 开发,提供包括 Composite(顺序、选择、并行)、Decorator(逆变、重复、限流等)及 Leaf(动作、条件)在内的完整节点模型,内置共享内存 Blackboard(黑板)系统,支持流式 Builder 构建与调试追踪。项目具有零依赖、高性能、跨平
版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9
京公网安备 11010802047560号
MoonBit Behavior Tree
一个使用纯 MoonBit 编写的、轻量、高性能且零外部依赖的行为树(Behavior Tree)决策引擎库。
适用于游戏 NPC AI 控制、智能体(Agent)的任务流程决策与复杂业务编排,支持 WebAssembly (
wasm-gc)、JavaScript 以及 Native 全平台。特性
snapshot/restore沙盒、事务、差异补丁与原子校验SuccessAll/SuccessOne策略可配置安装
方法一:moon add(推荐)
方法二:手动添加依赖
如果是手动配置依赖,首先在包目录的
moon.mod中添加依赖声明:然后在你需要使用它的包的
moon.pkg中导入:快速开始
高级用法
事件中断(InterruptNode)
如果应用更适合使用闭包处理事件,也可以注册 handler 并显式派发;事件最多被派发一次:
多 NPC 并发调度(Scheduler)
黑板快照沙盒
原子状态事务与差异补丁
复杂动作可以先在隔离黑板中试算,只有校验通过才提交;这适合商店购买、战斗规划、存档和网络同步:
有界事件路由
EventRouter将消息队列接入帧循环,每帧最多处理固定数量事件;返回Running的 handler 会自动保留原事件,适合资源加载、网络重试和多帧动画:优先级与帧预算调度
当场景中有大量独立 NPC 或 Agent 时,可使用
BudgetScheduler避免单帧工作量失控:有界执行追踪
TraceBuffer只保留最近 N 条节点结果,不会让长时间运行的服务无限增长日志内存:项目结构
运行与测试
可重复基准
基准只统计逻辑 Tick 与三种状态,不依赖机器时钟,因此可在不同后端和 CI 上复现:
当前固定场景为启用工作流、禁用工作流和带执行预算的持续运行节点;边界覆盖空集合、零/负预算、阈值恰好命中、缺失黑板键、嵌套快照回滚和独立黑板克隆。
严格验收命令
本地 Native 构建需要系统 C 编译器;CI 会在 Linux、macOS、Windows 上执行标准检查。仓库当前有效
.mbt源码超过 5200 行,其中排除测试后的生产代码约 4200 行;生成目录_build/不计入源码规模。示例输出
许可证
本项目采用 Apache-2.0 开源许可证。
项目代码为原创 MoonBit 实现,未复制第三方源文件或生成代码;行为树概念仅参考公开算法资料。测试与示例均为本仓库原创,第三方依赖为空。若未来引入外部代码、数据集或生成文件,必须在本节或单独的
NOTICE/THIRD_PARTY.md中记录来源、版本、许可证和再分发范围。参考资料