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/
Grab the CLI by running: cargo install dexterous_developer_cli
. If you don't want to use the cli - there is more info in the docs.
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:
```toml [lib] name = "libTHENAMEOFYOUR_GAME" path = "src/lib.rs" crate-type = ["rlib", "dylib"]
[dependencies] bevy = "0.11" dexterous_developer = "0.0.4" serde = "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:
```rust fn main() { libNAMEOFYOURGAME::bevy_main(); }
```
and in your lib.rs
, your main function should become:
```rust
pub fn bevymain(initialplugins: impl InitialPlugins) {
App::new()
.addplugins(initialplugins.initialize::
If you have a plugin where you want to add reloadable elements, add the following in the file defining the plugin:
```rust
impl Plugin for MyPlugin {
fn build(&self, app: &mut App) {
app
.setupreloadableelements::
fn reloadable(app: &mut ReloadableAppContents) { app .addsystems(Update, thissystemwillreload); }
```
For the best results, you'll want to add the following to your .cargo/config.toml
:
```toml
config.toml
to enable "fast build" configuration. Please read the notes below.[target.x86_64-unknown-linux-gnu] linker = "clang" rustflags = ["-Clink-arg=-fuse-ld=lld", "-Zshare-generics=y"]
brew install llvm
[target.x86_64-apple-darwin] rustflags = [ "-C", "link-arg=-fuse-ld=/usr/local/opt/llvm/bin/ld64.lld", "-Zshare-generics=y", ]
[target.aarch64-apple-darwin] rustflags = [ "-C", "link-arg=-fuse-ld=/opt/homebrew/opt/llvm/bin/ld64.lld", "-Zshare-generics=y", ]
[target.x86_64-pc-windows-msvc] linker = "rust-lld.exe" rustflags = ["-Zshare-generics=n"]
[profile.dev] opt-level = 1
[profile.dev.package."*"] opt-level = 3
[profile.dev.package.gfx-backend-vulkan] opt-level = 3 debug-assertions = false
```