On the fourth anniversary of an earlier tweet, Simon Willison asked Claude Fable 5 (running in Claude Code for web) to build an entire browser 3D game from the content of that tweet and two attached images. The agent produced a playable demonstration that Was pushed to a GitHub branch and tested with automated playthroughs.
Origin and aim
Willison’s original tweet from August 5, 2022 included a GPT-3 generated product description for a game called “Raccoon Heist” and concept images produced with DALL·E. On August 5, 2026 he prompted Claude Fable 5 to “Build this 3D game, for the browser,” attaching the two images and instructing the agent to work independently and commit frequently so the development could be previewed.
Workflow: Claude Code for web and GitHub Pages
To preview progress while the agent was working, Willison paired Claude Code for web with a GitHub repository and published the branch via GitHub Pages. The key steps:
- Create a new repository (public or private).
- Start a Claude Code for web session and tell Claude to commit an index.html quickly and then iterate.
- Configure GitHub Pages to deploy from the branch that Claude creates (for this project the branch was claude/3d-raccoon-heist-game-50n293).
After each push the site became visible at the pages URL in roughly 30 seconds. Willison notes that publishing from a private repo still exposes the site to anyone who can guess the repository URL.
Prompt, tech choices and how Claude filled gaps
The mobile-written prompt told Claude to produce a mobile-friendly, touch-controlled 3D browser game that serves static files from index.html, to use an OpenAI API key and gpt-image-2 for generated textures, to work without further design input, and to append progress notes to notes.md in every commit. Willison did not force technology decisions; Claude selected Three.js based on prior experience.
Giving Claude an OpenAI key allowed it to generate textures and hero art with gpt-image-2. Throughout the build the agent:
- created an index.html and vendored a local copy of Three.js,
- wrote a gen_textures.py script to generate image assets,
- spot-checked generated textures,
- created a title-screen image with gen_title.py using gpt-image-2,
- and committed frequently to the branch claude/3d-raccoon-heist-game-50n293.
Automated testing and bug fixes
Claude ran Playwright-based smoke-tests in a bundled Chromium to take screenshots of desktop and mobile widths. The tests surfaced and Claude fixed several issues, notably:
- a CSS assignment caused the canvas to render at 2× size on real phones (desktop DPR-1 testing had hidden the problem), and
- the win-screen star-rating .stars CSS inherited the title-screen full-screen rule and swallowed taps on the “next night” button.
The agent recorded its build log in notes.md, including entries like the addition of a patrolling guard dog and automated verification of wander → track → caught behavior.
What the game is and how it’s built
Technical and gameplay highlights:
- A fully 3D game built with Three.js (vendored, no CDN), procedural low-poly characters, and a procedural WebAudio soundtrack (walking-bass jazz plus all sound effects; no audio files).
- All seven ground/wall textures and the title-screen hero artwork were generated with gpt-image-2 and committed as static assets, so the deployed demo performs no runtime API calls.
- Mobile controls use a dynamic touch joystick (appears wherever you touch) and a DASH button; desktop uses WASD/arrows and Space.
Gameplay summary:
- You play a masked raccoon sneaking out of the crew’s dumpster hideout into a moonlit cul-de-sac. Collect coins, gems, rings, donuts and fish (which visibly stack on your back and slow you down), then carry them home and bank them before dawn.
- Each night raises the goal and the heat: night 1 has one flashlight-sweeping guard, night 2 has two, night 3 introduces a scent-tracking hound that ignores line-of-sight. A police cruiser sweeps the street with headlights; homeowners sometimes peek out of windows; a seagull periodically dive-bombs unclaimed loot; pizza slices trigger a 6-second speed FRENZY; and a rare golden TV is worth 120 points if you haul it home.
- Win ranks are TRASH PANDA ⭐ → CAT BURGLAR ⭐⭐ → MASTER OF DISGUISE ⭐⭐⭐, and your best run is saved to localStorage.
Claude made seven commits to claude/3d-raccoon-heist-game-50n293 and verified them with automated Playwright playthroughs across desktop, portrait-phone and landscape-phone viewports.
Is it any good?
Willison’s assessment: technically impressive but not a good game. Specifics:
- The implementation is notable: full 3D, flashlight illumination cones, coherent visual style, and mobile compatibility. The procedural audio matches the game’s mood.
- However, it lacks meaningful team mechanics (the other two raccoons are decorative), has limited difficulty progression, and becomes dull once you’ve collected all items and wait for dawn.
- The dog mechanic in night 3 is the most interesting addition, but overall the game is very easy and doesn’t sustain engaging play.
As a finished project it’s mediocre; as a fully agent-produced starting point from a single prompt it’s very impressive. Willison observes that designing genuinely fun games remains a human skill that current agents and his own quick iterations haven’t matched.
Final thoughts
Willison recommends experimenting with agent-driven game development as a low-risk way to explore agent capabilities. Tinkering can be entertaining and, with enough work, might turn an agent-generated demo into a playable game. The repository, Claude Code session and notes.md are available in Willison’s logs for those who want to inspect or run the demo locally.



