← jeffpelton.com dev.jeffpelton.com

Half Full

Oct 6, 2026 — A daily pour puzzle with real particle water. Tilt the jug and land 500 drops in the glass. Three glasses a day, the same for everyone.

Open Half Full →

Half Full came out of a session researching three.js libraries, when I found liquidfun, Google's particle-water extension to Box2D, compiled to WebAssembly. The question was whether real simulated water could carry a daily puzzle. Every day there are three glasses, the same for everyone. You tilt a jug, steer the stream and try to land all 500 drops in the glass before it runs out of patience. Trickle and you're accurate but slow. Pour at full tilt and the stream comes out faster, flatter and wider.

The glasses get harder through the week. Monday is an open pour off a deflector and a few pegs. Later the glass slides back and forth and you follow it, or it hides under a roof and you bank the water down a ramp. By Sunday there's a narrow slot to pour through and a spinning paddle in the way. Your first pour of each glass is your score, and you share the day as one line, like a Wordle. After that, retries are practice, and ▶ Watch replays any pour.

The hard part was fairness. A daily only works if everyone's pour behaves the same, and fluid sims are famously chaotic. The WebAssembly float math is IEEE-exact. The game quantizes input to whole numbers on a fixed 1/60 s step, and its JavaScript uses only + − × ÷ and square roots, with no sine or cosine. A fingerprint of every particle after six scripted pours matches bit for bit in Node, Chrome and Firefox. So a replay is just the input list, 3 bytes a step.

The promo above is the real sim running scripted pours, which a small search found by trying jug positions and tilts. Claude Opus 5.5 built it in one shot with three.js and liquidfun, and every sound is synthesized.

Open Half Full →