ITADN
piedoom/jackdaw
piedoom/jackdaw · 文件
文件最后提交记录最后更新时间
README.md

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

https://github.com/user-attachments/assets/c8f1dc66-ef32-44c6-837b-35b7eeb01e41

https://github.com/user-attachments/assets/779af6e1-bd34-49f4-a3b4-ccd474ea2f76

https://github.com/user-attachments/assets/1e2d7cfe-601c-4af7-8dd6-a9cddc4a3c6f

https://github.com/user-attachments/assets/56834720-599e-4461-b712-fff7b85fb128

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

Download a signed release bundle, or install all required executables from source:

cargo install --git https://github.com/jbuehler23/jackdaw jackdaw --locked

Take the release bundle if you can. It ships the prebuilt SDK, so you can create a project straight away; cargo install builds that SDK first, which is about half an hour, once per Jackdaw version. Either way your project's own first build is around nine minutes, because it compiles Bevy like any other Bevy project. Rebuilds after that are 1 to 4 seconds.

This installs jackdaw, jd, jackdaw-runner, and jackdaw-rustc-wrapper. Open Jackdaw and use New Game or Import Bevy Project; the import preview shows every proposed change before applying it. The same flows are available from the terminal:

jd new my-game && jd open my-game   # create
jd import /path/to/game             # preview integration for an existing game
jd import /path/to/game --apply
jd doctor --project /path/to/game   # why isn't this working?
jd upgrade /path/to/game --apply    # after a Jackdaw update

Import never edits your Cargo manifest, lockfile, toolchain, or target/, so cargo run keeps behaving exactly as it did. image

Jackdaw is a standalone editor. Game applications depend only on jackdaw_runtime. To build a custom standalone editor, depend on jackdaw_editor:

use bevy::prelude::*;
use jackdaw_editor::prelude::*;

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

Runtime extensions use the focused jackdaw_extension crate and install as signed .jdext bundles. In precompiled/shared-SDK builds, install, update, disable, and uninstall take effect without restarting; superseded native mappings are reclaimed when Jackdaw exits.

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

KeyAction
RMB + DragLook around
WASDMove
Q / EMove up / down
ShiftDouble speed
ScrollDolly forward / back
FFocus selected

Editing

KeyAction
Esc / R / TTranslate / Rotate / Scale mode
B / CDraw brush (add / cut)
1-4Brush edit: Vertex / Edge / Face / Clip
Ctrl+DDuplicate
DeleteDelete selected
Ctrl+Z / Ctrl+Shift+ZUndo / Redo
Ctrl+SSave 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.