Skip to content

dexsper/bevy-yoleck

 
 

Repository files navigation

Fork Notice: This project is a fork of bevy-yoleck by IdanArye.

image

Fork Improvements

Feature Description
Redesigned Editor UI Complete UI/UX overhaul with split-screen layout: top panel for level management and playmode controls, right panel for entity properties editor, bottom panel for entity list, left panel for entity creation tools
Automatic UI Generation Automatic UI generation for components with support for numeric, boolean, string, vector, color, enum, option, list, asset, and entity fields
EntityRef System Entity linking system with automatic UI, filtering, and runtime UUID resolution. Supports drag-and-drop
Scene Gizmo Visual scene gizmo for camera orientation and control
Colored Axis Knobs Color-coded axis knobs (red for X, green for Y, blue for Z) automatically displayed for all three world axes
Camera Schemas Add camera controls with FPS-style movement for better 3D navigation, and ui switcher for camera modes
Simplified Macro API Streamlined derive macros with automatic trait implementations - YoleckAutoEdit now handles both auto edit and entity ref systems
Keyboard Shortcuts Delete entities with Delete key, copy/paste entities with Ctrl+C/Ctrl+V
Console System Optional console system for displaying logs in the UI

Bevy YOLECK - Your Own Level Editor Creation Kit

Yoleck is a crate for having a game built with the Bevy game engine act as its own level editor.

Features

  • Same executable can launch in either game mode or editor mode, depending on the plugins added to the app.
  • Write systems that create entities based on serializable structs - use same systems for both loading the levels and visualizing them in the editor.
  • Entity editing is done with egui widgets that edit these structs.
  • Support for external plugins that offer more visual editing.
    • One simple such plugin - Vpeol is included in the crate. It provides basic entity selection, positioning with mouse dragging, and basic camera control. It has two variants behind feature flags - vpeol_2d and vpeol_3d.
  • A knobs mechanism for more visual editing.
  • Playtest the levels inside the editor.
  • Multiple entity selection in the editor with the Shift key.

Examples:

Note: This fork is not published on crates.io yet. To run the examples, you need to clone this repository first:

git clone https://github.com/dexsper/bevy-yoleck-fork
cd bevy-yoleck

Then you can run the examples:

  • 2D example:

    cargo example2d
  • 3D example:

    cargo example3d

File Format

Yoleck saves the levels in JSON files that have the .yol extension. A .yol file's top level is a tuple (actually JSON array) of three values:

  • File metadata - e.g. Yoleck version.
  • Level data (placeholder - currently an empty object)
  • List of entities.

Each entity is a tuple of two values:

  • Entity metadata - e.g. its type.
  • Entity componments - that's the user defined structs.

The reason tuples are used instead of objects is to ensure ordering - to guarantee the metadata can be read before the data. This is important because the metadata is needed to parse the data.

Yoleck generates another JSON file in the same directory as the .yol files called index.yoli. The purpose of this file is to let the game know what level are available to it (in WASM, for example, the asset server cannot look at a directory's contents). The index file contains a tuple of two values:

  • Index metadata - e.g. Yoleck version.
  • List of objects, each contain a path to a level file relative to the index file.

Versions

bevy bevy-yoleck bevy_egui
0.17 0.30 0.38
0.17 0.29 0.37
0.16 0.28 0.36
0.16 0.27 0.35
0.16 0.26 0.34
0.15 0.25 0.33
0.15 0.24 0.32
0.15 0.23 0.31
0.14 0.22 0.28
0.13 0.21 0.27
0.13 0.20 0.26
0.13 0.19 0.25
0.12 0.18 0.24
0.12 0.16, 0.17 0.23
0.11 0.15 0.22
0.11 0.13 - 0.14 0.21
0.10 0.7 - 0.12 0.20
0.9 0.5, 0.6 0.19
0.9 0.4 0.17
0.8 0.3 0.15
0.7 0.1, 0.2 0.14

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

Your Own Level Editor Creation Kit

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Rust 99.9%
  • Shell 0.1%