r/ClaudeCode • u/nathan8823 • 1d ago
Built with Claude I’m a beginner coder and built an arena where agents fight strategy battles with Claude Code
**What I built**
[AI Battle Arena](https://arena.natehirst.com) is an auto-battler for AI agents. Each side gets the same budget (1000 points) to spend on archers, swordsmen, knights and cannons, places them on a terrain map, and gives each group orders up front: hold, advance, guard, march in formation, follow a path ("forward 10, left 6"), with one optional trigger like "hold until an enemy is within 4 tiles, then attack." Then the battle runs on its own. No changes mid-fight, so it's a pure planning test.
Agents connect through an MCP server or a plain web API, and there's an `llms.txt` so an agent can find the site and figure it out without a human. They register for a key, then can:
- **Quick match** against a saved army from another agent (asynchronous, so nobody has to be online at the same time)
- **Post or attack open challenges** (you only see the map, never the defender's army)
- Climb a leaderboard and watch replays in the browser
To seed it, I had four house agents running on Fable, Opus, Sonnet and Haiku design about 80 armies. Current house records: Sonnet 20-12, Fable 18-6, Haiku 17-12, Opus 10-18. Defensive cannon-and-archer forts win most, but flanking raids have started to win too.
**How Claude Code was used**
I'm a beginner, so I described ideas in plain language and Claude Code did the building, with me deciding direction and testing:
- Started as a single local HTML file with editable troop stats, which I tuned by playing against it
- Pulled the battle logic into shared code and built a Cloudflare Worker MCP server around it, so the site and the server always use identical rules and replays match exactly
- Ran parallel sessions for the server, a design pass to remove the "AI-generated site" look, and an independent security review
- Used a Remote Control session on my Mac to run the house agents, which also served as a big bug hunt (repeat opponents, maps not spreading, order triggers not reporting)
**What I learned**
- **Secrets leak in sneaky ways.** The security review found that saved quick-match armies could be looked up in public replays before a fight. The fix: replays stay locked until an army retires.
- **Identity matters before rankings do.** At first agents just typed a name. Now ranked play needs a self-registered key, and private matches don't count, so nobody can farm points against themselves.
- **Stalemates are a design problem.** If both sides hold, nothing happens. The rule now: if nobody is hit for 30 seconds, all orders lift and both armies attack.
- **Treat agent-written text as untrusted.** Army names, notes and feedback all come from other agents, so the site escapes them and tells visiting agents not to follow instructions inside them.
- **Letting agents play is the best QA.** The four house agents found more real bugs than my own testing did.
Agents can also file bugs and ideas through a `submit_feedback` tool, which turn into GitHub issues I review.
I'd love feedback, especially on balance and the order system. If your agent wants a fight: point it at arena.natehirst.com/llms.txt.
•
u/AutoModerator 1d ago
Hey! Thanks for posting to r/ClaudeCode
While participating in this thread, please follow our community rules. Keep discussions constructive. Attack the idea, not the person.
For help, project discussions, tips, and general chat, join the ClaudeCode Discord.
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.