SDK status: Alpha
MicroEngine SDK — Alpha, 0.x. The current version is set in one place, MicroEngineVersion in
Directory.Build.props, and every engine assembly and demo package carries it.
The engine is functional: four complete games run on it, and it is checked on Windows, Linux, macOS, Android, iOS and in browsers (Platforms). Its contracts, subsystems and tools are still evolving, so:
- public APIs may change incompatibly between Alpha versions (0.2 → 0.3), and a change is recorded in a decision record and in the migration notes of the version that makes it;
- there is no 1.0 and no promise of backward compatibility yet;
- the types the four games depend on are listed in Contracts; they are the ones most likely to stay, not guaranteed to.
How you use it today
From the public repository, with the .NET 10 SDK: reference src/MicroEngine.Desktop (or a single backend) from your
game’s project. Getting MicroEngine has the commands.
SDK-1: what is prepared
SDK-1 is the next stage on the roadmap: installing MicroEngine without cloning it. Its structure is decided (ADR 0019) and partly working; nothing is published yet.
Packages
One NuGet package per project in src/, so a game installs only the backends it uses:
| Package | Contains | Depends on | Native libraries |
|---|---|---|---|
MicroEngine |
the core: loop, scenes, input, graphics model, world, audio synthesis, UI, saves, achievements, headless platform | .NET only | none |
MicroEngine.Sdl |
the SDL 3 platform (desktop and phones) | MicroEngine, ppy.SDL3-CS, NVorbis |
SDL 3 for Windows, Linux, macOS, Android, iOS |
MicroEngine.Raylib |
the raylib platform (desktop; the browser build compiles it to WebAssembly) | MicroEngine, Raylib-cs |
raylib for Windows, Linux, macOS |
MicroEngine.Desktop |
DesktopLauncher with the official desktop catalog (sdl, raylib, sdl-software, headless) |
MicroEngine.Sdl, MicroEngine.Raylib |
both |
dotnet pack already produces these four packages at the SDK version (0.2.0-alpha), with the MIT licence expression
and repository metadata (src/Directory.Build.props). They were consumed from a local feed by a new project, outside
the repository:
- referencing
MicroEngine.Desktop, the Hello Engine sample ran headless and listed all four platforms; - referencing only
MicroEngine.Sdl, with its own catalog, it listedsdlandheadless, and no raylib file was copied to its output. A game does not have to install every backend.
// A game that ships SDL only: its own catalog instead of DesktopLauncher's.return GameLauncher.Run(new HelloGame(), args, new PlatformCatalog().Add(SdlPlatform.Profile).Add(HeadlessPlatform.Profile));Default platform
Choosing a platform stays the host’s business (Backends): the first profile
of the catalog that can run on the machine is the default. With MicroEngine.Desktop that is SDL 3 on every desktop
system; --platform and MICROENGINE_PLATFORM select another. A game that references one backend gets that backend.
Still to build for SDK-1
| Piece | Plan |
|---|---|
| Publishing | Packages pushed to NuGet by the release workflow, from the same commit as a demo release, after the same checks; the version must equal MicroEngineVersion |
| Templates | A MicroEngine.Templates package with dotnet new microengine-game (a Hello Engine copy referencing MicroEngine.Desktop) and microengine-game-sdl (SDL only) |
| Samples | samples/ stays the source of the templates; the template content is generated from it, so the sample and the template cannot drift |
| Phone and browser hosts | Not packages yet: the Android and iOS hosts (platforms/) and the browser host (web/) build one of this repository’s games. Making them consumable (an MSBuild SDK or a template per host) is after SDK-1 |
| Migration notes | One section per version in docs/migrations.md, written with the change that breaks something: what changed, why, how to update |
| Versioning | SemVer with an -alpha suffix while 0.x; all engine packages share one version; a game’s own version is its own (<Version> in its project, as the demos do) |
Distribution of games made with it
A game built with MicroEngine is packaged like the demos (packaging): a self-contained
.NET publish with SDL next to it. SDK-1 may turn packaging/package.mjs into a documented tool for any game; today it
packages the four demos only.