Skip to main content

Features

Everything in the engine today. Each item links into the documentation.

Core

  • Scene tree over an ECS. A game is a tree of named nodes with scripts attached; every node is a hecs entity, and every subsystem is a plugin over the same data plane. Node paths, transform propagation, and a fixed frame schedule are core systems. → Scenes and nodes
  • Declarative scenes. Scenes are TOML; plugins extend the vocabulary with schema-described components, and one registration buys the scene key, the runtime API, and editor support at once. → Scenes and nodes
  • Shared assets. Content by reference or inline — a string is a reference, a table is a definition — for every asset type a plugin registers. → Assets
  • Headless by default. Everything runs without a window or GPU: tests, servers, CI, and benchmarks measure the engine itself.

Scripting

  • Two languages, one API. Luau (default) and Rune call the same bindings, declared once against a language-neutral seam; a third language costs one crate. → Scripting
  • Instant hot reload. Saving a script swaps code into the running game in milliseconds, preserving live state — automatic, always on in dev mode, provided by the core. → Scripting
  • Events without signals. The engine calls handler methods scripts declare by name, and async results can be awaited sequentially; both arrive deterministically at the start of a tick. → Networking

Simulation

  • 3D and 2D physics. Rapier with enhanced-determinism, both worlds on a fixed 60 Hz step, declared in scenes or driven from scripts. → Physics
  • Animation. Clip assets with transform, component-property, and method tracks; script-driven tweens through the same sampler; twelve easing curves; all on a fixed timestep. → Animation
  • Cross-platform determinism. Identical inputs produce bit-for-bit identical simulations on every platform: seeded RNG, libm transcendentals, ordered collections, replayable input and network snapshots. → Determinism

Interface

  • Rendering. 3D and 2D shapes through kiss3d/wgpu behind a feature flag, with cameras, debug drawing, grids, and screenshots.
  • UI. Widget components for in-game HUDs, and an immediate-mode egui API for scripts with script-defined themes. → UI
  • Audio and input. rodio-backed playback; backend-agnostic per-frame input snapshots (keys, mouse, edges).

Online

  • Networking. HTTP requests and websocket connections for scripts, on background threads, delivered into the simulation once per tick. → Networking
  • Gamend backend. Login, REST, realtime rooms, and server hooks on the same delivery contract. → Gamend

Tooling

  • An editor that is a Balaur project. Scene tree, generated inspector, viewport gizmos in 3D and 2D, script editing with hot reload, play-in-editor, and a clip timeline — built entirely on the public scripting surface. → The editor
  • Extensions. The same Plugin trait ships linked in behind a cargo feature or as a shared library loaded at run time, with an ABI fingerprint check at the boundary. → Modules and extensions
  • Benchmarks. A headless suite reporting each result as a share of one 60 fps frame, running the same scenarios on both script languages. → Getting started

Shipping

  • Reproducible packs. Export compiles scripts to bytecode and bundles them with scenes and assets; the same sources give the same bytes on any machine. → Shipping
  • One executable. Fusing a pack onto a runtime template produces a single binary per platform — no compiler, no sources, no Rust toolchain required to ship. CI cross-compiles the headless engine to iOS, Android, and WebAssembly on every push. → Shipping

Balaur is free and open source under Apache-2.0: github.com/balaurengine/balaur. There is no binary release yet; see Getting started.