Game · TypeScript, three.js · 2026
Poopy Pipes
Lay pipe ahead of the flush. Every drain has to be fed, nothing can spill, and the sewage moves one square every time you make a move.

The clock runs on you
Nothing happens on a timer. The flow only advances when you do, so you can stare at a level as long as you want and every threat is visible before it matters. It started as a frantic arcade idea and turned into something you can sit and think about. Undo rewinds the flow as well as the board.
I rebuilt it from an unfinished Unity project of mine from 2021 and reused the original models and artwork. The new one is TypeScript and three.js, built for a phone first.
You draw the pipe, you don't tap it
You drag a line out of an open pipe end and the shape follows the line you actually drew, ink and all. Double back mid-stroke and you get a tee. Nothing commits until you lift your finger. Getting that to feel right took five passes and a test suite that replays real gestures in a browser and checks exactly which pipe each one produces.
Difficulty I can prove
Every level ships with a solver-proven minimum move count. An iterative deepening search with admissible bounds finds the true best line, so par is measured instead of guessed. Two bots then play the level, one modelling somebody seeing it for the first time and one modelling somebody who has read the hints, and both of them have to lose.
There is also a gate that measures how late a plausible plan falls apart. A level that kills you on move two is annoying. A level that kills you on move twenty is interesting.

What's underneath
The simulation is plain TypeScript with no rendering and no DOM in it. That means the same code runs the game, the solver, the difficulty bots and a headless playtest harness. Rendering is three.js with a custom pipe shader, and the interface is ordinary DOM sitting over the canvas.
I also wrote an MCP server that exposes the simulation as text, so an AI agent can play a level blind and tell me whether it was any good. It finds bad levels faster than I do.
Nineteen levels. The first eight teach you the pipes.
Play Poopy Pipes