8 releases
| 0.2.0 | Oct 25, 2025 |
|---|---|
| 0.1.6 | Sep 26, 2025 |
#636 in Game dev
175 downloads per month
Used in bevy-ui-builders
55KB
156 lines
bevy-plugin-builder
Declarative plugin system for Bevy
Before & After
Before (Traditional Bevy Plugin)
pub struct GamePlugin;
impl Plugin for GamePlugin {
fn build(&self, app: &mut App) {
app.init_resource::<GameSettings>()
.init_resource::<PlayerStats>()
.add_message::<PlayerLevelUp>()
.add_message::<GameOver>()
.add_systems(Startup, initialize_game)
.add_systems(Update, (
handle_input,
update_player,
check_collisions
).chain().run_if(in_state(GameState::Playing)))
.add_systems(OnEnter(GameState::GameOver), cleanup_game);
}
}
After (bevy-plugin-builder)
use bevy_plugin_builder::define_plugin;
define_plugin!(GamePlugin {
resources: [GameSettings, PlayerStats],
messages: [PlayerLevelUp, GameOver],
startup: [initialize_game],
update: [
(handle_input, update_player, check_collisions)
.chain().run_if(in_state(GameState::Playing))
],
on_enter: { GameState::GameOver => [cleanup_game] }
});
Installation
[dependencies] bevy-plugin-builder = "0.2" bevy = "0.17"
Dependencies
~20–33MB
~537K SLoC