#gamedev #macro #bevy

bevy-butler

A crate for making Bevy systems more self-documenting

36 releases (6 breaking)

0.7.0 Oct 9, 2025
0.6.2 May 16, 2025
0.6.2-alpha.3 Oct 9, 2025
0.6.1-alpha.1 Mar 28, 2025
0.5.8-alpha.1 May 1, 2025

#321 in Game dev

Download history 7/week @ 2025-07-22 1/week @ 2025-08-05 1/week @ 2025-08-12 14/week @ 2025-08-19 3/week @ 2025-08-26 12/week @ 2025-09-02 4/week @ 2025-09-09 25/week @ 2025-09-16 54/week @ 2025-09-23 36/week @ 2025-09-30 330/week @ 2025-10-07 27/week @ 2025-10-14 10/week @ 2025-10-21 78/week @ 2025-10-28

447 downloads per month

MIT/Apache

35KB
298 lines

bevy-butler

A set of procedural macros for making Bevy plugins and systems more self-documenting.

Crates.io License Crates.io Version docs.rs Crates.io MSRV

Version Compatibility

bevy bevy-butler
0.17 0.7
0.16 0.6
0.15 0.5

Example

use bevy::prelude::*;
use bevy_butler::*;

#[butler_plugin]
struct MyPlugin;

#[derive(Resource)]
#[insert_resource(plugin = MyPlugin, init = Hello("World".to_string()))]
struct Hello(String);

#[add_system(schedule = Update, plugin = MyPlugin)]
fn hello_plugin(name: Res<Hello>)
{
    info!("Hello, {}!", name.0);
}

#[add_system(schedule = Update, plugin = MyPlugin, after = hello_plugin)]
fn goodbye_plugin(name: Res<Hello>)
{
    info!("Goodbye, {}!", name.0);
}

fn main() {
    App::new()
        .add_plugins(MyPlugin)
        .run();
}

WebAssembly support

WebAssembly support is currently locked behind the wasm-experimental flag. See the relevant issue for more information.

Dependencies

~21MB
~390K SLoC