Skip to main content
GamesNovember 10, 2026

Cartridge Shelf: Twenty-Two Games in Five Days

I just put up a new site: games.charlessieg.com, which I'm calling the Cartridge Shelf. It's a shelf of small browser games that play like the classics I grew up with: Atari 2600 cartridges, arcade machines, and Apple I…

Original Games, Classic Gameplay

The one rule I set at the start: every game is an original game that borrows the gameplay of a classic, not its name, characters, art, levels, or music. So there's no Pac-Man on the shelf. There's Zoomies, which plays like Pac-Man. There's no Frogger either, but there is Floe Hop.

The classic gets its credit where it belongs. Each cartridge label names the game it plays like, and the back of the box tells that classic's story, with links to the game, its publisher, and the people who made it. The history is half the fun. Did you know David Crane fit Pitfall!'s 255 jungle screens into a 4 KB cartridge by generating them from a number sequence instead of storing them? Or that a player in Ottumwa, Iowa, played Nibbler for 44 hours over two days in 1984 and passed a billion points?

Here's the whole shelf:

GamePlays like
Blueprint SprintMaze Craze (Atari, 1980)
Reef RaiderYars' Revenge (Atari, 1982)
Dune RelicsPitfall! (Activision, 1982)
SwitchyardNibbler (Rock-Ola, 1982)
High WaterChoplifter (Brøderbund, 1982)
Ton of GoodsThe Oregon Trail (MECC, 1975)
Fresh SqueezedLemonade Stand (MECC, 1973)
Graveyard ShiftAsteroids (Atari, 1979)
LamplighterSinistar (Williams Electronics, 1983)
Bucket BrigadeMissile Command (Atari, 1980)
Floe HopFrogger (Konami, 1981)
Coop PatrolDefender (Williams Electronics, 1981)
Ant ParadeSpace Invaders (Taito, 1978)
Lawn OrderBerzerk (Stern Electronics, 1980)
Hatch WatchRobotron: 2084 (Williams Electronics, 1982)
Lantern RockZork (Infocom, 1980)
ZoomiesPac-Man (Namco, 1980)
Lily LancersJoust (Williams Electronics, 1982)
Snowball's ChanceDonkey Kong (Nintendo, 1981)
Night CourierElevator Action (Taito, 1983)
Hold the LineDesktop Tower Defense (Paul Preece, 2007)
Range WarStarCraft (Blizzard Entertainment, 1998)

One File per Game

Twenty of the games are a single, self-contained HTML file: markup, CSS, and script, with no build step and no framework. The only things a page loads besides itself are Google Fonts and, for sixteen of them, a music track. The longest of those files is just under 1,400 lines, and that's a whole arcade game, sound engine included.

Every game works with a keyboard and with touch controls on a phone. Lantern Rock is the shelf's text adventure, and it was the one I was most curious about, because a parser game on a phone is usually miserable. Every place has its own painted picture, and on a phone you don't have to type at all: a compass, a row of verbs, and a chip for each thing in reach build the commands for you.

Lantern Rock: a painted lighthouse lamp room at dusk, with a ship on the horizon and a workbench in the foreground
Lantern Rock: a painted lighthouse lamp room at dusk, with a ship on the horizon and a workbench in the foreground

The Polish Layer

Once there were thirteen games, they all got a shared layer of polish on top, and every game added after that was built with it:

  • Sound runs through a master gain and a compressor, with a three-step volume button next to the mute.
  • Positional sounds pan in stereo, and the quieter games got ambience: desert wind in Dune Relics, reef burble in Reef Raider, a night-yard bed in Switchyard.
  • Most games take a gamepad, offer a fullscreen button, and buzz your phone when you crash.
  • Several have easy, normal, and hard difficulty, and many have a Daily button (everyone plays the same seed that day) and a Seed button, so you can replay or share a run by its code.
  • Twelve games freeze for a beat on their biggest moments, which does more for the feel of a hit than you'd expect.

The music is mine, in the sense that I generated it. Each track is an original instrumental loop made with Suno on a paid plan (which carries commercial-use rights), trimmed to a seamless 56-second loop and leveled so no game is louder than the next. Sixteen games have one so far.

Then It Went 3D

By Monday morning there were twenty single-file games, and I wanted something bigger: a tower defense with real, modern graphics instead of pixels. That became Hold the Line, the shelf's first 3D game, drawn with Three.js and WebGL 2 in an isometric desert canyon at dusk, with lit and shadowed models, bloom, and particle effects.

You command the Colonial Guard, a frontier militia, against the Myriad, an insect swarm. Both factions are original. You build a maze out of seven kinds of structures, each with three tiers, against seven kinds of creature over thirty waves. The swarm re-routes around every wall you place, and you can never seal the canyon completely, so the maze is the whole game. That's why its cartridge credits Desktop Tower Defense, where building the maze yourself was the point.

Hold the Line: an isometric desert canyon where gun towers along a walled maze fire on a column of glowing insect creatures
Hold the Line: an isometric desert canyon where gun towers along a walled maze fire on a column of glowing insect creatures

Hold the Line shipped Monday at lunch. Range War shipped Monday evening. It's a real-time strategy game on the same engine, with the same two factions, and you can play either one against the computer at three difficulties. You mine ore and pump fuel, build a base, train an army, research upgrades, and destroy every enemy structure under fog of war on a seeded 64 × 64 map. The two factions don't play alike: the Guard's prospectors stay on site to build, while the Myriad's foragers plant seeds that grow on living root.

Range War: an isometric desert at dusk where rovers mine gold-veined rock beside a fortified command post, while riflemen and a two-legged walker meet a swarm of insect creatures
Range War: an isometric desert at dusk where rovers mine gold-veined rock beside a fortified command post, while riflemen and a two-legged walker meet a swarm of insect creatures

The 3D games are the exception to the one-file rule. Each loads its own modules plus a shared engine (the modeling kit, the stage, the effects, the sound, and both factions' models), and Three.js itself is vendored and pinned by checksum, so everything is served from the site and nothing breaks when a CDN changes underneath it.

How It Was Built

Claude Code did the building. My part was picking the classics, setting the rules (original games only, credit the classic, plain and warm copy, nothing that sells), generating the music, doing a code review partway through, and deciding when to go bigger. The agents designed each game, wrote it, shot its cartridge label from the game in play, researched and wrote the history on the back of the box, and checked every fact and link in it against its source.

Nothing ships on vibes. Every commit runs a unit suite. Before any release, a real-browser suite loads every page on desktop and on a phone, in light and dark mode, runs an axe accessibility audit, and then starts each game and plays it for a moment to prove the loop runs and the controls respond. It even plugs in an idle gamepad to make sure a controller sitting on the desk doesn't silence the keyboard, which was a real bug. After a deploy, every live file is compared to the build byte for byte.

The two 3D games add simulation tests that run without a browser at all, because their game logic is kept pure: no DOM, no Three.js, just the rules. That's what let an independent review of Hold the Line find sixteen issues and get every one of them fixed, each with a regression check, before the next game went out.

Five days, twenty-two games, and a shelf that keeps getting longer. Go pick one off the shelf.

The classic games named in this post are trademarks of their respective owners. The Cartridge Shelf isn't affiliated with any of them.