← All cases
Case 012 Simulation / Play

Modular Toy Sandbox

Virtual-pet and sandbox toys are either scripted set-pieces or full game engines; there's little in between where a player just pushes blocks together and watches behaviour emerge. Hard-coding every pairwise interaction is what kills these projects.

A 2D sandbox of draggable square "frames", each housing a stickman resident with a job and personality — frames snap, connect and interact through a declarative rule matrix instead of bespoke code per pair.

The “Weather & growth” scene — sun, rain and fog frames feeding a neighbouring garden through the interaction matrix.
Exhibit 012-A The “Weather & growth” scene — sun, rain and fog frames feeding a neighbouring garden through the interaction matrix.
A supply chain: water, orchard, tavern, bakery, windmill and kitchen frames passing resources between residents.
Exhibit 012-B A supply chain: water, orchard, tavern, bakery, windmill and kitchen frames passing resources between residents.
The “Volcano” scene — a heat/eruption frame casting its plume over water and garden frames alongside it.
Exhibit 012-C The “Volcano” scene — a heat/eruption frame casting its plume over water and garden frames alongside it.
A festival: a music frame with a live equaliser drives dancing stickmen across tavern and beach frames.
Exhibit 012-D A festival: a music frame with a live equaliser drives dancing stickmen across tavern and beach frames.
Frame types
41, including 7 weather frames
Interaction matrix
~175 declarative pairwise rules (fire burns the library, rain grows the garden)
Physics
inertial ragdoll residents with world-down gravity under frame rotation
Personality traits
6, assigned at birth and kept for life
Logic tests
15, on Node's built-in runner with zero dependencies
Headless verification
0 page errors across the build

.NET 10 Blazor Server hosting an all-JavaScript simulation on a single canvas; built by feature agents per subsystem (physics, characters, rules, render) and verified out-of-process with puppeteer reading live sim state.

An unhandled error has occurred. Reload 🗙

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.