This library provides sophisticated reactive programming for the bevy ECS. In addition to supporting one-shot chains of async operations, it can support reusable workflows with parallel branches, synchronization, races, and cycles. These workflows can be hierarchical, so a workflow can be used as a building block by other workflows.
There are several different categories of problems that bevy impulse sets out to solve. If any one of these use-cases is relevant to you, it's worth considering bevy impulse as a solution:
- Coordinating async activities (e.g. filesystem i/o, network i/o, or long-running calculations) with regular bevy systems
- Calling one-shot systems on an ad hoc basis, where the systems require an input value and produce an output value that you need to use
- Defining a procedure to be followed by your application or by an agent or pipeline within your application
- Designing a complex state machine that gradually switches between different modes or behaviors while interacting with the world
- Managing many parallel threads of activities that need to be synchronized or raced against each other
- Introduction to workflows
- JSON Diagram Format
- Bevy Impulse Docs
- Bevy Engine
- Bevy Cheat Book
- Rust Book
- Install Rust
Bevy Impulse is supported across several releases of Bevy:
bevy | bevy_impulse |
---|---|
0.14 | 0.2 |
0.13 | 0.1 |
0.12 | 0.0.x |
The main
branch currently targets bevy version 0.12 (bevy impulse 0.0.x)
so that new developments are still compatible for users of bevy 0.12. New features
will be forward-ported as soon as possible. main
will move forward to newer
versions of bevy when we judge that enough of the ecosystem has finished migrating
forward that there is no longer value in supporting old versions. In the future
we may come up with a more concrete policy for this, and we are open to input on
the matter.
This is a Rust project that often uses the latest language features. We recommend
installing rustup
and cargo
using the installation instructions from the Rust
website: https://www.rust-lang.org/tools/install
For Ubuntu specifically you can run these commands to get the dependencies you need:
- To install
rustup
andcargo
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
- Make sure you have basic compilation tools installed
sudo apt-get install build-essential
Once dependencies are installed you can run the tests:
cargo test
You can find some illustrative examples for building workflows out of diagrams:
To use bevy_impulse
in your own Rust project, you can run
cargo add bevy_impulse