Repository navigation
Releases: Pixelsprout/rocco-engine
Release list
v0.6.0
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.
v0.6.0-rc.1
rocco v0.6.0-rc.1
Built with the Roc nightly nightly-2026-10-11-7d256b9. Use the same nightly to run an app on these bundles.
v0.5.0
rocco v0.5.0
This release brings three milestones: the 3D Scene as a tree, gamepads, and skinned meshes with Clips.
This release breaks the Vocabulary three times. Every game must change its code.
-
The 3D tree.
Scene.nodes : List(Node)replacesdraws,lightsandcolliders. ANodeis aGroup,Draw,LightorCollider, and a Group's children are placed relative to it. A Collider turns byrot, a Quat, in place ofyaw. -
Gamepads.
Inputgainsgamepads : List(Gamepad).pf.Buttonnames the buttons by their place on the pad. A test that writes anInputrecord must addgamepads: [], or start fromInput.empty. -
Skinned meshes. A
.glbwith one Skin of at most 64 Joints loads with its Clips. Each Manifest entry gainsclips, and a Draw gainspose. Start a Draw fromDraw.defaultto get a Pose of all zeros.Mesh.clipfinds a Clip id by name, and the newPosemodule builds and loops a Pose. -
Decisions: ADR 0014, The 3D Scene crosses the seam as a tree, ADR 0015, Gamepads are polled in the host, ADR 0016, Skinned meshes are posed in the host
-
Guides: guide/scene.md, guide/gamepad.md, guide/assets.md, tutorial chapter 9 and tutorial chapter 10
Built with the Roc nightly nightly-2026-10-11-7d256b9. Use the same nightly to run an app on these bundles.
v0.4.0
rocco v0.4.0
The UI is now a tree. Scene.ui holds a List(Element), where Element := [Box(BoxConfig, List(Element)), Text(Text)], and a Box holds its children. The flat stream of Open, Text and Close is gone.
This release breaks the Vocabulary. Every game that builds a UI must change its code. Write Box(config, [...]) and Text(...) in place of Ui.box and Ui.text. The ui package keeps Ui.default_box and Ui.default_text, and adds the helpers label, float_at, panel and pad_all.
- Decision: ADR 0013, The Scene crosses the seam as a tree
- Guide: guide/ui.md
Built with the Roc nightly nightly-2026-10-11-7d256b9. Use the same nightly to run an app on these bundles.
v0.3.0
rocco v0.3.0
Built with the Roc nightly nightly-2026-10-11-7d256b9. Use the same nightly to run an app on these bundles.
v0.2.0
rocco v0.2.0
Built with the Roc nightly nightly-2026-10-11-7d256b9. Use the same nightly to run an app on these bundles.
v0.1.0
rocco v0.1.0
Built with the Roc nightly nightly-2026-10-11-7d256b9. Use the same nightly to run an app on these bundles.