A VERY experimental scene editor for Bevy games.
Click and drag to place entities, use gizmos to move/rotate/scale. The inspector lets you tweak transforms, sprites, and UI components. Undo/redo works, and you can have multiple scenes open in tabs.
Drag textures onto sprites. The browser scans your project's assets/ folder and lets you preview images before assigning them.
Load a tileset PNG, pick a layer, and paint. Includes brush, rectangle, line, and fill tools. You can also edit per-tile collision shapes.
Run cargo build or bevy run from the toolbar. Output shows up in a terminal-style panel with color-coded compilation progress.
git clone https://github.com/jbuehler23/bevy_experimental_editor.git
cd bevy_experimental_editor
cargo run -p bevy_editorFirst launch prompts you to create or open a project. The editor creates a workspace file at ~/.bevy_experimental_editor/workspace.json to remember your recent projects.
Click the Run button in the toolbar. The editor builds your project and launches it in a new window. You can stop it anytime from the CLI panel.
- Scene editing: Multi-tab workspace, transform gizmos, entity hierarchy
- Inspector: Edit common components (Transform, Sprite, UI nodes)
- Asset browser: Texture preview and drag-to-assign
- Tilemap painting: Brush/fill/line/rectangle tools with layers
- CLI panel: Run builds, see output, stop processes
- Project templates: Generate starter projects with the wizard
- Keyboard shortcuts: Ctrl+S to save, Q/W/E for gizmos, Ctrl+Z for undo
- Prefab system: Save entity groups as reusable templates
- Animation editor: Keyframe animations directly in the editor
- Physics gizmos: Visual collision shape editing
- Play mode: Test your game without leaving the editor
- Script hooks: Attach custom behaviors to entities
- UI builder: Visual layout tools for Bevy UI
Full roadmap: docs/EDITOR_ROADMAP.md
Requirements:
- Rust 1.70 or newer
- GPU drivers supporting Vulkan, Metal, or DirectX 11+
Clone and run:
git clone https://github.com/<org>/bevy-experimental-editor.git
cd bevy-experimental-editor
cargo run -p bevy_editorFaster dev builds:
# Use dynamic linking for faster iteration
cargo run -p bevy_editor --features bevy/dynamic_linkingCheck docs/USER_GUIDE.md for a walkthrough. Key shortcuts:
| Shortcut | Action |
|---|---|
| Ctrl+S | Save scene |
| Ctrl+Z / Ctrl+Shift+Z | Undo / Redo |
| Q / W / E | Move / Rotate / Scale gizmo |
| G | Toggle grid snap |
| Middle mouse + drag | Pan viewport |
| Mouse wheel | Zoom |
The editor is split into independent crates so you can embed just the parts you need:
bevy_editor_scene- Scene management and persistencebevy_editor_tilemap- Tile painting and layer systembevy_editor_project- Project workspace and CLI integrationbevy_editor_assets- Asset scanning and browser statebevy_editor_ui_egui- egui-based frontend (swappable)
Example of using just the scene backend:
use bevy::prelude::*;
use bevy_editor_scene::SceneEditorPlugin;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(SceneEditorPlugin)
.run();
}See docs/ARCHITECTURE.md for details on the crate structure.
Pull requests welcome! Please:
- Run
cargo fmtandcargo clippybefore submitting - Include tests for new features
- Update docs if you add public APIs
Open an issue first for larger changes so we can discuss the approach.
Dual-licensed under MIT or Apache 2.0, your choice.
Built with:
- Bevy - Game engine
- egui - UI framework (via bevy_egui)
- bevy-inspector-egui - Component inspector
- bevy_ecs_tilemap - Tilemap rendering
Thanks to the Bevy community for feedback and testing!



