All notable changes to onegame are listed here. The format follows Keep a Changelog, and versions follow Semantic Versioning from 1.0.0.
[Unreleased]
[1.1.2] - 2026-10-27
Added
OneGame.Platform.RunningOn(Android,IOS,Browser,Phone,Mobile,Desktop): one way for a game to ask what it runs on.
Fixed
- Android builds reported themselves as Linux to platform checks (
OperatingSystem.IsAndroid()is false in a NativeAOT Android app); the engine now asksRunningOn, and Bricks hides Quit on Android. Scenario captures on Android usename-mobile.pngreferences like iOS and the browser.
[1.1.1] - 2026-10-26
Fixed
- Linux audio output: the ALSA sink never reported its device side, so the
audioreport showedframesWritten,framesPlayedandpeakPlayedas 0 on every ALSA device even while sound was playing, and a device that really took nothing could not be told apart. It now reports frames written, frames the device has consumed (fromsnd_pcm_delay), the peak of consumed frames, its PCM state and underrun count. - The device checks in
tools/devicesnow fail unlessframesWrittenandframesPlayedare above 0, not on aRunningstate alone.
[1.1.0] - 2026-10-26
A game builds from nuget.org alone, with no engine checkout.
Added
RecursiveAI.OneGame.Cli: theonegamecommand as a framework-dependent dotnet tool (dotnet tool install -g RecursiveAI.OneGame.Cli).RecursiveAI.OneGame.Sdk: an MSBuild SDK for games. It sets the target framework and the rules, references the engine libraries at its own version, adds the development tools in Debug builds, and carries the export targets and entry files.onegame newwrites a project on it (<Project Sdk="RecursiveAI.OneGame.Sdk/1.1.0">), and with--servera dedicated-server project (<OneGameKind>Server</OneGameKind>).onegame export --target linux|winas short names forlinux-x64andwin-x64.tools/ci/package-smoke.shand a CI job that pack the engine into a local feed, install the tool from it and run new, run, test and a NativeAOT export on Linux and Windows.
Changed
- Games inside an engine checkout (
--engine,ONEGAME_ROOT, the samples) build against project references as before. - Not yet from packages: the web export, Play Billing in Android builds and plugin servers need a game created with
--engine.
[1.0.0] - 2026-10-25
The first release: a C# game engine with no editor, driven from a terminal.
Programming model
- Entities are partial classes holding synced state, commands, deterministic simulation and
[View]members. Source generators emit change tracking, binary codecs, deltas, replica types, versioned snapshots and command stubs. - Analyzers make the rules compile errors: no floats, wall-clock reads, threads, I/O or hash-order iteration in simulation code; views read state and send commands but never write it.
- Fixed-point numbers, named random streams and
Timed<T>interpolation values.
Sync and networking
- Nodes, scopes, authorities and subscriptions; per-connection visibility (everyone, owner, team, hidden) enforced at the byte level; drift hashes always on.
- Prediction with rollback, atomic authority transfer, relaying and escrow for changes that span scopes.
- Reliable UDP and WebSocket transports, reconnection, dedicated server hosts and hot-reloadable server plugins.
- Single-player is a one-node cluster: saves are snapshots and the action log is the command log, so replays are bit-exact.
Rendering
- A GPU layer over Vulkan (Windows, Linux, Android), Metal (macOS, iOS) and WebGPU (browsers), with a render graph.
- A 2D renderer (sprites, tilemaps, parallax, custom materials) and a 3D renderer (glTF 2.0 metal/rough PBR, clustered forward lighting, image-based lighting, cascaded shadows, SSAO, bloom, tone mapping, instancing, a quality ladder).
- HLSL shaders compiled during the build with generated C# bindings.
- glTF 2.0 import with limits checked before allocating.
UI
- A retained UI tree styled on the CSS model, flexbox and anchor layout, controller focus navigation, input glyphs, world-anchored UI and tweens.
- A component kit: table, slider, tabs, tooltip, list, card, nine-slice frame and text input.
- Text shaping through OneFont; SVG and images through OneImage.
Platforms
- Windows (Win32, XInput, WASAPI), Linux (Wayland and X11, evdev pads, ALSA), macOS (Cocoa), iOS (UIKit), Android (native activity) and the browser (.NET on WebAssembly).
- Steamworks and Steam Input bindings, StoreKit and Google Play Billing bindings, and a scriptable fake store.
onegame exportfor Windows, Linux, macOS, iOS, Android and the web: NativeAOT where the host allows it.
Harness
- The
onegamecommand (new,build,run,test,capture,replay,export,cluster, and more) with JSON output. - A C# test API (
TestCluster, scenarios, captures, recordings) and live control over MCP in development builds; release builds leave the listener out.
Samples
- Solitaire: a UI-heavy 2D game with scenarios, replays and captures.
- Lanterns: two island servers and a master, entity hand-off, escrowed trades, predicted movement, owner-only inventories, in 2D and 3D.