21 个版本
0.4.0 | 2024年7月8日 |
---|---|
0.3.1 | 2024年4月7日 |
0.3.0 | 2023年10月29日 |
0.2.9 | 2023年10月28日 |
0.1.7 | 2023年7月29日 |
#23 在 机器人 中
61 每月下载
用于 f-tree
2.5MB
12K SLoC
包含 (WOFF 字体,99KB) fontawesome-webfont.woff,(WOFF 字体,78KB) fontawesome-webfont.woff2,(WOFF 字体,45KB) open-sans-v17-all-charsets-300.woff2,(WOFF 字体,41KB) open-sans-v17-all-charsets-300italic.woff2,(WOFF 字体,45KB) open-sans-v17-all-charsets-600.woff2,(WOFF 字体,43KB) open-sans-v17-all-charsets-600italic.woff2 以及 7 个更多文件 等。
Forester - 一个快速且模块化的编排引擎,实现行为树。
关于
Forester 是一个框架,提供了一组工具以有效地执行任务编排。任务可以是同步的或异步的,本地或远程执行。Forester 负责正确执行和分发任务。框架的主要概念是基于行为树的流程,可以有效地应用于游戏、AI、机器人领域或任何可以使用工作流引擎的地方。
示例
语言非常简单
import "std::actions"
root main sequence {
store("info", "initial")
retryer(task({}), success())
store("field","some_info")
}
fallback retryer(t:tree, default:tree){
retry(5) t(..)
fail("just should fail")
default(..)
}
impl task(config: object);
和模拟器测试
#[test]
fn smoke() {
let mut sb = SimulatorBuilder::new();
let root = test_folder("simulator/smoke");
sb.root(root);
sb.profile(PathBuf::from("sim.yaml"));
sb.main_file("main.tree".to_string());
let mut sim = sb.build().unwrap();
let tracer = &sim.forester.tracer;
sim.run().unwrap();
}
或从控制台运行
forest sim --root tree\tests\simulator\smoke\ --profile sim.yaml
为什么选择 Forester
Forester 的主要思想和目标是使将不同任务复杂逻辑链接起来的过程既有效又简单。
以下一系列功能被用来突出这个框架。
- 用于描述逻辑的 DSL
- 框架提供创建异步和同步任务的能力
- 框架提供创建远程和本地任务的能力
- 工具以可视化和跟踪树的执行
- 模拟模式有助于设计决策
- 树优化和分析
- 验证引擎允许用户创建手动定义的验证
为什么选择行为树
首先,它们在编排逻辑上提供了强大的数学抽象
并能够将业务逻辑和树逻辑本身分离。
另一方面,它们只有一组逻辑上连接的组件,这使得设计更容易,行为树的一个巨大优点是它们提供了良好的模块化概念。
介绍行为树基本概念的文章
文档
常见的文档可以作为一本迷你书籍获取,描述了使用框架的各个方面
出版物
贡献
目前,该项目正在积极开发中(存在很多盲点),因此任何帮助都极为感谢。在项目的任何阶段都欢迎提供帮助,但现在尤其如此。
有关向Forester贡献的指南可以在CONTRIBUTING.md
文件中找到。
许可证
Forester遵循Apache许可证,版本2.0。
标志
依赖
~20–34MB
~578K SLoC