Princeton TD Game Engine

Kevin built a full tower defense game in the browser with no engine, no sprite sheets, just a hand-rolled Canvas 2D renderer forcing the browser to do real labor.

Princeton Tower Defense is the most intense browser game build Kevin has done: 26 levels across 5 biomes, 7 towers with branching upgrades, 9 heroes, 6 spells, and 100-plus enemy types, all rendered procedurally in Canvas 2D. Source: Princeton Tower Defense The constraint was the point. Refusing a game engine forced the invention, offscreen layer caching, adaptive quality scaling, batched strokes, and gradient caching, which is exactly the pattern in Constraints Breed Creativity. The dev-diary line captures it: no engine, no hand-wavy abstraction layer, just a hand-rolled renderer. Source: Princeton Tower Defense

It was also nobody's assignment, which is why it produced the work it did. This is Want It Bad Enough in artifact form: 655 Cursor agent sessions across more than two months, a personal project that pulled the 3am flow state rather than a spec that had to be met. Source: Princeton Tower Defense

The project doubled as proof in public. A 31-day dev diary ran on X, and the format of filming Nicky He playing the game produced two high-engagement posts, a repeatable QA-as-content loop. Source: Princeton Tower Defense; Kevin Liu That public arc is told more broadly in Building in Public. The Princeton theming, towers and levels named for Nassau, Firestone, Blair, and Dinky, made it unmistakably his.

The diary doubled as a notebook of craft principles. Lines like "great game UI is a compression codec for chaos" and "a lot of canvas performance is just having the courage to not repaint things" turned the build into shareable lessons rather than only screenshots. Source: Princeton Tower Defense The scale behind those lessons was real: render modules running into the tens of thousands of lines, no engine underneath any of it.


Timeline