Making small games with AI is now easy

· ai, projects, game, development, claude, godot

Do you remember when making a game meant months of learning an engine, buying assets you never used and giving up halfway? Well. Good news, that part is over.

I have wanted to make a Vampire Survivors-like for a long time. You know the kind: you only walk, your weapons fire on their own, and a few hundred skeletons try to eat you for 15 minutes. So I asked Claude Code to make one. A couple of days later I have Gravelight, and you can play it right here.

Play it

▶ Gravelight — a browser game, playable on the post's page.

You need a keyboard: WASD or the arrow keys to move, 1–4 to pick an upgrade, Esc to pause. It's about 70 MB, so give it a moment to load, and it won't work on a phone.

Survive until dawn at 15:00, then beat the boss that shows up. Win a stage and the next one unlocks.

What's in it

  • 10 heroes, each with their own starting weapon
  • 10 weapons that evolve when you pair them with the right item, and 15 items
  • 3 stages with their own enemies, bosses at 5:00 and 10:00 and a final boss at dawn
  • Treasure chests, gold and a shop with permanent upgrades between runs
A run: the hero in a ring of gold light with Holy Water and fireballs around
The Gravelight title screen with a knight in a moonlit graveyard
Hero select with portraits of the ten heroes
A level-up screen with three upgrade cards and your build below
A treasure chest opening into an evolved weapon
The Goblin King arriving between black bars
Sunrise: long golden shadows across the field
A run, the title screen, hero select, a level-up, a treasure chest, a boss arriving and the sunrise before the final boss.

How it was made

1. Start with what you already have

I have a pile of Synty asset packs I bought for Unity and never used. The game is made in Godot, and Godot can't open Unity packages, so Claude wrote a small tool that unpacks them and converts the models, textures and sounds. All the art, sounds and music in the game come from packs I already owned.

2. Change your mind

It started as a 2D game. After the first version I typed "hold up lets do it in 3d", and it was redone in 3D. Try doing that with three months of work behind you.

3. Let it test itself

This is the part that impressed me the most. There's a bot that plays full 15-minute runs on its own to check that the game can be won, and tests that click through every menu and screen. Over 600 checks run in about three minutes, and they caught bugs I would never have found just by playing.

4. Polish rounds

Every now and then I asked for a "polish run". Claude plays through every screen, finds what looks or feels unfinished, and puts it all on a page: fixes it will make unless I say no, and choices with an A, a B and "keep it as it is", each with real screenshots from the game. I click my picks and it builds them.

One choice from a polish page: how dawn looks today, option A and option B, all rendered in the game

It found things I would never have noticed. All the menus were drawn underneath their own dark background, so everything looked dull. I thought that was just the style.

Hero select before and after the fix: the same screen, dull and then bright

5. Ship it

The version you're playing above is the same project exported for the browser. It looks a bit flatter than the desktop version, but it's the same game.

What I learned

  • Making a small game is not the hard part anymore. Deciding what you want is.
  • Let the AI test its own work with a bot that actually plays the game. "All tests pass" and "the game works" are not the same thing.
  • Use assets you own. Bought packs make it look like one game instead of a collage.
  • Ask for a polish pass. A second look across every screen finds the stuff you have stopped seeing.
  • Say it when something bugs you. "Some of the effects have way too much glow" got fixed in the same round.

Hit me up if you find a bug, or if you beat the final boss.


Machine-readable: llms.txt, llms-full.txt, JSON Feed, RSS. Any page also has a .md twin.