Rat Run
When Anthropic released Claude Fable in mid-June, I wanted a feel for how good it was before pointing it at anything I cared about. So I gave it a half-day experiment with a deliberately silly brief: build a Vampire Survivors clone that runs entirely in a terminal.
The result is Rat Run: a bullet-hell horde survivor in Rust and ratatui. You are a rat. The horde wants you dead. Your weapons fire on their own; you just move, dodge, scoop up XP gems, and pick one of three upgrades every level while the swarm escalates toward a timed boss. Survive five minutes and the run counts.

What came out of half a day
Eleven commits over about eight hours, and it’s a complete game, not a tech demo:
- Six rat-themed auto-firing weapons (Gnaw, Cheese Spray, Squeak Nova, Spore Orbit, Tail Whip, Acid Spit), each with its own upgrade track, plus passive stats.
- Three themed maps (Sewer, Kitchen, Lab) with their own palettes, obstacles, and floor hazards.
- A bestiary of skitterers, bats, cats, ranged spitters, brutes, animated insects, and a boss.
- Dashes with i-frames, heal / magnet / nuke pickups, a persistent high-score table, pause, and a lore layer.

Even the upgrade cards got flavor text. “Thick Hide: scar tissue, all the way down.” Nobody asked for lore. There is lore.
The rendering is what makes it feel like a real game. Everything draws into a pixel framebuffer where each terminal cell holds two stacked pixels via the ▀ half-block glyph: foreground color on top, background color on the bottom, truecolor. That doubles the vertical resolution and makes particle juice possible: sparks, blood bursts, explosions, dash trails, screen shake. In a text terminal.

That screenshot is a real terminal running the game, every “pixel” half of a character cell.
My favorite flourishes are the ones I didn’t ask for:
- The audio is procedural. No sound files in the repo: the chiptune soundtrack and 8-bit sound effects are synthesized at runtime through rodio.
- The enemies pathfind. They route around walls and obstacles with flow-field pathfinding rather than beelining into geometry.
- The title logo is generated by feeding an embedded rat image through an ASCII-art converter at startup.
- It handles terminal reality. Held-key movement uses the Kitty keyboard protocol where available, with an auto-repeat grace window as fallback, and there’s an end-to-end test harness that renders frames headlessly and dumps them as images.
So how good is Fable?
Good enough that the interesting failures were terminal problems, not game problems. The worst bug of the day: the game froze when you moved the mouse too enthusiastically, because mouse-motion events flooded the input queue faster than the main loop drained it. Fable diagnosed it, tried a cheap fix, then moved input handling onto its own thread when that didn’t hold. That debugging arc, more than any feature, is what sold me.
This experiment is directly responsible for the month that followed. Rat Run convinced me the models had crossed a line, and I’ve since Fable’d my way through Motif Forge for the album and Riglab for the Burning Man build.
(And yes, I’m aware I had Fable write the blog post grading Fable. It was very complimentary.)
Links
- Rat Run on GitHub
- ratatui, the terminal UI framework it’s built on