Jelly48 icon Jelly48

Engineering notes

Short write-ups from building a soft-body 2048 in Rust + WebGPU.

We picked Rust for the platforms. The surprise payoff was the AI collaboration.

June 11, 2026

One physics engine shipping to web, iOS, and desktop from a single codebase — and why a borrow checker means you stop spending your own review cycles being your AI assistant's linter.

We shipped a win condition that was geometrically impossible

June 11, 2026

Our Suika-like's top piece could never be made — not hard, impossible. ~3,200 bot playtests caught it, fixed it, and turned game difficulty into a measured dose-response curve. They also found a real bug in this game.

When the GPU is 99% overhead: measuring WebGPU dispatch cost in a tiny physics engine

June 10, 2026

Our soft-body engine ran 176 GPU dispatches a frame to simulate 192 particles. We measured where the time went — frame cost fit ~1.7 ms + ~12 µs per dispatch, independent of the workload — and ended up shipping a CPU solver in WebAssembly that runs the same frame 5–15× faster.

The physics of Jelly48: how a soft-body 2048 works

June 10, 2026

Every tile is a ring of 16 particles held together by springs-that-aren't-springs. XPBD constraints, gravity-tilt input, and merges that are real geometry: a boolean union of two jelly outlines that morphs into the next tile.