A small start. Room to grow.
Start with Game and Ctx. Reach for entities, components and fixed-step systems when your game needs them.
Explore the ECSA code-first Rust engine for 2D and 3D games.
A little less ceremony. A lot to make.
cargo add ponkoTide is a small 3D game built with the engine and compiled to WebAssembly. Raise towers, and thousands of units re-route around them in the same frame.
Units march from the glowing gates to your core. Click or tap a cell to raise a tower: it zaps whatever comes close, and the flow field bends around it. Space, or the round button, overcharges every tower.
Integrated tools to get moving. Direct APIs to make it yours.
Start with Game and Ctx. Reach for entities, components and fixed-step systems when your game needs them.
Explore the ECSA wgpu-powered 2D and 3D renderer, with physics, audio and UI alongside it. Build from code, with your own asset tools.
See the rendering guideInspect components, step a running simulation, capture screenshots and measure performance. Connect external tools and agents through MCP.
Meet the runtime toolsFixed-tick, headless runs without a window or GPU. Rust first, with C and C++ bindings for native integrations.
Run headlessOne setup closure. One frame loop. Seven steps from an empty window to a thousand spinning crabs. Follow the tutorial
use ponko::*; fn main() { Game::new("My Game", 800, 600) .system(|ctx| { let dt = ctx.dt(); ctx.world.query::<&mut Transform2D>().for_each(|t| t.rotation += dt); }) .run(|ctx| { ctx.clear(Color::hex(0x1B2A1B)); let sprite = ctx.load_texture("crab.png"); let mut position = vec2(400.0, 300.0); ctx.world.spawn_batch((0..1_000).map(|i| { let at = vec2((i % 40) as f32 * 20.0, (i / 40) as f32 * 24.0); (Transform2D::at(at), Sprite::new(sprite)) })); move |ctx: &mut Ctx| { if ctx.key_down(Key::Right) { position.x += 200.0 * ctx.dt(); } if ctx.key_down(Key::Left) { position.x -= 200.0 * ctx.dt(); } ctx.draw(&sprite, position); } });}Game::new opens an 800 × 600 window and runs your setup once. The closure it returns runs every frame.
Ponko is a young engine with an ambitious direction. Expect rough edges, check the current capabilities, and help shape what comes next.
Contribute where you’re comfortable: Rust, a small bug fix, a clearer example. You don’t need to take on every language or write a book to help.