beet

Crates.iobeet
lib.rsbeet
version
sourcesrc
created_at2024-03-03 23:47:51.052232
updated_at2024-12-07 09:36:28.37303
descriptionA very flexible AI behavior library for games and robotics.
homepagehttps://beetmash.com/docs/beet
repositoryhttps://github.com/mrchantey/beet
max_upload_size
id1161012
Cargo.toml error:TOML parse error at line 24, column 1 | 24 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include`
size0
Peter Hayman (mrchantey)

documentation

https://beetmash.com/docs/beet

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 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:

Hello World

// 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);

Examples

⚠️⚠️⚠️ If you'd like to check out this repo please use the stable v0.0.3 commit ⚠️⚠️⚠️

Beet and my other crates it depends on are currently on a scene serialization bugfix Bevy fork, see this issue for details. The fix is scheduled for the 0.14.2 milestone so fingers crossed we'll be back on bevy main from then.

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.

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 observers, they should probably replace most OnInsert observers we're using
Commit count: 606

cargo fmt