The Emberware repository includes 28+ example games organized by category. Each example is a complete, buildable project.
emberware/examples/
New to Emberware? Follow this progression:
hello-world - 2D text and rectangles, basic input
triangle - Your first 3D shape
textured-quad - Loading and applying textures
cube - Transforms and rotation
paddle - Complete game with the tutorial
platformer - Advanced example with physics, billboards, UI
Example Description
hello-world Basic 2D drawing, text, input handling
triangle Minimal 3D rendering
textured-quad Texture loading and binding
cube Rotating textured cube with transforms
Example Description
lighting PBR rendering with 4 dynamic lights
blinn-phong Classic specular and rim lighting
billboard GPU-instanced billboards
procedural-shapes Built-in mesh generators
textured-procedural Textured procedural meshes
dither-demo PS1-style dithering effects
material-override Per-draw material properties
Example Description
mode0-inspector Interactive Mode 0 (Unlit) explorer
mode1-inspector Interactive Mode 1 (Matcap) explorer
mode2-inspector Interactive Mode 2 (PBR) explorer
mode3-inspector Interactive Mode 3 (Hybrid) explorer
Example Description
skinned-mesh GPU skeletal animation basics
animation-demo Keyframe playback from ROM
ik-demo Inverse kinematics
multi-skinned-procedural Multiple animated characters
multi-skinned-rom ROM-based animation data
skeleton-stress-test Performance testing
Example Description
paddle Classic 2-player game with AI
platformer Full mini-game with physics, UI, multiplayer
Example Description
audio-demo Sound effects, panning, channels
Example Description
datapack-demo ROM asset workflow
font-demo Custom font loading
level-loader Level data from ROM
asset-test Pre-converted asset testing
Example Description
debug-demo Debug inspection system
Example Description
examples-common Reusable utilities (DebugCamera, math helpers)
Each example is a standalone Cargo project:
cd examples/paddle
cargo build --target wasm32-unknown-unknown --release
ember run target/wasm32-unknown-unknown/release/paddle.wasm
Or build all examples:
cargo xtask build-examples
All examples follow this pattern:
example-name/
├── Cargo.toml # Project config
├── ember.toml # Game manifest (optional)
├── src/
│ └── lib.rs # Game code
└── assets/ # Assets (if needed)
Each example includes comments explaining key concepts:
#![allow(unused)]
fn main() {
//! Example Name
//!
//! Description of what this example demonstrates.
//!
//! Controls:
//! - ...
//!
//! Note: Rollback state is automatic.
}
Browse the source on GitHub or read locally in your clone.