Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/mrchantey/beet
- Owner: mrchantey
- License: apache-2.0
- Created: 2024-03-03T21:45:46.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-10-29T06:50:19.000Z (about 2 months ago)
- Last Synced: 2024-10-29T21:02:04.273Z (about 2 months ago)
- Topics: ai, behavior, bevy, game-development, robotics
- Language: Rust
- Homepage: https://mrchantey.github.io/beet/
- Size: 10.2 MB
- Stars: 45
- Watchers: 2
- Forks: 1
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE-APACHE.txt
Awesome Lists containing this project
README
# beet
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