🚀

Twelve web builds available now: CNA's EasyGL renderer compiles to WebAssembly via Emscripten. The demos below run directly in the browser from demos.libcna.com. Additional platform builds (Android, Windows prebuilt) are still in progress.

🌐 Web Builds (Emscripten / WebGL 2)

CNA's EasyGL (OpenGL ES 3.0) renderer compiles to WebAssembly via Emscripten and runs via WebGL 2. Full 2D and 3D rendering work in the browser today.

House 3D Demo

Procedural 3D house scene with walls, roof, windows, door, and floor. Player movement via WASD + gravity. Runs via WebGL 2/Emscripten. Tests: 3D rendering, BasicEffect, keyboard input.

Play in Browser

cna-demo (2D Sprite Demo)

2D sprite demo running via WebGL 2/Emscripten. Tests: SpriteBatch rendering, 2D rendering pipeline, and basic game loop.

Play in Browser

CNA Craft

An interactive CNA Craft demo compiled to WebAssembly and running directly in the browser.

Play in Browser

CNA Examples

A browsable collection of CNA API examples and experiments, available as a WebAssembly application.

Play in Browser

Mesh Craft

An interactive WebAssembly demo focused on geometry and 3D mesh rendering with CNA.

Play in Browser

Black Pine

An exploration and puzzle adventure across a five-act story at a mountain radio relay.

Play in Browser

Iron Gang

A prototype open-city action-adventure with on-foot exploration, a driveable car, and real physics.

Play in Browser

Lines CNA

A classic ball-line puzzle game — build lines of five or more matching colors before the board fills.

Play in Browser

Copper Boots

An original retro side-scrolling platform game in the spirit of classic 1994 DOS platformers.

Play in Browser

People

A household life-simulation game on an isometric lot, with rotating camera views and emergent stories.

Play in Browser

Tamagotchi CNA

A faithful reimplementation of the 1997 virtual pet — one creature, three buttons, a tiny LCD.

Play in Browser

Wolf CNA

A retro first-person shooter prototype with true polygonal 3D rendering and multiple weapons.

Play in Browser

📱 Android Builds

CNA runs on Android via SDL3's native Android support. The NDK toolchain is configured and validated on Android hardware. Downloadable APKs will be published here.

CNA Demo APK

Android build of the CNA demo application. Requires Android 7.0+ (API 24). ARM64 and x86_64 targets supported.

⚠ TODO: APK download link

Speedy Blupi - Android Port

Android port of the Speedy Blupi game running on CNA. A milestone demo for Android CNA support.

⚠ TODO: APK download link

🖥 Desktop Builds

Desktop builds are the primary current delivery target. Linux binaries and Windows executables can be built from source following the build guide. Prebuilt binaries may be published with future releases.

House 3D Demo - Linux

Procedural 3D house scene with walls, roof, windows, door, and floor. Player movement with WASD + gravity. Uses EasyGL (OpenGL ES 3.0) renderer. Tests: 3D rendering, BasicEffect, keyboard input. Build with cmake --build build --target cna_house3d_demo.

Build Instructions

2D Sprite Demo - Linux

SpriteBatch rendering demo with texture loading, movement, rotation, and scaling. Works on all renderers. Build with cmake --build build --target cna_demo_2d.

Build Instructions

Input Demo - Linux

Real-time visualization of keyboard keys, mouse state, gamepad axes/buttons/D-pad/triggers, touch input, and gestures. Build with cmake --build build --target cna_demo_input.

Build Instructions

Sound Demo - Linux

Audio playback demo using SoundEffect and SoundEffectInstance with volume/pitch/pan control. Build with cmake --build build --target cna_demo_sound.

Build Instructions

Prebuilt Releases

Prebuilt Linux and Windows binaries will be published as GitHub Releases when stable milestones are reached.

GitHub Releases

🏃 Speedy Blupi - Port / Demo

Speedy Blupi is a classic open-source game being ported to run on CNA as a showcase of the framework's capability to support real game code. This port is both a practical test of CNA's API coverage and a demonstration of the XNA-style game loop in action.

Speedy Blupi - Desktop

Desktop version of the Speedy Blupi CNA port. Currently in development. Follow the project on GitHub for updates.

⚠ TODO: project link

Speedy Blupi - Web

Browser-playable WebAssembly build of the Speedy Blupi CNA port. Emscripten/WebGL 2 support is now working in CNA — Speedy Blupi web port is in progress.

Play in Browser

Speedy Blupi - Android

Android APK of the Speedy Blupi CNA port. APK download coming soon.

⚠ TODO: APK link

📚 cna-samples (GitHub)

C++ ports of the official XNA Game Studio 4.0 sample library — a concrete measure of how much real XNA code has been migrated. The in-scope inventory contains 86 samples, of which 63 are real ports that build; the remaining 23 are placeholders. This repository-level count is not a universal runtime result across CNA renderers.

Why 23 samples do not build. Almost every one of them is blocked by the same single gap: compiled .fx shader bytecode, which CNA does not yet support. That is why the missing set is dominated by shader-driven samples — BloomSample, NormalMapping, PerPixelLighting, ShadowMapping, DistortionSample, ShatterEffect, NonPhotoRealistic, ColorReplacement — plus the skinning and custom-model-effect samples (SkinningSample, CPUSkinning, CustomModelAnimation, CustomModelEffect) and the larger games built on them (ShipGame, Spacewar, NetRumble). See Effects System for detail on that gap.

A representative selection of what does build today:

Rendering & 3D

PrimitivesSample, Primitives3D, Graphics3D, GeneratedGeometry, ReachGraphicsDemo, LensFlare, RimLighting, SpriteEffects, SpriteSheet, TexturesAndColors, ShapeRendering.

Gameplay & complete games

Platformer, MarbleMaze, RolePlayingGame, CatapultWars, HoneycombRush, NinjAcademy, CardsStarterKit, TicTacToe, Yacht, SnowShovel, SoccerPitch.

Input & devices

InputReporter, InputSequence, GesturesSample, TouchThumbsticks, AccelerometerSample, Orientation, TiltPerspective, MicrophoneEcho.

Audio

Audio3D, SoundAndMusic — both exercising CNA's real XACT parser and its 3D audio path.

Collision, physics & AI

CollisionSample, PerPixelCollision, RectangleCollision, TransformedCollision, HeightmapCollision, Pathfinding, FlockingSample, FuzzyLogic, ChaseAndEvade, InverseKinematics, Bounce.

Cameras, UI & networking

ChaseCamera, CameraShake, SafeArea, UISample, DynamicMenu, GameStateManagement, LocalizationSample, PeerToPeer, ClientServerSample, NetworkPrediction.

View on GitHub

🎮 cna-examples (GitHub)

A single browsable catalogue application that demonstrates CNA's own APIs area by area — rather than porting existing XNA samples, this is purpose-built teaching material. One executable (cna_examples) presents a Home → Area → Category → Demo menu you navigate at runtime, so you can step through the API surface without rebuilding. 60 demos are registered today. It builds against the OPENGLES3 renderer by default, though the renderer is overridable.

Early — two of seven areas are populated. The screen framework, navigation and state management are in place and the demos are real API calls, not mock-ups. But Devices, Net, Media, 2D Graphics and 3D Graphics are registered as empty areas with no demos behind them yet. There are also no tests and no CI.

Input — 50 demos

Ten demos each across Keyboard, Mouse, Gamepad, Touch and a catch-all Other group covering the remaining input surfaces.

Audio — 10 demos

SoundEffect, SoundEffectInstance, DynamicSoundEffectInstance, 3D audio and Microphone. The 3D audio screens build a live AudioListener/AudioEmitter pair and call Apply3D() each frame, with a graceful fallback when no audio hardware is present.

Not yet written

Devices, Net, Media, 2D Graphics and 3D Graphics. The navigation shell is already built to host them — the areas exist in the menu but are currently empty.

View on GitHub
🛠

Build it yourself now: While public binaries and web builds are still being prepared, you can build CNA from source today. See the Getting Started guide and Build Instructions.