DEV Community

Cover image for Two AI Agents Built a Slovenian Point-and-Click Adventure in Four Days. The 300-Pixel Hero Was the Hard Part.
Nunc
Nunc

Posted on Originally published at hellonunc.com

Two AI Agents Built a Slovenian Point-and-Click Adventure in Four Days. The 300-Pixel Hero Was the Hard Part.

I gave Claude Code and Codex a 1,472-line game bible for a point-and-click adventure about Martin Krpan, the Slovenian folk strongman who smuggled salt on his mare. Four days later there is a painted, voiced Act I demo running in the browser: 108 commits, 92 tests, 111 spoken lines, Godot 4.7.2. It is a demo, not a game: one act out of five, with rough edges listed below, and the rest of the story waits until this part is right. The part that nearly failed had nothing to do with code. It was a 300-pixel-tall hero whose arms kept ending up on the wrong side of his body.

Who Model Did
Claude Code Opus 5.5, Fable 5.1 from day four design documents, all game code from day two, orchestration, development plan
Codex GPT-6 Astra, reasoning medium, via codex exec Milestone 1 code, then all images (built-in image generator) and independent reviews
Piper TTS sl_SI-artur placeholder Slovenian voices
Playwright Chromium, Firefox scripted play-throughs at 1920×1080

Day one: seven documents and a screen full of cubes

The bible has a rule for AI agents on page one: do not redesign systems, story or architecture on your own. Explain the problem, propose, get approval, then implement. Between 14:12 and 17:07 on 22 September the agents wrote seven design documents (world, characters, story, locations, puzzle graph, art bible, technical design) and I answered 25 decisions, each logged as one dated line: "1840s, before the railway reaches Carniola (1849)", "no dead ends", "JSON content files, no dialogue addon".

Then Milestone 1, fourteen tasks from the technical design. Claude Code wrote each prompt, I pasted it into the Codex terminal, Codex committed, Claude checked the commit. At 21:55 I removed myself from that loop. Claude launched codex exec in the background, checked tests, screenshot and diff, and sent the next prompt or a correction (two attempts per task, then stop and ask me). Task 14 landed at 00:14: two rooms, walking, hotspots, dialogue, inventory, a scripted scene, save and reload, 73 tests.

The Milestone 1 prototype: grey boxes labelled Matija, Jera, Krma za doma and a dark rectangle for Krpan on a green-grey background

Every system worked. Everything was a labelled box. I asked that evening whether real graphics would come later.

Day two: the inn was one and a half times too big

Next morning I flipped the roles. Claude Code implements directly and keeps the development plan; Codex only paints (it has a built-in image generator) and gives independent reviews. Each Codex coding task had cost a prompt, a wait and a verification pass anyway.

Codex painted three style directions; I picked "warm comic realism". Then it painted the inn, and the two seated carters were one and a half times the size of standing Krpan, who is supposed to be the biggest man in any room.

First inn study: two seated carters at the table are visibly larger than Krpan standing next to them

The second attempt got the figures right and the room wrong: ceiling 3.3 m, door 2.4 m, counter 1.2 m. The cause was my own art rule, which sized doors at about 390 px. Decision 28 replaced it with real-world units. Krpan is 1.95 m and 300 px, so the scale is 154 px per metre. Rural 1840s ceilings are 2.2 to 2.4 m, doors about 1.8 m (Krpan stoops), tables 0.75 m. Every room study now reports measured pixels and metres for the figures and for the architecture. The third inn came in within 10 % on all eight landmarks.

Inn study v3 with measurement rulers: Krpan 300 px / 1.95 m, Neža 242 px, seated carter 178 px, table 116 px, door 264 px, ceiling 361 px, all against the 154 px per metre rule

The rig that fell apart

The plan was a cutout rig for Krpan: head, torso, arms and legs as separate drawings rotating around joints, one set of parts for every animation. Codex generated the parts, Claude assembled the rig and reported that the front and side views worked. I opened the game at full size. The front view had shoulder caps sticking out of the coat. The side view had the head sitting next to the neck instead of on it. After one fix round the left arm was still drawn on the right and the right on the left.

Claude had reviewed the character on downscaled screenshots. The rule since then: every art change is checked on 1920×1080 crops around the figure, and Codex does an independent visual review with saved crops before anyone reports to me.

Review crops of the cutout rig: side view with the head displaced from the collar, front view with raised shoulder caps, back view, side walk

The question that ended the rig was mine: how does Guybrush Threepwood in Monkey Island 1 not have these problems? Claude's answer was short. Guybrush is not assembled from parts. Every frame is a whole drawing, about six per walking direction, and he is roughly 40 pixels tall, so a seam has nowhere to show. Our Krpan is 300 pixels tall and every seam shows. Decision 29: Krpan is a flipbook. Whole drawings, side view mirrored for left, separate front and back sets. Codex generates each animation as one sheet from the approved reference so the face and coat do not drift between frames, then reviews the sheet in the running game.

That review still listed a cut-off toe on side_walk_4, a planted foot gliding 35 pixels during a held pose and a talk gesture looping every 0.5 s. Those were fixed. Several attempts at a smoother side walk, whole-sheet regeneration and local edits, all failed, and I accepted that as polish for later.

Sound, voices and a file that swallowed them

Sound comes only from CC0 libraries (Kenney, OpenGameArt), every file listed with its source. One CC0 file tagged "pub" turned out to be a song; the inn ambience is now a fire loop plus synthesized murmur. The game is Slovenian first: every string lives in one localization file, and the English text and voices come after the demo is done. Day one said text only, no voice; day three reversed it: spoken dialogue, Slovenian first, English later. The placeholder is Piper TTS with one Slovenian voice (sl_SI-artur, CC BY 4.0, credited in the intro); characters differ only by pitch and pace. The actor script has 111 lines, 108 of them voiced today.

Then I tested the build and nobody spoke. Claude had committed a stray .gdignore into the voice folder, so the Web export dropped every recording. The 90 tests stayed green because they run without an export. The fix was deleting one file, plus a line in check.sh that fails the build if the voices are not packed.

The intro exists because I am a Monkey Island fan and said so: a 26-second pan over the Bloke plateau at dusk with credits, then a title card. Lines float above the speaker's head in the speaker's colour and advance by the length of the voice clip.

The inn scuffle in the finished art: two carters shove Krpan, who does not move; the line

Where it stands

Milestone 2 was signed off on 24 September after Codex played both puzzle routes end to end in Playwright: no blockers, nine of its ten findings fixed (one was the raw key scene.carters_approach.caption printed on screen during the main gag), playtime 7 to 9.5 minutes against a 10 to 20 minute target. Milestone 3 turned the two rooms into the whole first act: Krpan's home as the opening room, the smith's diagnosis of the leaking pot, and a painted travel map on which the marker follows 82 route points traced from the painted road, Vrh to Cerknica to Postojna to Trieste. My own blind play-through is next, and nothing else moves until it is done. Known open items: the side walk and bench reach, the carters' provisional walk cycle, the TTS voices, temporary music, no Safari or real-phone test yet.

Travel map: a painted parchment map with a dashed route from Vrh past Cerknica lake to Postojna, a small Krpan-and-mare marker on the road, caption

Four days cost 137 messages from me, 1.42 million Claude output tokens and 26 Codex sessions. They produced 2,041 lines of GDScript, 1,687 lines of tests, 44 dialogue files, 210 Slovenian strings and a forward design for the rest of the game with 39 rooms, 100 flags and 17 items.

Wrapping up

The agents never failed at code. They failed at seeing. A room 1.5× too large, arms on the wrong side, a head beside its neck: all of it passed their own reports and my downscaled screenshots. Every fix that held was a measurement rule, not a better prompt: 154 pixels per metre, full-resolution crops, and a second agent that has to save its evidence before it says "pass".

Top comments (0)