Roadmap
Hello Balaur
September 2026

EditorDone
The editor
The base, built from the engine's own widgets, with undo, prefabs, ray picking and a few tools.

EditorDone
Tile maps
A tileset that says what each tile is, with voxel collision, autotiling, animated tiles, isometric and hexagonal layouts, and Tiled and LDtk import.

EditorDone
Script completion and hover
Completion, hover, go-to-definition, rename and formatting.

EditorDone
Selection, alignment and a library
Multi-select, align and distribute, gizmos, a Pen tool, a material panel, an Events view, a Cost dock, and editor/library.

Scripts and assetsDone
Rune scripting
One deterministic language with a math module, component handles on nodes, hot reload, a debugger over DAP, and a self-documenting API.

Scripts and assetsDone
Scenes, assets and packs
Prefabs with per-path overrides, id:// references that survive a rename, import settings beside each file, and sha256-verified binary packs.

Physics and animationDone
Rapier in 2D and 3D
Bodies, joints, character controllers, the query pipeline, collision events, ray-cast vehicles, and every collider shape including editable voxels.

Physics and animationDone
Rigs and animation
2D and 3D skeletons with five modifiers each, GPU skinning, deform and morph tracks, retargeting through a bone_map, ragdolls, tweens, crossfades and state machines.

Gameplay and audioDone
Interactivity without a script
Hooks, states, scene variables and the binding rows the Events view authors over them, so a scene reacts with no .rn beside it.

User interfaceDone
Widgets, text and the batteries
Thirty-one widget kinds over cosmic-text, containers that hand out rects, text, and the batteries: audio buses, input actions, saves, localisation.
Text in 2D and 3DAudio buses and positional audioInputsSave gamesLocalizationWidgets and themes

RenderingDone
What draws today
Sprites, tile maps, 2D lights, light3d and an environment, PBR, WESL shaders, the finishing passes, sixteen primitives, booleans and particles.

RenderingDone
Post-process materials
A name in camera.post the engine does not know is a material drawn over the whole frame, with tonemap the boundary.

NetworkingDone
The deterministic core
A fixed 60 Hz step, a per-tick digest checked across operating systems, record, replay and rollback, and three transports behind one trait.

Tools and servicesDone
Apple and the platform module
Sign-in, achievements, leaderboards, cloud saves and purchases behind one module, over Game Center, iCloud and StoreKit, with an export that signs.

ShippingDone
Export, the web and the CLI
balaur export for native and web with a size report, balaur test, a browser editor over IndexedDB, and a benchmark suite.
Balaur v2
December 2026

EditorDone
Focused script editing
The code pane takes the whole window beside its hooks list, with the docks folded away and put back as they were.

EditorDone
Project manager
The screen the editor starts on: recent projects, new from a template, open a folder, Godot import.
EditorDone
Editor themes
Themes a person owns beside the two bundled, a copy that states only what it changes, and a window that edits every role.

EditorDone
An import that does not stop the editor
A job that writes a few files a frame, a list of what is importing, and an Import button.

EditorDone
The User data dock
The files a game keeps for its player, saves and prefs among them, opened as trees and edited in place.

EditorDone
The Physics panel
Every physics component on one panel, and a mesh turned into a hull, convex pieces, voxels or a soft body in one click.

Scripts and assetsDone
A bad call caught before it runs
balaur check reads the scene beside the script and resolves a component's method against the table the run time uses.

Scripts and assetsDone
Addons as modules
A file directly under addons/<name>/ is <name>::<file> in every script, its functions and constants reached by path, in balaur_script_rune.
Scripts and assetsDone
Regular expressions
A regex module over regex-lite: search, search_all, replace, split and escape, with a match as a table.

Scripts and assetsDone
Godot import
balaur import over project.godot, .tscn, .tres and .gdshader, writing scenes, assets, script bodies and a report naming what did not convert.

Scripts and assetsDone
Properties that hold properties
A list, a map and a record a component or a script exports, drawn a row an entry in the inspector.

Physics and animationDone
Concave 2D colliders
A concave polygon cut into overlapping convex pieces, so nothing wedges into a seam, and imported Godot collision polygons keep their shape.

Physics and animationDone
Pause, time scale and smooth frames
A process mode per subtree, time scale, interpolation between fixed steps, max_fps, vsync, and a tick rate setting.
Gameplay and audioDone
An event a script can finish
A hook that answers true stops the broadcast, and a press reaches the node under the pointer and then every other node.

User interfaceDone
Lists, trees and tables
list, tree and table kinds with many rows selected, columns a drag resizes, and only the rows in view built.

User interfaceDone
Menus, popups and tooltips
A menu bar with submenus, a context menu a right click or a long press opens, shortcuts on rows, and a toast.

User interfaceDone
Text a game can edit
A text_area, a code kind with the editor's gutter, a drag_value with arrows and units, labels a drag selects, and [url] and [hint] marks.
User interfaceDone
Pointer shape and pass-through
A widget's cursor names the pointer over it, and pointer_through keeps ui.wants_pointer() false there.

RenderingDone
The 3D look
Image-based lighting and SSAO bound, glTF keeping its factors and maps, glass, mirrors, probes, finishing passes and layer stacks.
RenderingDone
2D batching
balaur_render draws the sprites and shapes that share a texture and a material in one call rather than one each.
RenderingDone
Automatic instancing
Meshes sharing geometry, a texture and a material draw as one call with an instance each.

Tools and servicesDone
Log files
Each run's log kept in a file that survives a crash, and read by scripts through log::since.

ShippingDone
A splash while a game loads
A picture over the first frames on every target, held past its seconds while a script reports what it is loading.
Balaur Again
Being built nowMarch 2027
Editor
Semantic tokens, inlay hints and code actions
Colouring from the compiler, inferred types shown inline, and a quick fix on a diagnostic, held until the gaps in completion are known.
Editor
Curve editor and onion skin
Tangent handles on keys, and ghosted neighbouring frames in the timeline.
Physics and animation
A sequencer
Cutscenes and cameras on a timeline, with tracks that call something rather than only move it.
User interface
Theme states and icons
disabled and focus tables in a widget_theme, and the icons a check, a spin box, a tab and a slider draw.
User interface
Aspect and camera containers
An aspect box that holds a ratio, and a camera's texture drawn as a widget the layout sizes.
Rendering
A rendered still
The fork's path tracer behind the editor's Export sheet, with a sample count and a denoise toggle.
Rendering
Immediate shapes in the draw order
z and a texture region on render.draw_*_2d, so a script's own drawing sits among the sprites rather than over them.
Rendering
Lit normal-mapped sprites
2D lights and shadows are built, and the normal map is what is left.
Rendering
Particles in 3D
particles3d, and in both dimensions: emission shapes, attractors, colliders, trails, sub-emitters, lit particles and a compute stepper.
Rendering
Culling and level of detail
Frustum culling and render.in_view, cull masks, MSAA, level of detail in the mesh asset, and multimesh.
Rendering
Voxels and terrain
Block types in a voxel_set, a greedy chunk mesher, a chunked grid file, a Voxels tool, .vox import, and heightfield meshing.
Rendering
More than one view
A viewport component for split screen, a camera rendered to a texture, and picture-in-picture.
Rendering
Video playback
A movie on a texture with its audio on a bus, render-side only.
Balaur Multiplayer
July 2027
Editor
Multiplayer dock and Play as two
A second instance of the game started from the editor, with each link and its stats in a dock.
Rendering
Decals and volumetric fog
A decal component projected onto the depth buffer, and fog a light throws shafts through.
Networking
WebTransport in the browser
Native QUIC datagrams, binary frames, stable ids and rollback are built, and the browser side is not.
Networking
Multiplayer from a script
A multiplayer module to host, join and leave a match from Rune, on a player's machine or a headless server.
Networking
Late join, reconnect and host migration
Under lockstep, out of the snapshot ring.
Networking
State replication and RPC
Deltas generated off the component registry, addressed by StableId rather than by path.
Networking
Client prediction and reconciliation
The client runs ahead and is corrected against the server, with nodes it does not own interpolated a send interval behind.
Networking
Lag compensation and interest management
A server rewinding to the tick the shooter saw, and a bandwidth budget per observer.
Gamend
The Gamend SDK
A Rune addon generated in the Gamend repository from its OpenAPI document and realtime protocol, one function per operation, copied into the library.
Gamend
A game server per lobby
Launched and registered by Gamend.
Gamend
Lobby tokens and rejoin
Lobby-scoped tokens, and a grace period to rejoin.
Gamend
The match record
The match recording uploaded as the lobby's record.
Gamend
Typed bindings for the whole API
In place of rest and push, over the nine calls the gamend module has today.

GamendDone
A Gamend dock
The server target, the signed-in user, the lobby, server data, a tab per feature, every call, and the log a game ships.
Balaur Scripting
November 2027
Editor
A graph that writes Rune
A graphs/*.toml asset whose save emits the .rn beside it, over a node palette generated from api.json.
Scripts and assets
Scripts you can take
Fifteen small scripts with exports() in the library dock, dropped onto a node and edited in place.
Scripts and assets
Extensions, tier two
Components, systems and calling back into scripts, across the C boundary.
Gameplay and audio
Navigation
A navmesh asset, paths over it, and agent2d and agent3d with avoidance, all on the fixed step and in the digest.
Gameplay and audio
Voice in a match
Capture, Opus, a jitter buffer, push-to-talk, echo cancellation and positional voice, never entering the simulation or the digest.
User interface
A graph canvas
A graph kind of nodes, ports and links a drag connects, with pan and zoom, under both the Rune graph and the shader graph.
User interface
Pickers, and drag and drop
A colour wheel and a file chooser as widget kinds, with a payload one widget offers and another takes.
Tools and services
An MCP server
balaur mcp over stdio, with the project, check, a headless run and a screenshot as tools an agent drives.
Tools and services
A crash report that reproduces itself
The recording, the log and the build id in one file.
Balaur Web
April 2028
Editor
The editor in a browser
A project kept on Gamend rather than only in the browser, and native targets exported from a tab.
Scripts and assets
Asset streaming
A load that runs off the tick, a scene added to one already running, and an asset dropped when nothing names it.
User interface
Accessibility
A screen reader over the widget tree, text scaling, captions, and colour-blind-safe defaults.
User interface
A layout that fits the screen
Width, height and touch classes that widgets, themes and settings answer to, over one scale that grows a control and its bar together.
Rendering
WebGL2 beside WebGPU
A browser without WebGPU falls back to a GL backend picked at boot, minus the compute passes it cannot serve.
Tools and services
Steam
Sign-in, achievements, leaderboards, cloud saves and purchases behind platform, with the overlay, Workshop, lobbies and Steam Input beside it.
Tools and services
Google Play
The same set, on Play Games Services.
Shipping
One-click deploy
A game on a URL or on a phone from one command or one button.
Shipping
A web module that loads in parts
The wasm split so a game fetches the physics, audio or networking it uses, with a pack arriving in pieces beside it.
Shipping
Embedding on a page
An npm runtime with a <balaur-viewer> element and a React wrapper, a typed page API, and a web module sized to the game.
Shipping
Sealed packs and stripped binaries
Bytecode on the web too, and a pack sealed with ChaCha20-Poly1305 under a project key, never a DRM wrapper.
Big Balaur
September 2028
Scripts and assets
A second scripting language
Luau, C# or mimas beside Rune, over the same balaur_script seam, held to the same determinism bar.
Scripts and assets
FBX import
balaur import over the ufbx crate, for the meshes, rigs and clips that never ship as glTF.
Scripts and assets
Rune compiled to WebAssembly
A script unit built to a .wasm module ahead of time and run over the same host calls, in place of the interpreter.

Physics and animationDone
Soft bodies
softbody2d and softbody3d: particles and elastic cells from a mesh or a generator, with plasticity, drawn from the solver.

Physics and animationDone
Cloth and rope
cloth, cloth_tube and rope layouts of a soft body, held in place by the particle indices pinned names.
Physics and animation
Root motion
A clip that moves the character rather than sliding under it, its root delta handed to character2d and character3d per tick.
Networking
WebRTC data channels
For browser peer-to-peer without a relay, never over raw UDP and never over ENet.
Gamend
A WebRTC relay for browsers
So a browser peer joins a match through Gamend.
Gamend
Skill matchmaking
Queues and ratings, whose work is in the Gamend server.
Tools and services
Projects in the cloud
Files on a Gamend account with a version per save, share links with roles, presence in the viewport, and comments anchored to nodes.
Shipping
Per-platform project settings
One settings screen over every table in project.toml, with an override per platform, architecture or build.
Balaur Inputs
March 2029
Editor
The editor on a tablet and a phone
The docks fold away on a small screen and open one at a time, and every control clears a finger.
Gameplay and audio
Motion and haptics beyond one pad
Switch Pro and Joy-Con gyro, sensor calibration, adaptive triggers, waveform haptics, device motion, and pads on iOS and Android.
Gameplay and audio
Touch controls a phone needs
touch_button and touch_stick components that feed the action table, pinch, swipe and long-press recognisers, and a keyboard height a layout can read.
User interface
A controller-only shell
Directional focus between widgets, an on-screen keyboard, safe-area insets applied to layout, and button glyphs that follow the pad.
Shipping
The shell a phone has
Opening a link works on every desktop and in a browser tab, and on neither phone, which each want a call of their own.
Shipping
What a phone lends a game
The share sheet, the camera, geolocation, biometrics, the clipboard, keep-awake and vibration, behind one device module.
Shipping
A game on a small machine
linux-arm64 is an export target that has never run, so a Raspberry Pi wants the GL backend and a measured frame budget.
Shipping
Suspend and resume
Hooks a script answers on a phone call or a console's suspend, audio released and taken back, and a tick that pauses.
Shipping
Console export
Switch, PlayStation and Xbox, each an NDA SDK that is not wgpu, winit or gilrs.
Shipping
XR
OpenXR on desktop and standalone headsets, WebXR in the browser, and ARKit and ARCore behind the same seam.
Balaur Physics
September 2029
Scripts and assets
Procedural noise
A noise module of value, perlin, simplex and worley with fbm over them, seeded like rng and computed on libm.
Scripts and assets
A world bigger than a float
Origin rebasing on the fixed step, so a world runs past the precision f32 has left, with the scene streamed in chunks.

Physics and animationDone
Tearing
tear_strain and tear_force on a soft body: past either, its elements break mid-step, and the node's on_tear runs.
Physics and animation
Falling sand
A 2D cellular grid of sand, water, lava and fire, in a balaur_cells plugin on the fixed step and in the digest.
Physics and animation
Fluids
fluid2d and fluid3d: particles with a rest density and a viscosity, with emitters and drains, drawn as points before a surface.
Gameplay and audio
Sound that fills a room
Effects on a bus: reverb, EQ, a compressor and a limiter, ducking, HRTF, and long music streamed rather than decoded whole.
Rendering
Terrain sculpting and foliage
Brushes over the heightfield asset, splat maps for the textures between them, and grass and trees scattered by painting.
Rendering
Occlusion culling
What stands behind a wall skipped, over a software depth rasteriser.
Rendering
Global illumination
Light that bounces, in real time: a screen-space pass or an SDF probe field, since nothing in the kiss3d fork does it.
Rendering
Decals and volumetric fog
A texture projected onto whatever is under it, and fog a light shafts through, both passes of our own.
Balaur Editor
March 2030
Editor
More than one window
A second OS window: a dock torn off the editor, or a game on a second display.
Editor
A shader graph
The canvas the Rune graph brings, emitting WESL instead of Rune, with [params] still read off the linked shader.
Editor
Modelling in the viewport
Push and pull a face, bevel an edge, subdivide and unwrap with xatlas, editing the mesh asset every shape already is.
Physics and animation
Gases and smoke
A buoyant volume that rises, spreads and cools, read by the renderer as a density field rather than as particles.
Physics and animation
Granular materials
Sand, mud and snow as a fluid with friction and a yield stress, in 2D and 3D, on the fixed step.
Gameplay and audio
Behaviour trees
A tree asset ticked on the fixed step and in the digest, with the navigation agents and the script API as its leaves.
Gameplay and audio
Dialogue
A dialogue plugin over an ink-shaped script, its lines addressed by key so strings.tr translates them.
Gameplay and audio
Translations as a pipeline
Import from .csv and gettext .po, an asset remapped per locale, a dock naming every missing key, and pseudolocalisation.
Balaur Packages
July 2030
Scripts and assets
More importers
Spine and DragonBones for 2D bone animation, layered PSD, and .blend read by calling Blender.
Scripts and assets
A package manager
[dependencies] in project.toml, balaur add, and a lockfile carrying a hash per entry, resolved against the catalogue.
Scripts and assets
Extensions in WebAssembly
A third tier beside the Rust and C ones: a .wasm module over wasmtime natively and the browser's own engine on the web.
Tools and services
A library others publish to
A Gamend-hosted catalogue over the manifest editor/library/ already uses, with a hash per entry and a name saying who published it.
Discord · Issues · Discussions