Honest timeline note: CNA is a long-term open-source project maintained in spare time. There are no fixed release dates. Milestones are goals, not commitments. Progress is incremental and driven by API coverage, backend stability, and real-world testing against demo applications.

Implement the full XNA 4.0 API in C++

The primary goal of this phase is to achieve comprehensive coverage of the XNA 4.0 public API surface, class by class, in native C++23. This is the foundational work everything else depends on.

Complete

Core game loop infrastructure

Game, GameTime, GameComponent, GameComponentCollection, DrawableGameComponent, GameServiceContainer, GameWindow, FrameworkDispatcher.

Complete

Math types library

Full math library: Vector2, Vector3, Vector4, Matrix, Quaternion, Color, Rectangle, Point, BoundingBox, BoundingSphere, BoundingFrustum, Plane, Ray, MathHelper, Curve, CurveKey, CurveKeyCollection.

Complete

SDL3 platform foundation

SDL3 windowing, SDL3_image texture loading, SDL3_mixer audio initialisation. All three vendored as submodules — no system packages needed.

Complete

SDL_Renderer backend

GraphicsDevice, SpriteBatch, Texture2D all working through the SDL_Renderer backend. Validated on Linux and planned for Windows.

Complete

EasyGL (OpenGL) backend

Custom shader-driven path through the easy-gl library. Both backends share the same game-facing API.

In Progress

Expanding XNA API coverage

Incrementally implementing additional XNA classes: remaining Graphics types, Input (Keyboard, Mouse, GamePad), Audio (SoundEffect, MediaPlayer), Content loading helpers, and more. Tracked progressively in source.

In Progress

bgfx backend

CNA backend abstraction for bgfx — a cross-platform rendering library supporting Vulkan, Metal, DirectX 11/12, OpenGL, and more. CMake FetchContent integration is in place; rendering implementation is ongoing.

Planned

Complete XNA 4.0 API surface

Reach the point where the full publicly documented XNA 4.0 API is implemented in C++ with correct semantics and reasonable test coverage. This is the long-horizon goal of Phase 1.

Planned

Vulkan backend

The Vulkan backend currently exists as an architecture scaffold. A full implementation is a future milestone after the core API surface and existing backends are stable.

Improve compatibility and test coverage

Once the core XNA 4.0 API is implemented, the focus shifts to behaviour compatibility — ensuring CNA produces results faithful to the original XNA semantics — and broadening real-world validation through demo applications.

Planned

Speedy Blupi full port

Completing the Speedy Blupi port to CNA serves as a real-world API coverage and compatibility validation. Any gaps in API coverage or semantic differences will surface here.

Planned

Windows platform validation

Full CI validation on Windows with MSVC 2022, clang-cl, and MinGW-w64. All backends that are meaningful on Windows should pass the test suite.

Planned

Android platform support

SDL3 supports Android natively. Adding CMake toolchain configuration for the Android NDK and validating the SDL_Renderer backend on Android hardware.

Planned

Emscripten / WebAssembly support

Building CNA to WebAssembly via Emscripten would enable browser-based demos and web distribution. SDL3's Emscripten target makes this architecturally feasible.

Planned

Expanded test suite

Broader GoogleTest coverage for math types, game loop semantics, rendering output verification, and cross-backend consistency.

CNA as the internal base for Nova-3D

The long-term strategic goal is to use a stable, well-tested CNA as the internal runtime and rendering abstraction layer for the Nova-3D engine. Nova-3D is a higher-level, opinionated 3D engine that will build on CNA's foundations without coupling to its internals.

Long Term

Nova-3D integration

Nova-3D will depend on CNA's public API layer only. CNA must be stable, well-tested, and multi-platform before Nova-3D integration begins in earnest. This phase is explicitly downstream of Phase 1 and Phase 2 completion.

Long Term

3D rendering capabilities

Extending CNA's rendering abstractions beyond 2D (SpriteBatch) to 3D geometry, materials, and shader management — required as a foundation for Nova-3D's 3D rendering pipeline.

Long Term

Public stable release (v1.0)

A versioned, stable release of CNA suitable for other projects to depend on. This requires full Phase 1 + Phase 2 completion and a stable API contract that Nova-3D and community projects can build on.

🚀

Contributing: CNA is open source (Ms-PL). The highest-value contributions at this stage are: implementing missing XNA API classes, improving backend feature parity, writing tests, and testing on platforms (especially Windows and Android). See the GitHub repository for open issues and the TODO list.