Runtime Acquisition Decision

Status

Accepted for implementation. Revisit before the first stable release and whenever either pinned runtime changes its package, license, native asset, or support policy.

Selected Baselines

Runtime Package Version Framework assembly
MonoGame MonoGame.Framework.<backend> 3.8.5 MonoGame.Framework
FNA FNA.NET 2.2.11.2602 FNA.NET
FNA native assets FNA.NET.NativeAssets 2.1.2.2602 Native libraries

FNA.NET is selected as the reproducible FNA distribution candidate because it supports ordinary NuGet restore, targets .NET 9 and .NET Standard 2.0, and supplies native assets for the declared desktop matrix. It is an opinionated fork rather than an official FNA-XNA package. Forma therefore keeps the framework reference replaceable through FnaProjectPath and does not rely on fork-only extensions in shared code except at reviewed FNA adapter or host boundaries.

Native Assets

FNA.NET 2.2.11.2602 depends on FNA.NET.NativeAssets 2.1.2.2602, which identifies its upstream native baseline as FNA 26.02. The package contains native assets for Windows x64, Linux x64 and arm64, and macOS. Each desktop set includes FAudio, FNA3D, SDL3, Theorafile, and dav1dfile, so the selected distribution owns the default graphics, audio, windowing, Theora, and AV1 deployment path. Forma does not copy those binaries into source or publish a second native bundle.

The Forma maintainers own version pin updates, restore and RID validation, release-note review, license/notice review, and response to NuGet or GitHub security advisories. A runtime update must pass both runtime builds, assembly-reference isolation, tests, catalog smoke checks, media fixture checks, package inspection, and clean consumer restores before the pins change.

Package IDs

The initial public release contains fourteen peer package IDs. The machine-readable authority is scripts/release-packages.json, which the release workflow uses for package construction, artifact validation, publication, and post-publication restore checks. All manifest packages use the same Forma version and commit.

Capability MonoGame FNA
Core Forma.MonoGame Forma.FNA
Dynamic text Forma.DynamicText.MonoGame Forma.DynamicText.FNA
Media Forma.Media.MonoGame Forma.Media.FNA
SVG with Skia Forma.Svg.Skia.MonoGame Forma.Svg.Skia.FNA
SVG with ThorVG Forma.Svg.ThorVG.MonoGame Forma.Svg.ThorVG.FNA
Compiled XAML build Forma.Xaml.Build.MonoGame Forma.Xaml.Build.FNA
XAML hot reload Forma.Xaml.HotReload.MonoGame Forma.Xaml.HotReload.FNA

The unused Forma.Svg.MonoGame and Forma.Svg.FNA compatibility identities are intentionally excluded. Package availability is rechecked immediately before publication rather than asserted by this decision record.

Local Overrides

MonoGameProjectPath and FnaProjectPath replace the corresponding package reference with a local project reference throughout library, catalog, and test graphs. Pass absolute paths because MSBuild resolves relative ProjectReference values from each owning project directory. Package acquisition remains the reproducible default used by CI and release validation. Local overrides are development inputs and must not affect package dependency metadata.