Repository navigation
rocco is a 3D game engine in Odin that runs games written in Roc.
Your game is a Roc app: its state and its rules, as pure functions. Each step, update returns the next Model and view returns a Scene, which is data that describes what to draw, light, test and play. The engine is the Roc platform. It owns the window, the clock, input, the GPU, memory, audio and collision, and it turns each Scene into a frame. A Roc test can read a Scene with a pattern match, and the Bridge lets a script step a game and read its Scene from outside.
One checkout builds for macOS arm64 (Metal), Linux x64 (GL) and Windows x64 (D3D11). CI runs the example games on all three.
What the engine has
- A Scene tree of Groups, Draws, Lights, Colliders and Speakers. The host draws at the display rate and interpolates each Draw between steps by its id.
- glTF meshes and textures in Packs, PBR lighting and shadows.
- Collision as data: Colliders in the Scene, and Queries whose results come back on the next step.
- A UI tree for the HUD, laid out with Clay.
- Keyboard and gamepad input on all three OSes.
- Skinned animation with Clips and fades.
- Sound: fire-and-forget
PlayCommands, and Speaker Nodes for sounds the game controls. - The Bridge: drive a running game over a socket to step it, read its Scene and take screenshots.
New in v0.6.0
- Speakers. A sound that the game controls is now a
SpeakerNode in the Scene, withid,sound,gain,pitch,atandrepeat : [Loop, Once]. The host pairs Speakers by id, so a Speaker keeps playing while its id stays, follows its Group as it moves, and stops when it leaves the Scene.Scene.loopsand the Loop are gone: move each Loop to a Speaker. Each Manifest entry gainsduration. - Tutorial chapter 8 plays its music, the door hum and a door creak from Speakers.
guide/sound.mdteaches them.
Links
- Docs, guides and the 10-chapter tutorial: https://pixelsprout.dev/projects/rocco/
- Kula, a rolling-ball puzzle game built on rocco: https://github.com/Pixelsprout/kula
Bundles
Built with the Roc nightly nightly-2026-10-11-7d256b9. Use the same nightly to run an app on these bundles.