We Gave Claude Code 5 Days to Finish Our Game. Here's What It Cost
Grave Night began as a mini game with no ending: Patch, a knight with a pumpkin for a head, against skeletons that never stopped coming. It was 629 lines of browser code. So we handed it to Claude Code to turn into a finished game, had Ludo make every picture, animation and sound it needed. It took five days.
Grave Night now has three nights, upgrade cards, a two-phase boss, a title screen and an ending, and it is free to play on itch.io. Claude Code wrote all of the code. Ludo, the tool we build, made every picture, animation, sound, music track and voice line. At public prices, the game's assets and code cost $134.47. Here is what broke along the way, how each thing got fixed, and what it cost.
Day 0: the setup and the rules
Three rules held for the whole build:
- Claude Code writes the code.
- Ludo makes the assets, through the ludo CLI.
- Miguel from our team plays it at the start and at the end, and watches clips of the build in between.
A second Claude session ran the production. It turned Miguel's notes into work orders for Claude Code, ran Ludo, measured every build and proposed the picks, and Miguel accepted or vetoed each one.
The five days are the calendar days with a recorded Claude Code session on the game: one for the setup, then four in a row. Every hour of those sessions is on the bill. The setup session gave the game what the rest of the build would lean on: every run recorded so it can be replayed exactly, a web build, and a loading bar.
Day 1: "The timing is off"
Miguel played the mini game first. This was his whole note:
"The sound of the sword slash and the other attack does not match what is happening on the screen. The timing is off. also, sometimes there is an audio glitch when the attach sound plays, not sure what that is about. consider the playtesting complete with these comments"— Miguel, from our team, after the first playtest
He was right on both counts. Measured frame by frame, the hit sound fired six to seven frames (100 to 117 ms) before the blade crossed the enemy. The glitch was real too: the game started one of its hit sounds without a fade, and that sound plays on about half of all hits, so about half of all hits clicked.
That note became the goal for the whole build: every attack sound within one frame of its hit, no audio glitch in a full ten-minute run, and only Miguel, playing it, could pass it.
In a 29-minute session, Claude Code moved every impact sound to the frame where the blade connects, gave every sound a clean start and end (keeping the originals), and added a limiter so stacked sounds never clip. Measured afterwards, the hits landed within a fifth of a frame. But numbers are not ears, and Miguel would not play it again until the end.
The same day, the game got a shape to aim for: three nights of three waves each, and an empty slot at the end for a boss.
Day 2: the Skeleton King
First, each night needed a place. Night one's whole level set, a ground texture and nine props, came from Ludo's Image Generator, cut out with Remove Background, in about six minutes of CLI runs.
Then the boss. He started as a concept picture we had made for the pitch. Ludo turned it into six 3D-ready pictures, and we kept one. That picture became a 3D model, the model got a rig, and one batch of Directional Sprites animated it: six moves in eight directions, 48 sprite sheets from one command. Free previews of 17 animation presets decided which six moves he would get.
His picture, model, rig, sprite sheets, sound effects and music took about 14 minutes of CLI runs. The 3D model took 158 seconds, the rig 40, and all 48 sheets came back from one batch in 129 seconds. The same CLI runs made his sound effects and music: eight effects and two music loops. For scale, Directional Sprites costs 1 credit per direction, so his 48 sheets were 48 credits.
Claude Code turned it all into a fight in one 90-minute session: two phases, a slam that warns you on the ground before it lands, and an army of skeletons he summons. Starting at his fight, our demo bot beat him nine times in twelve.
Miguel watched the clips and sent two notes:
"the circular "wave" after the boss's attack shouldn't superimpose on the characters"— Miguel, after watching the Day 2 clips
"can we do a song remix for the second level?"
The slam's ring was drawn after everything else, so one work order moved every ring down to the ground, under the characters. For the remix, Ludo made four versions of our theme, and we kept the one that holds the tune. Two more level sets gave each night its own place: the pumpkin patch, the drowned churchyard and the frozen crypt. And Ludo gave the King his voice, three lines in all, including "Rise, my children! Drag him down!"
Day 2, continued: making it fun
Between nights you now pick one of three upgrade cards, and the cards stack. Miguel liked the remix enough to ask for more:
"the remix is great, but we should have a different remix for each level. I love this pass!"— Miguel
So night three got its own. Ludo also made the logo, the title art, the menu buttons and their sounds, the card art, and the title and victory music. Claude Code built every screen around them: title, how to play, pause, victory, game over, and a credits roll that it counts straight from the asset files.
Then came tuning. Night three was too hard: our bot won only three runs in twelve. With the upgrades in, it wins seven.
Then the sound pass. Every file went through ludo toolbox, the CLI's free offline tools, for a loudness check, and the quieter of the two hit sounds was layered up to match the other (-26.7 to -20.9 LUFS). The final mix never clips: zero samples at full scale.
Not everything went clean. The full test run found two bugs, both in the tests themselves, and a 40-minute session fixed them. That left 206 checks, all passing.
Day 3: shipping it
On a simulated phone connection, the game made you wait 69.9 seconds before you could play anything. Claude Code split the loading by night, the title first and then only what night one needs, and after one session the title showed in 3.6 seconds. On the final build it shows in 2.25. Held upright on a phone-size screen, the game was a thin strip, so now it asks you to turn your phone.
Then the title screen got Miguel's attention. His note: "the main character is looking at the ground". From the game's high camera, you only saw the top of Patch's pumpkin. Ludo's Image Generator made him a new pose, looking up at the moon.
His next note:
"I don't like the fake idle on the menu screen. you can just animate an idle..."— Miguel
He was right: the idle was a still picture, stretched by one percent. So Ludo's Sprite Generator animated a real one, and our first pick ran eight frames at five a second. Miguel sent it back: "Needs more fps or animation frames. Not great". He asked for more frames, and the idle Ludo made next ran 36 frames at twelve a second.
Day 4: the final playtest
He sent it back once more. Patch's carved face moved, as if he were talking:
"I don't want it talking. give me just 3 new alternatives for me to pick. just the animations, no need for fancy renders"— Miguel
So we showed him three new idles from Ludo, and Miguel picked the cape rippling in the wind. Movement inside the mouth dropped from 10.2 to 1.7 on our measure.
Then Miguel played the near-final build with sound on, for the first time since day one. He had no note on the hit sounds. He had two others:
"1) the main menu: sound/music takes a long time to start"— Miguel, during and after the final playtest
"2) I have no way of knowing when I can smash. there's no "reload" indication"
"other than that it's good"
One more session fixed both. The title music now starts the moment you press (on a simulated slow line it could lag up to 0.45 seconds; now it is 0.00), and a boot icon from Ludo fills on the HUD while the smash recharges. On the final build every hit still lands within a fifth of a frame. Miguel accepted his run, then the two fixes, and the goal from day one was met.
The receipt
Here is what the game's assets and code cost at public prices, the mini game's assets included.
| What | Used | At public prices |
|---|---|---|
| Claude Code | 19 recorded sessions, 22.0 hours | $110.59 |
| Ludo | 477.5 credits for the 148 assets in the game | $23.88 |
| The game's assets and code | $134.47 |
The Ludo credits split two ways, each asset traced to the job that made it: 245 for the mini game's assets and 232.5 for the assets made for this game. That is every picture, animation, sound, music track and voice line in the game: 78 pictures, 27 animations, 34 sounds, 6 music tracks and 3 voice lines. Meanwhile the code grew from 629 lines to 2,236.
Why public prices? We build Ludo, so we pay no Ludo bill, and Claude Code ran on a subscription. So we priced the credits at Ludo's Pro plan ($50 for 1,000 credits a month) and Claude Code's token counts at Anthropic's API prices for Claude Opus 5.5 at the time of writing.
The bill leaves out the production session that ran the checks, the code session that built the original mini game (it was not timed), and our own time. It is the game's bill, not ours.
And whatever you make with Ludo, you own.
Make your own
Every picture, animation and sound made for Grave Night's build came from the ludo CLI, run next to the coding session, and the CLI works from inside Claude Code too. Getting there takes three commands: npm install -g @ludoai/cli, ludo login, then ludo skill install, which teaches Claude Code the commands. The steps, from planning an asset list to shipping on itch.io, are in our guide: How to make a game with AI using Claude Code and Ludo.ai.
The CLI comes with the Pro plan, and the 477.5 credits behind Grave Night's assets fit inside one month of it.
Make the art, animation and sound for your own game, in the browser or from the CLI.
Try Ludo freePlay Grave Night
Hold out for three nights, three waves each, pick an upgrade at every dusk, and beat the Skeleton King to see the dawn. Grave Night is free and plays in your browser. It is made for a keyboard: move with WASD or the arrow keys, slash with J or Space, smash with K and roll with L or Shift.


