- Structure game logic as systems that query components via ECS — prefer small, focused systems over monolithic update functions.
- Use Bevy's plugin pattern (`impl Plugin`) to organize related systems, resources, and components into reusable modules.
- Structure game logic as systems querying components: `fn system(query: Query<&Transform, With<Player>>)` — keep systems small and focused.
- Organize code into plugins (`impl Plugin for MyPlugin`) that group related systems, resources, and components.
- Use Bevy states (`States` enum) for game flow (menu, playing, paused) — add systems to specific state schedules.
- Use `Commands` for spawning/despawning entities; use `Res<T>` and `ResMut<T>` for global resources.
- Use `Events<T>` and `EventReader`/`EventWriter` for decoupled communication between systems.