Skip to main content

For game developersScript persona

A scene tree you already know, and a save-and-see loop instead of a build.

Nodes and scenes like the ones you already work in, scripts that go live in milliseconds without losing the state, scenes as TOML you can read and review, and one self-contained binary to ship. Written in Rust, MIT, 2D and 3D.

The Script persona on examples/hello: the script open beside the node tree, with the Output dock below

What you get

A tree of nodes, not an ECS to learn

A game is named nodes with scripts attached. Every node is an ECS entity underneath, and you never have to see it — that layer is for plugin authors.

Save the script, it is already running

Hot reload in milliseconds with the state intact: the ball keeps its position, the score keeps its value. A script that does not compile reports its file, line and caret, and the running code stays up.

Scenes are TOML

Readable, diffable, reviewable in a pull request, editable by hand or by the editor. One component is a scene key, a script call and an inspector row at the same time.

One file to ship

A pack fused onto a runtime: one self-contained binary per target, with no compiler, no sources and no runtime to install alongside it.

How it works

A scene is a file you can read. A component comes from a plugin and shows up in three places at once.

body3d, collider3d and shape3d are components the physics and render plugins registered. Registering them made them scene keys, script calls and inspector rows together — there is no separate binding step and no generated glue to keep in sync.

Scripts are Rune: Rust's syntax, no build step, async/await. A script is a file attached to a node, with init, update and whatever methods the scene calls.

scenes/main.toml
[[nodes]]
name = "Ball"
position = [0.0, 6.0, 0.0]
script = "scripts/ball.rn"
body3d = "dynamic"
collider3d = { kind = "ball", radius = 0.5 }
shape3d = { kind = "ball", radius = 0.5 }

In the editor

The Script persona puts the code, the tree and the output on one screen.

Script editor

Edit a script beside the running scene. Save and the change is live; a compile error names the file, the line and the column, and the old code keeps running.

Debugger

Breakpoints in the gutter, stepping, frames and locals in a dock. The game freezes while the editor stays live.

Play in editor

Run the scene in the viewport, keep the inspector, stop and be back where you were. The editor is itself a Balaur project, so it runs on what it edits.

Next to Godot, Unity and Unreal

Where Balaur stands against the engines most games are made in, as of September 2026. It is 0.1 and they are not — the maturity row is the one to read first.

Godot 4Balaur
Game codeGDScript and C#; C++ through GDExtensionRune scripts with no build step; plugins in Rust or C
Iterating on codeScripts reload on saveA saved script is live in milliseconds, with the state intact
Scene filesText .tscn files that diffTOML, with one rule for every component
DeterminismNot bit-exact across platformsSame bits everywhere: per-tick digests, record and replay, rollback
Licence and costFree, MITFree, MIT
MaturityMore than a decade, a huge community, consoles through partnersWeeks old, no binary release yet, no consoles
Unity 6Balaur
Game codeC#Rune scripts with no build step; plugins in Rust or C
Iterating on codeA script change recompiles and reloads the domain; entering play mode starts overA saved script is live in milliseconds, with the state intact
DeterminismNot bit-exact across platforms; deterministic multiplayer usually means Photon Quantum or a fixed-point simulation of your ownAn engine guarantee: fixed tick, digests, replay and a rollback module
Licence and costProprietary; a free tier below a revenue threshold, per-seat subscriptions above itFree, MIT, no threshold and no seats
MaturityTwo decades, the largest asset store there is, every platformWeeks old, no asset store, desktop only for now
Unreal 5Balaur
Game codeC++ and BlueprintsRune scripts with no build step; plugins in Rust or C
Iterating on codeLive Coding patches C++ into a running editor; otherwise a rebuildA saved script is live in milliseconds, with the state intact
DeterminismNot bit-exact across platformsSame bits everywhere, verified tick by tick
What you shipA packaged build carrying the engine runtimeOne self-contained binary: no compiler, no sources
Licence and costFree until $1M lifetime gross per product, then a 5% royaltyFree, MIT, no royalty
MaturityAAA-proven, consoles, the deepest tooling there isWeeks old, desktop only for now

Each rival's column comes from its own site and licence terms as of September 2026; check them before deciding anything, because they all move. If a cell is wrong, open an issue — this page should never flatter Balaur at another project's expense.

Balaur next to the other Rust engines, Bevy and Fyrox, is on Compare. What the engine does not do yet is on the roadmap, and it is a long list.

Change a script while the game runs.

examples/hello is a spinning cube, a bouncing ball and a HUD label in five short scripts. Open it, edit scripts/spinner.rn, and watch the new code take over with the state kept.