Screenshot of PotShot Panic
JavaScript (ES6)HTML5 CanvasWeb Audio APINetlify

PotShot Panic

A modern web remake of the Atari 2600 classic Crackpots — vanilla JavaScript and HTML5 Canvas, no engine, revived from an abandoned prototype by an AI agent team working under close direction.

Visit site

Background

Crackpots is one of those Atari 2600 games almost nobody remembers, which is exactly why I love it: you're a guy on a rooftop dropping flower pots on spiders before they crawl in through your windows. That's the whole game. It's perfect.

PotShot Panic started as an early experiment in AI-assisted development — one of my first attempts at building a whole game by pairing with an AI. It got a working prototype and then stalled the way side projects do: the spider movement never felt right, I burned a few evenings fighting it, and the repo went quiet. Over a year later I stumbled back over the folder, and instead of quietly deleting it, I decided to make it a different kind of experiment: could a team of AI agents — reviewers, implementers, and testers, each with their own lane — take an abandoned prototype and actually ship it?

Development

The stack is deliberately boring: vanilla ES6 JavaScript and the HTML5 Canvas API. No engine, no framework, no build step — just modules served as static files. For a game this size, the entire engine (game loop, entity system, collision, wave management, effects, audio) is about three thousand lines you can read in an afternoon.

The revival started with a review fan-out: parallel agents auditing bugs, UX, and the gap between what the docs claimed and what the code actually did. The verdict was surprising — the wave system and core loop were solid; what had killed the project was presentation (no sprites, no sound, no feedback, debug tracer-lines shipping to players) and one genuinely broken system: the movement code I'd given up on.

Mid-wave: a flower pot on its way down, a fresh kill's score popup, and one window already breached

That movement system turned out to be the most interesting problem in the project. The old code mixed two incompatible ideas — some spiders steered toward a target window, while others just played a movement pattern (zig-zag, weave) straight up the wall and hoped. Pattern-based spiders could never guarantee they'd end at a window, so they'd sail past them to the roofline, and every attempt to fix one type broke another. The rewrite unified everything under one model: every spider picks a target window at spawn, its horizontal position interpolates toward that window as it climbs, and each type's personality is just a decorative offset layered on top — damped by climb progress so it fades to zero on arrival. Zig-zags, drifts, darting bursts, and mid-climb direction changes all became one-line offset functions, and every spider ends its climb at a window by construction. Six enemy types, each with a distinct silhouette (hand-placed 16×16 pixel maps — at sprite sizes, hand-authored beats generated), each readable by shape rather than color alone.

The rest of the revival was phased like any other project: fix the confirmed bugs, add the "juice" (particles, floating scores, screen shake, synthesized 8-bit sound effects), then the systems that make it a full game — persistent high scores, golden flowers that drop area-damage splash pots, and an awning trap that sweeps a whole row of spiders on a cooldown. Agents wrote the code; every diff got reviewed, and every feature got verified by driving the actual game in a browser — sampling spider trajectories frame-by-frame to prove the movement math, not just eyeballing it.

The full arcade presentation — cabinet bezel, retro HUD, and the how-to-play card

Status

PotShot Panic is live and playable at potshot.netlify.app — waves get mean somewhere past wave seven. The roadmap has the usual wishlist (touch controls, music, boss spiders), but the real point of the project is already made: an abandoned prototype went from "debug rectangles and silence" to a finished, shippable arcade game, with the human doing the directing and the reviewing rather than the typing. The pots, for the record, are the same ones on the roof. That detail mattered more than I expected.