OSS TanbouSign in with GitHub

port and maintain existing XNA games on Windows, Linux, macOS, and other desktop targets through an accuracy-focused C# XNA4 runtime

About these scores

OSS scale score is an unbounded metric that log-compresses and weights Stars, Watchers, Forks, and Contributors. Discovery score is the current OSS scale score minus the score at discovery. Update pace is commits in the last 30 days, growth momentum is the OSS scale score difference within the recent observation window, and OSS health is a 0–100 rating based on available recency, Community Health, and release data.

Stars
3,051
Primary language
C#
License
MS-PL
Repository last updated
Oct 2, 2026
On this page

Overview

FNA is a C# project focused on accurately reimplementing the Microsoft XNA 4 runtime. It preserves the Microsoft.Xna.Framework namespace and XNA4 API behavior so existing XNA titles can be ported and maintained across open desktop platforms.

Features and best fit

Based on official documentation; not hands-on tested · Content checked:

Key features

Prioritize compatibility with the XNA4 API and runtime behavior

FNA is not centered on a new proprietary game-engine API. Its goal is an accurate XNA4 runtime reimplementation, retaining Microsoft.Xna.Framework so existing XNA codebases can move with minimal API rewrites.

Sources: [1][2]

Connect graphics, audio, video, and input through native backends

The repository references FNA3D, FAudio, Theorafile, dav1dfile, and SDL2/SDL3 submodules, connecting the C# XNA-facing API to graphics, audio, video, windowing, and input functionality.

Sources: [4][2]

Provide classic project files alongside a .NET Standard target

The repository includes the classic FNA.csproj plus projects such as FNA.NetStandard.csproj, which targets netstandard2.0, allowing builds to align with different runtime and integration requirements.

Sources: [2][3]

Best fit

Fits teams porting or maintaining XNA4 games on desktop platforms

It is useful when an existing game depends on XNA4 APIs and should be preserved while targeting desktop platforms beyond the original Windows-focused XNA environment.

Sources: [1]

Before adoption

It is a runtime compatibility layer, not a full editor-driven game engine

The README positions FNA as an XNA4 runtime reimplementation for desktop. It does not provide a scene editor or a new asset-authoring environment, so projects retain a code-driven XNA/FNA workflow.

Sources: [1]

Runtime work depends on native submodules and multiple component licenses

A source checkout needs submodules such as FNA3D, FAudio, and Theorafile. FNA itself uses the Microsoft Public License, while LzxDecoder is dual MS-PL/LGPL 2.1 and Mono.Xna-derived code is MIT, so bundled component licenses also require review.

Sources: [5][6][7][4]

Official sources

  1. [1]FNA README snapshot(2026-10-04)
  2. [2]FNA project file snapshot(2026-10-04)
  3. [3]FNA .NET Standard project snapshot(2026-10-04)
  4. [4]FNA native submodules snapshot(2026-10-04)
  5. [5]FNA Microsoft Public License(2026-10-04)
  6. [6]FNA LzxDecoder license(2026-10-04)
  7. [7]FNA Mono.Xna-derived code license(2026-10-04)
Supplemental curator note

FNA is a runtime for preserving and porting existing XNA4 code rather than a new editor-driven game engine. Adoption should consider both API compatibility and the distribution and licensing of native components such as FNA3D and FAudio.

Try it in 3 steps

  1. 1

    Fetch the reviewed FNA source with submodules

    Clone FNA3D, FAudio, Theorafile, and the other native dependencies, then pin the commit reviewed on 2026-10-04.

    git clone --recurse-submodules https://github.com/FNA-XNA/FNA.git && git -C FNA checkout 738c0a64df173c54187e78dde3a75d3d7a3e5c0e && git -C FNA submodule update --init --recursive
  2. 2

    Build the .NET Standard FNA assembly

    Build the managed netstandard2.0 assembly. This step does not yet package the native libraries required to run a game.

    cd FNA && dotnet build FNA.NetStandard.csproj -c Release
  3. 3

    Verify the generated FNA.dll

    Confirm the managed runtime build output. Running an actual game also requires the platform-specific FNA3D, FAudio, SDL, and other native libraries.

    cd FNA && test -f bin/Release/netstandard2.0/FNA.dll && echo 'FNA build OK'
Check the official README

Growth

Growth trends · Last 30 days

3,051 Stars

Trend data is still being collected.

Development activity

Last 90 days · weekly

Commits (last 30 days)
99
Open PRs
33

Development activity is still being collected.

Built with

Categories and tags

GitHub data

GitHub dataView detailed GitHub data

GitHub Topics

  • xna
  • fna
  • csharp
  • gamedev
  • windows
  • macos
  • linux
  • steamos
Stars
3,051
Forks
335
Watchers
68
Open issues
31
Contributors
48
Owner type
Organization
Primary language
C#
License
MS-PL
Repository last updated
Oct 2, 2026
Write a related article

Share a guide or use case for this OSS in Markdown. Articles are published after administrator approval.

Report incorrect information

Tell us if any listing information is incorrect or outdated.

After reading this page, do you know what to do next?