Skip to content

alpinebuster/bevy-editor

 
 

Repository files navigation

Jackdaw

Jackdaw

License Crates.io Downloads Docs Discord

A 3D editor built for and with Bevy. Very early in dev, expect bugs and changes! A BSN-friendly branch exists on the bsn-editor branch (the flow is to read/write to the BSN AST and then sync to the ECS for rendering the UI and viewport).

We have also recently refactored our UX/UI to be very similar to the official Bevy Editor Figma design, to keep things consistent. Link here

From bevy_editor_prototypes repo:

Bevy Editor Vision

Bevy Editor Architecture

Bevy Editor Roadmap

image
2026-04-09.21-37-20.mp4
2026-04-09.21-39-12.mp4
2026-04-09.21-40-19.mp4
2026-04-09.21-46-33.mp4

Features

  • Brush-based geometry draw, edit, and CSG-combine convex brushes with vertex/edge/face/clip editing modes
  • Material system VERY wip - texture browser, material definitions with ORM auto-detection, per-face application
  • Terrain heightmap sculpting and texture painting, very WIP :)
  • Scene serialization save/load scenes in the .bsn format with full asset references. Older .jsn scenes are migrated on open.
  • Transform tools translate, rotate, scale with grid snapping and axis constraints
  • Undo/redo full command history - some bugs atm with this
  • Extensible register custom components, add inspector panels, integrate with your game

Usage

Install cmake, via package manager, or VisualStudio on Windows

Standalone install:

cargo install jackdaw

Open Jackdaw, and point to a new project! image

Add jackdaw to your project:

cargo add jackdaw

Then add EditorPlugins to your app:

use bevy::prelude::*;
use jackdaw::prelude::*;

fn main() -> AppExit {
    App::new()
        .add_plugins((
            DefaultPlugins.set(editor_window_plugin()),
            EnhancedInputPlugin,
            PhysicsPlugins::default(),
            EditorPlugins::default(),
        ))
        .run()
}

To load a scene you authored into your own game, depend on jackdaw_runtime and spawn a JackdawSceneRoot:

use bevy::prelude::*;
use jackdaw_runtime::prelude::*;

fn spawn_scene(mut commands: Commands, asset_server: Res<AssetServer>) {
    commands.spawn(JackdawSceneRoot(asset_server.load("scene.bsn")));
}

See the examples for more advanced usage.

Keyboard Shortcuts

Navigation

Key Action
RMB + Drag Look around
WASD Move
Q / E Move up / down
Shift Double speed
Scroll Dolly forward / back
F Focus selected

Editing

Key Action
Esc / R / T Translate / Rotate / Scale mode
B / C Draw brush (add / cut)
1-4 Brush edit: Vertex / Edge / Face / Clip
Ctrl+D Duplicate
Delete Delete selected
Ctrl+Z / Ctrl+Shift+Z Undo / Redo
Ctrl+S Save scene

For the full shortcuts reference, see the book.

Documentation

Contributing

See CONTRIBUTING.md for development setup and PR guidelines.

License

Dual-licensed under MIT or Apache-2.0, at your option.

About

A Bevy scene editor with hierarchy, inspector, and 3D viewport.

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages