5 分钟上手 Bonsai:Cargo 一行配置 + 你的第一个游戏 NPC 行为树实战
【免费下载链接】bonsaiRust implementation of behavior trees for deterministic AI (now with Python bindings)项目地址https://gitcode.com/gh_mirrors/bonsai1/bonsai点击查看免费下载Bonsai 是用 Rust 语言编写的行为树Behavior Tree库crate 名为bonsai-bt专为游戏 NPC AI、机器人与确定性 AI 系统设计。本教程面向新手带你用 5 分钟完成Cargo 一行配置、构建你的第一个 NPC 行为树并打开实时可视化器观察它如何思考。什么是行为树行为树是一棵由节点组成的树叶子节点是可执行行为比如开枪逃跑每次执行返回三种状态之一Success成功、Failure失败或Running还没做完内部节点如Sequence、Select根据子节点的状态决定下一步走哪条分支每帧游戏逻辑对根节点执行一次tick树就按深度优先顺序遍历一轮相比有限状态机FSM行为树结构直观、组件可复用AI 逻辑再复杂也不会变成面条式状态跳转。 想深入原理可阅读官方概念文档docs/concepts/README.md第一步Cargo 一行配置在项目根目录创建或编辑Cargo.toml加入一行依赖即可需要 Rust 1.80[dependencies] bonsai-bt *也可以直接运行cargo add bonsai-bt。想完整体验本文所有示例可克隆仓库git clone https://gitcode.com/gh_mirrors/bonsai1/bonsai cd bonsai第二步构建你的第一个 NPC 行为树仓库自带一个最易上手的控制台示例examples/src/simple_npc_ai/main.rs。它的 AI 逻辑是只要 NPC 没死就循环执行移动 射击子程序只要还有行动点NPC 就 Run Shoot行动点耗尽后进入Rest恢复最后被击败核心结构只有两行代码简化展示// 内部只要还有行动点就一直执行跑射击 let run_and_shoot_ai WhileAll( Box::new(Action(EnemyNPC::HasActionPointsLeft)), vec![Action(EnemyNPC::Run), Action(EnemyNPC::Shoot)], ); // 外层只要 NPC 没死就循环 [跑射子程序 → 休息 → 死亡] let top_ai WhileAll( Box::new(Action(EnemyNPC::IsDead)), vec![run_and_shoot_ai, Action(EnemyNPC::Rest), Action(EnemyNPC::Die)], ); let mut bt BT::new(top_ai, blackboard);三个新手关键点WhileAll(条件, [子节点...])条件成立期间反复执行子节点列表Action(...)是叶子节点你在回调里实现具体逻辑并返回(Status, dt)BT::new(behavior, blackboard)创建行为树blackboard黑板是所有节点共享的工作内存例如示例用它记录射击次数第三步5 分钟跑起来cargo run --bin simple_npc_ai控制台会输出 NPC 的完整行动时间线NPC has action points: 3 Performing action: run. Action points: 2 Performing action: shoot. Action points: 1 Rested for a while... Action points: 2 NPC died... NPC shot 3 times during the simulation.游戏主循环里只需每帧调用一次bt.tick(...)得到Success | Failure就结束、Running就继续下一帧——行为树自己负责全部决策流。进阶彩蛋打开实时行为树可视化器 Bonsai 内置 WebSocket 可视化器。在示例 examples/src/visualizer_smoke/main.rs 中只需一个 API 调用let mut bt BT::static str, ()::new(build_tree(), ()) .with_telemetry(8910) // 开启可视化监听 8910 端口 .expect(bind 127.0.0.1:8910);运行cargo run --bin visualizer_smoke然后在浏览器打开http://127.0.0.1:8910/即可看到 27 节点的行为树实时渲染绿色为Success、黄色为Running、红色为Failure执行路径会逐帧点亮——调试 AI 从此告别满屏println!。行为积木速查表积木含义Sequence([A, B])A 成功后执行 B按顺序Select([A, B])先试 AA 失败再试 B优先级从高到低If(cond, A, B)条件成立执行 A否则执行 BWhile(cond, [A, B])cond 为真期间反复执行 A、BWhenAll([A, B])并行执行等全部成功WhenAny([A, B])并行执行等任一成功Race([A, B])并行竞速先完成者胜出After([A, B])并行执行但 A 必须先于 B 成功Invert(A)A 成功则返回失败反之亦然完整定义见 bonsai/src/behavior.rs。继续探索 更多可运行示例Boids 群集、3D 动画、无人机异步任务、Race 超时examples/README.md 长耗时任务如何交给后台线程而不阻塞行为树examples/src/async_drone/main.rs 并行语义、事件系统、Behavior 与 State 的区别docs/concepts/README.md 贡献与开发指南DEVELOPMENT.md一行bonsai-bt *你的游戏 NPC 就能拥有模块化、可观测、可扩展的 AI 大脑——这就是 Bonsai。赞分享【免费下载链接】bonsaiRust implementation of behavior trees for deterministic AI (now with Python bindings)项目地址https://gitcode.com/gh_mirrors/bonsai1/bonsai点击查看免费下载相关推荐5分钟快速上手Leaf构建你的第一个游戏服务器5分钟快速上手Leaf构建你的第一个游戏服务器 想要快速搭建高性能的游戏服务器Leaf是一个用Go语言编写的开源游戏服务器框架它提供了简单易用的接口和强大游戏开发后端网络RPC框架5分钟快速上手AgileConfig如何用Docker一行命令启动你的第一个.NET配置中心5分钟快速上手AgileConfig如何用Docker一行命令启动你的第一个.NET配置中心 AgileConfig 是一个基于 .NET Core 开发的轻后端微服务配置中心B站会员购抢票实战5步掌握Python自动化购票的终极指南B站会员购抢票实战5步掌握Python自动化购票的终极指南 在B站热门活动如BW、BML门票开售时你是否经历过页面卡顿、验证码干扰、网络延迟导致的抢票失败电商RPA创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

XLPagerTabStrip Swift 2 到 Swift 3 迁移指南:6.0+ 全部 API 命名变化与源码级验证

XLPagerTabStrip Swift 2 到 Swift 3 迁移指南:6.0+ 全部 API 命名变化与源码级验证

UI组件移动开发 【免费下载链接】XLPagerTabStrip Android PagerTabStrip for iOS. 项目地址: https://gitcode.com/gh_mirrors/xl/XLPagerTabStrip 点击查看 免费下载 本文面向正在把基于 XLPagerTabStrip 的 iOS 项目从 Swift 2 升级到 Swift 3 的开发者&#xf…

2026/10/15 18:40:54 阅读更多 →
DS18B20单总线多点温度检测:原理、电路与调试

DS18B20单总线多点温度检测:原理、电路与调试

简介:一份基于AT89C51单片机与DS18B20数字温度传感器的多点温度检测系统设计资料,适合正在做课程设计、毕业设计或入门嵌入式测温应用的单片机学习者。方案采用两个DS18B20采集温度,通过1602LCD循环显示,系统测温范围约-30℃至99℃…

2026/10/15 18:40:54 阅读更多 →
Seata AT模式实战:Spring Cloud微服务分布式事务落地指南

Seata AT模式实战:Spring Cloud微服务分布式事务落地指南

1. 项目概述:为什么微服务里“转账失败”比你想象中更难防在某次线上压测中,一个看似简单的“用户A向用户B转账100元”操作,在分布式环境下连续触发了3起资金不一致事故:A账户扣款成功,B账户余额没加,但事务…

2026/10/15 18:39:53 阅读更多 →

最新新闻

北航何静:Codex调用SketchUp实操,常见智能体均适用

北航何静:Codex调用SketchUp实操,常见智能体均适用

北京航空航天大学副教授何静实测 AI 智能体驱动 SketchUp 草图大师自动建模,覆盖 ChatGPT、Claude Code、Workbuddy、OpenClaw 多款智能体,对比 4 种建模实现路径,完成多类型建筑场景建模与迭代修改。实测场景:现代住宅、10 层玻璃…

2026/10/15 19:23:17 阅读更多 →
基于Qt的TCP/UDP网络调试助手:原理、架构与实战避坑

基于Qt的TCP/UDP网络调试助手:原理、架构与实战避坑

简介:Qt 网络调试助手是一份面向嵌入式与上位机开发者的完整源码包。在旧版基础上对全部代码重写,整合 TCP 服务端、TCP 客户端、UDP 服务端、UDP 客户端四种模式,并实现十六进制与 ASCII 收发、定时器自动发送、界面配置持久化、常用发送数据…

2026/10/15 19:23:17 阅读更多 →
从零开始的C语言学习总结与规划

从零开始的C语言学习总结与规划

一、自我介绍我选择C语言作为编程入门语言,是因为它语法简洁、贴近底层,能够帮助我建立扎实的计算机基础。虽然学习过程中会遇到一些困难,比如指针、内存管理等概念,但我相信通过持续练习和积累,一定能够逐步攻克这些难…

2026/10/15 19:23:17 阅读更多 →
3MB 的 Windows 极简待办工具,免登录也能高效规划每一天

3MB 的 Windows 极简待办工具,免登录也能高效规划每一天

你有没有发现,越是复杂的待办软件,越容易变成“摆烂软件”? 最开始我们只是想腾开脑袋容量,把重要的事随手记下来,防止忘事。但很多待办软件一上来就要注册、登录、云同步,甚至设置付费墙,还没开…

2026/10/15 19:23:17 阅读更多 →
建材服务能力升级的行业观察:从客户视角看专业培训的必要性

建材服务能力升级的行业观察:从客户视角看专业培训的必要性

摘要建材采购与普通消费品采购存在本质区别。一个装修项目涉及水电管材、防水涂料、瓷砖胶、板材龙骨等数十个品类,每个品类又有不同的品牌、规格、型号和执行标准。采购周期长、异常情况多、施工场景复杂,客户在采购过程中面临的问题,往往不…

2026/10/15 19:23:17 阅读更多 →
Claude Code插件加载机制与手动安装排错指南

Claude Code插件加载机制与手动安装排错指南

1. 从"官方插件仓库"这个信号说起:Claude Code 的插件体系到底在解决什么问题第一次看到claude-plugins-official这个仓库名的时候,我的直觉是:官方终于把插件这件事从"社区各自为战"收拢到"有一个统一入口"了…

2026/10/15 19:22:17 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →