Somebody built a mini-golf course across the breakfast table, and the ball is waiting. Three holes of real 3D physics: up a toast ramp sunk into the felt, through a toast arch, around a pancake stack past a syrup pool that grips the ball, then through a mug tunnel between sugar-cube walls to the strawberry flag. The lab's first 3D piece — a real RigidBody3D ball under real-time DirectionalLight3D shadows, on Blender-baked food props — concepted, modelled, tuned and verified end to end by AI agents.
←→ / A D aim · hold W / ↑ power · Space putt · P pause · M reduced motion · touch buttons on mobile · tap once for sound · game data 12.8 MB (+ engine wasm, cached after first load)
The piece was concepted first — a key-art sheet, a prop sheet and an overhead three-hole layout set the language: felt fairways with piped-crust curbs on a gingham cloth, butter yellows, toast browns, jam reds. Every named element in those sheets was then authored as a real Blender asset, and every audit round judged the live build against them.


All three holes ran and were beaten as gray boxes before any art existed — including the automated drills the piece is audited by: a deliberate putt off the table edge (penalty + replace), a roll through the syrup pool and a hard escape putt, and a lip-out at too much speed. The autopilot re-aims per stroke from waypoints, so it self-corrects at any frame rate.


Every prop is a Blender asset: fused voxel-remeshed food shapes with baked or procedural-detail materials, exported as glbs — and the fairway curbs are generated from the same wall constants the engine uses for its colliders, so the visual and the physics agree by construction. The honest row: the first leaning toast ramp presented its 26 cm crust edge to the 15 cm ball — a wall, not a ramp. A telemetry probe (ball position, speed, contacts per tick) found it in one run; the toast now sits sunk into the felt so its rolling face starts at the ground.


The lab audits with Playwright on this host's software renderer (no GPU), so the frame-rate row below is a worst case — real hardware runs the compatibility renderer far faster.
| Measurement | Value | Conditions |
|---|---|---|
| Game data (.pck) | 12.8 MB | release export — 16 Blender glbs with baked textures + 8 sampled audio stems |
| Engine payload (.wasm) | 35.4 MB | Godot 4.3 web runtime, fixed cost, browser-cached after first load |
| Verified full round | win at level par — 8 strokes / par 8, off-table penalty drill and syrup crossing included (confirmed twice) | autopilot playthrough with off-table, syrup and lip-out drills, every audit round |
| Collider-visual parity | curbs generated from collider constants | mug bore + toast = mesh colliders (trimesh / convex); pancake cylinder matched to the bottom cake |
| Audit rounds | blockout 2 · art 7 | fix-all-then-re-audit until a round found nothing, then one confirming |
| Audit frame rate | ~2–3 fps | SwiftShader software GL — worst case; game time stays real via physics step catch-up |
A real 45-gram physics ball: impulse putts, bounce material, continuous collision so it never tunnels a curb at full power.
The mug's bore is a real trimesh — the ball rolls through the actual ceramic; toasts collide as convex hulls of their own render meshes.
One warm DirectionalLight3D plays the kitchen window: every prop drops a true shadow map onto felt and gingham.
Crumb bursts off toast hits, syrup droplets, sugar dust and a three-color confetti pop on every hole-in.
Orbits behind the aim, chases the roll, and circles the cup on the win — with fixed cuts under reduced motion.
The ball answers the thing it hits: toast thud, ceramic ting, sugar knock, syrup squelch — all sampled stems, mixed per impact speed.