Dexterous Developer
An experimental hot reload system for the bevy game engine. Inspired by DGriffin91's Ridiculous bevy hot reloading - adding the ability to re-load arbitrary systems, and the ability to transform resource/component structures over time.
Fuller documentation is available at: https://lee-orr.github.io/dexterous_developer/
Features
- Define the reloadable areas of your game explicitly - which can include systems, components and resources (w/ some limitations)
- Reset resources to a default or pre-determined value upon reload
- serialize/deserialize your reloadable resources & components, allowing you to evolve their schemas so long as they are compatible with the de-serializer (using rmp_serde)
- mark entities to get removed on hot reload
- run systems after hot-reload
- create functions to set-up & tear down upon either entering/exiting a state or on hot reload
- only includes any hot reload capacity in your build when you explicitly enable it - such as by using the CLI launcher
Known issues
- Won't work on mobile or WASM, and only tested on Windows
- events and states still need to be pre-defined
Installation
Grab the CLI by running: cargo install dexterous_developer_cli
.
You'll be able to run the dexterous verion of your code by running dexterous_developer_cli
in your terminal.
In your Cargo.toml
add the following:
[]
= "lib_THE_NAME_OF_YOUR_GAME"
= "src/lib.rs"
= ["rlib", "dylib"]
[]
= "0.11"
= "0.0.6"
= "1" # If you want the serialization capacities
If your game is not a library yet, move all your main logic to lib.rs
rather than main.rs
. Then, in your main.rs
- call the bevy_main function:
and in your lib.rs
, your main function should become:
If you have a plugin where you want to add reloadable elements, add the following in the file defining the plugin: