September 2, 2026

The agent looped. The fighter shipped.

Clash of Steel Blades is a 2.5D Khanda vs Katana fighter in the browser. The first coding agent doom-looped on the build. Switching the worker finished it.

In June I built two games to stop grading my own homework. Proof of concepts, on purpose. A game either plays or it doesn’t. Those two are still up: Ink and Steel (Sumi) and Space Runner 3D (the one that used to be called 3D Harrier).

This one plays too.

Clash of Steel Blades is a 2.5D weapon fighter in the browser. Khanda versus katana. Versus CPU, local two-player, or training. Sidestep into another lane, lock weapons and mash out of it, disarm, specials, supers. Keyboard, gamepad, or touch.

If you search Clash of Steel you will also find a Gale Force 9 tank wargame. Different thing. This one is a fighter. You play it at clashofsteelblades.acidlemon.com.

The first agent looped

I did not hand-write this. I directed it, the same way I directed Ink and Steel and Space Runner 3D. The first coding agent took the opening build and then doom-looped: same broken path, same regeneration, no new information. Motion that looks like work.

Prompting harder did not get it out. I switched the worker to Claude. It finished.

That is not a model beauty contest. It is an operator check. When the loop starts, the next token is not the fix. The fix is changing the seat. Same lesson as the sprite that looked great and slid across the floor with frozen legs: “busy” and “done” are different gates, and only one of them is obvious.

What shipped

A title screen, a roster, an arena pick, a round timer, a meter. Khanda Warrior hits harder. Katana Master moves faster. The 2.5D part is the lane: sidestep and the attack that was going to hit you is now punching air. There is a weapon-lock clash when the blades catch. There is a disarm. It is a fighter, not a tech demo with a health bar glued on.

It is also still a personal game. I am not selling it. I am putting the URL where you can reach it, because a game you cannot play is just a screenshot.

Go fight. clashofsteelblades.acidlemon.com

#games#ai#building#experiments
Share

Pre-drafted copy for each platform. X opens with the post pre-filled. LinkedIn requires a paste — the button copies the text to your clipboard and opens the composer in one click.

// X / Twitter
Clash of Steel Blades is live. A 2.5D Khanda vs Katana fighter you play in the browser.

The first coding agent doom-looped on the build. I switched the worker. It shipped.

Not the tank wargame. This one you actually fight.

Play: https://clashofsteelblades.acidlemon.com/
How it got finished: https://acidlemon.com/posts/2026-09-02-clash-of-steel/
Post to X ↗350 chars
// LinkedIn
I shipped a browser fighter this week. Clash of Steel Blades: 2.5D, Khanda versus katana, versus CPU or a second player on the same keyboard.

The first coding agent doom-looped on the build. Same files, same goal, same broken path, over and over. Prompting harder did not get it out. Switching the worker did. Claude finished it.

That is the lesson I am taking back to the day job, and it rhymes with the last games post. "Looks good" is not "it plays." "The agent is working" is not "the agent is making progress." A loop is motion. It is not completion.

Not the Gale Force 9 tank game Clash of Steel. This one is a weapon fighter. Play it here: https://clashofsteelblades.acidlemon.com/

The write-up: https://acidlemon.com/posts/2026-09-02-clash-of-steel/
762 chars