Games · AI · Browser falling-block game / AI agent experiment

BlockDrop

A flashy falling-block game for the browser. One Claude Opus agent built the playable version from a single prompt in under an hour, with no revisions.

< 1 h one prompt, one agent
TypeScript Canvas 2D Web Audio Claude Opus
Role
Solo developer, built with one Claude Opus agent
Workflow
AgentAutoSetup scaffold, one prompt, no revisions
Platform
Browser · desktop and phone
Size
No runtime dependencies, 17 kB of gzipped JS

BlockDrop follows the genre’s modern standard rules (the “guideline”): a 7-bag randomizer, SRS rotation with wall kicks, hold, a ghost piece, lock delay, T-spins, back-to-back chains and combos. It wraps them in a canvas renderer with particles, screen shake and easing, and every sound is synthesized through Web Audio, so the game ships without a single asset file.

One prompt, one agent

The repository was scaffolded with AgentAutoSetup: an agent manual, enforced safety rules, git hooks and verification gates from the first commit. Then one Claude Opus agent got one prompt. In under an hour, with no revisions, it delivered the playable version:

  • the complete rule set, including T-spin grading, perfect clears and guideline scoring
  • pre-rendered block sprites, pooled particles, an eased row collapse, hard-drop trails and a score that rolls up
  • keyboard play with auto-repeat, a visible focus ring and a live region that announces the game state
  • 111 behavioural checks on the rules, plus gates for purity, reduced motion and the on-screen controls list
  • touch controls and gestures
  • an online high-score board

Each new gate was first run against a deliberately broken copy to prove it could fail. The rules gate caught two bugs before they were committed: a double clear removed the wrong second row, and the O piece rotated around its box instead of staying put. The process ran fully autonomously from start to finish.

Built to be checked

The rules are pure: no DOM, no clock and no hidden randomness. Time arrives as a delta and randomness as a seed, so every game is reproducible and the rules run in Node in milliseconds. The dependency points one way, so the whole presentation layer could be deleted and the game would still play correctly, and a gate makes sure it stays that way.