Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mrchantey/beet

A modular behavior library for the Bevy Engine.
https://github.com/mrchantey/beet

ai behavior bevy game-development robotics

Last synced: 7 days ago
JSON representation

A modular behavior library for the Bevy Engine.

Awesome Lists containing this project

README

        

# beet



A modular behavior library for the Bevy Engine.



Crates.io version
Download
docs.rs docs



Guidebook
|
API Docs


Beet is behavior expressed as entity trees, using [Observers][bevy-observers] for control flow. The entity-based approach is very flexible and allows for multiple behavior paradigms to be used together as needed.

Currently implemented paradigms:
- [Behavior Trees](./examples/hello_world.rs)
- [Basic Utility AI](./examples/hello_utility_ai.rs)
- [LLM Sentence Similarity](./examples/hello_ml.rs)
- [Reinforcement Learning](./examples/frozen_lake_train.rs)

## Hello World

```rust
// A demonstration of Sequence control flow
world.spawn(SequenceFlow)
.with_child((
Name::new("Hello"),
EndOnRun::success(),
))
.with_child((
Name::new("World"),
EndOnRun::success(),
))
.trigger(OnRun);
```

[bevy-observers]:https://docs.rs/bevy/latest/bevy/ecs/observer/struct.Observer.html#

## Examples

The examples for beet are *scene-based*, meaning each example provides a scene for a common base app. As Bevy scene workflows are a wip, there are a few `Placeholder` types used for not-yet-serializable types like cameras, asset handles etc.

Most examples rely on assets that can be downloaded with the following commands, or manually from [here](https://beetmash-public.s3.us-west-2.amazonaws.com/assets.tar.gz).

```sh
curl -o ./assets.tar.gz https://beetmash-public.s3.us-west-2.amazonaws.com/assets.tar.gz
tar -xzvf ./assets.tar.gz
rm ./assets.tar.gz
```

## Bevy Versions

| `bevy` | `beet` |
| ------ | ------ |
| 0.15 | 0.0.4 |
| 0.14 | 0.0.2 |
| 0.12 | 0.0.1 |

## TODO

- When we get [`OnMutate`](https://github.com/bevyengine/bevy/pull/14520) observers, they should probably replace most `OnInsert` observers we're using