Development Roadmap
CNA is a long-term project developed incrementally. This page describes the honest current state and the path forward — no overpromising, no fake ETAs.
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.
Core game loop infrastructure
Game, GameTime, GameComponent, GameComponentCollection, DrawableGameComponent, GameServiceContainer, GameWindow, FrameworkDispatcher.
Math types library
Full math library: Vector2, Vector3, Vector4, Matrix, Quaternion, Color, Rectangle, Point, BoundingBox, BoundingSphere, BoundingFrustum, Plane, Ray, MathHelper, Curve, CurveKey, CurveKeyCollection.
SDL3 platform foundation
SDL3 windowing, SDL3_image texture loading, SDL3_mixer audio initialisation. All three vendored as submodules — no system packages needed.
SDL_Renderer backend
GraphicsDevice, SpriteBatch, Texture2D all working through the SDL_Renderer backend. Validated on Linux and planned for Windows.
EasyGL (OpenGL) backend
Custom shader-driven path through the easy-gl library. Both backends share the same game-facing API.
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.
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.
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.
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.
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.
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.
Android platform support
SDL3 supports Android natively. Adding CMake toolchain configuration for the Android NDK and validating the SDL_Renderer backend on Android hardware.
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.
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.
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.
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.
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.