#状态机 #状态 #行为树 #AI #游戏 #FSM

nightly beehave

一个用于定义和评估层次状态机(行为树)的简单库

4 个版本

使用旧 Rust 2015

0.0.4 2016年8月29日
0.0.3 2015年12月20日
0.0.2 2015年2月15日
0.0.1 2015年2月12日

#1921 in 算法

MIT 许可证

14KB
268

Beehave 构建状态

一个用于定义和评估层次状态机(行为树)的简单库。

文档

兼容性

由于这个库使用了 fn_traitsunboxed_closures,它只能使用 rust nightly 编译。有关稳定的有关问题的相关信息,请参阅 rust-lang/rust#29625。

此版本最后与 rustc 1.13.0-nightly (a23064af5 2016-08-27) 进行了测试。

示例

使用提供的宏构建行为树

let world_behaviour: Selector<World> = behaviour_selector!("World Root", [
    condition!("Ensure Can Shine",
        |world: &mut World| {
            world.can_shine()
        },
        action!("Cycle Day/Night", |world: &mut World| {
            world.toggle_sun()
        })
    ),
    condition!("Ensure Can Rain",
        |world: &mut World| {
            world.can_rain()
        },
        action!("Rain", |world: &mut World| {
            world.rain()
        })
    )
]);

let tree_behaviour: Selector<Tree> = behaviour_selector!("Tree Root", [
    behaviour_sequence!("Photosynthesise", [
        condition!("Ensure Can Make Energy",
            |tree: &mut Tree| {
                tree.can_make_energy()
            },
            action!("Make Energy", |tree: &mut Tree| {
                tree.make_energy()
            })
        ),
        condition!("Ensure Can Grow",
            |tree: &mut Tree| {
                tree.can_grow()
            },
            action!("Grow", |tree: &mut Tree| {
                tree.grow()
            })
        ),
        condition!("Ensure Can Emit Oxygen",
            |tree: &mut Tree| {
                tree.can_emit_oxygen()
            },
            action!("Emit Oxygen", |tree: &mut Tree| {
                tree.emit_oxygen()
            })
        )
    ]),
    condition!("Ensure Can Gather Sun",
        |tree: &mut Tree| {
            tree.can_gather_sun()
        },
        action!("Emit Oxygen", |tree: &mut Tree| {
            tree.gather_sun()
        })
    ),
    condition!("Ensure Can Gather Water",
        |tree: &mut Tree| {
            tree.can_gather_water()
        },
        action!("Emit Oxygen", |tree: &mut Tree| {
            tree.gather_water()
        })
    )
]);

对演员评估行为树

tree_behaviour.evaluate(&mut tree);
world_behaviour.evaluate(&mut world);

有关更多信息,请参阅 完整示例

您可以使用以下命令运行示例

cargo run --example main

设计目标

  • 轻松生成不可变的行为树
  • 在可变演员上评估行为树

另请参阅

PistonDevelopers/ai_behavior

许可证

Beehave 由 Ryan Scott 创建,根据 MIT 许可证分发。

无运行时依赖