CNA Demos
Runnable demonstrations of CNA capabilities across web, Android, and desktop platforms. CNA is a work in progress - demos reflect current state and will expand over time.
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 Browsercna-demo (2D Sprite Demo)
2D sprite demo running via WebGL 2/Emscripten. Tests: SpriteBatch rendering, 2D rendering pipeline, and basic game loop.
Play in BrowserCNA Craft
An interactive CNA Craft demo compiled to WebAssembly and running directly in the browser.
Play in BrowserCNA Examples
A browsable collection of CNA API examples and experiments, available as a WebAssembly application.
Play in BrowserMesh Craft
An interactive WebAssembly demo focused on geometry and 3D mesh rendering with CNA.
Play in BrowserBlack Pine
An exploration and puzzle adventure across a five-act story at a mountain radio relay.
Play in BrowserIron Gang
A prototype open-city action-adventure with on-foot exploration, a driveable car, and real physics.
Play in BrowserLines CNA
A classic ball-line puzzle game — build lines of five or more matching colors before the board fills.
Play in BrowserCopper Boots
An original retro side-scrolling platform game in the spirit of classic 1994 DOS platformers.
Play in BrowserPeople
A household life-simulation game on an isometric lot, with rotating camera views and emergent stories.
Play in BrowserTamagotchi CNA
A faithful reimplementation of the 1997 virtual pet — one creature, three buttons, a tiny LCD.
Play in BrowserWolf 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 linkSpeedy 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.
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.
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.
Sound Demo - Linux
Audio playback demo using SoundEffect and SoundEffectInstance with volume/pitch/pan control. Build with cmake --build build --target cna_demo_sound.
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 linkSpeedy 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 BrowserSpeedy 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.
🎮 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.
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.