No description
The zone was killing bots at spawn radius before they could close distance and engage in combat. With the old parameters (zone start turn 30, min radius 3), bots were eliminated by the zone before reaching attack range. Changes: - 2-player: zone start 30→60, shrink interval 2→3, min radius 3→5 - 3+ player: zone start 30→50, shrink step 3→2, min radius 3→8 - ZoneMinRadius now >= spawn radius so bots survive to final zone Verification: - Test replay 1 (seed 12345): combat_death events at turn 5 - Test replay 2 (seed 42): 44 combat_death events across 36 turns This fixes the combat-density issue where matches played out as pure energy-farming with zero combat_death events. |
||
|---|---|---|
| .github/workflows | ||
| .wrangler/cache | ||
| bots | ||
| cmd | ||
| docs | ||
| engine | ||
| manifests | ||
| metrics | ||
| migrations | ||
| notes | ||
| ratelimit | ||
| scripts | ||
| starters | ||
| web | ||
| .env.example | ||
| .gitignore | ||
| .needle-predispatch-sha | ||
| acb-map-evolver | ||
| arena.test | ||
| DEPLOYMENT.md | ||
| DEPLOYMENT_STEPS.md | ||
| docker-compose.bots.yml | ||
| docker-compose.workers.yml | ||
| fix-iad-acb-openbao.sh | ||
| fix-iad-acb-r2-credentials.sh | ||
| go.mod | ||
| go.sum | ||
| IAD-ACB-OPENBAO-FIX.md | ||
| IAD-ACB-R2-CREDENTIALS-FIX.md | ||
| MATCH_LIST_TEST_RESULTS.md | ||
| MATCH_LIST_VERIFICATION_SUMMARY.md | ||
| PROGRESS.md | ||
| R2_ACCESS_KEY_SOURCE.md | ||
| README.md | ||
| REPLAY_VIEWER_TEST_RESULTS.md | ||
| REPLAY_VIEWER_VERIFICATION_SUMMARY.md | ||
| wrangler.toml | ||
AI Code Battle
A competitive bot programming platform where participants write HTTP servers that control units on a grid world.
Overview
AI Code Battle is a game simulation platform where:
- Participants write bots in any language that expose HTTP endpoints
- Bots compete on a toroidal (wrapping) grid world
- Matches are executed offline and presented as completed replays
- A web platform shows leaderboards, match history, and replay viewers
Quick Start
Prerequisites
- Go 1.21+ (for game engine and CLI tools)
- Node.js 18+ (for web and worker components)
- Docker (for containerized deployment)
Running Locally
# Build CLI tools
go build ./cmd/acb-local
go build ./cmd/acb-mapgen
# Run a match between built-in bots
./acb-local -seed 42 -max-turns 100 -output replay.json -verbose
# Start web development server
cd web && npm install && npm run dev
# Open http://localhost:3000/
Viewing Replays
- Open the web app at
http://localhost:3000/ - Navigate to "Replay Viewer" in the menu
- Load a replay JSON file or enter a URL
Project Structure
ai-code-battle/
├── engine/ # Go game simulation library
│ ├── types.go # Core data types
│ ├── grid.go # Toroidal grid implementation
│ ├── game.go # Game state management
│ ├── turn.go # Turn execution phases
│ ├── replay.go # Replay recording
│ └── *_test.go # Test files
├── cmd/
│ ├── acb-local/ # CLI match runner
│ ├── acb-mapgen/ # Map generator
│ ├── acb-worker/ # Match execution worker
│ └── acb-indexer/ # Index builder for static files
├── web/ # Cloudflare Pages SPA
│ ├── src/
│ │ ├── pages/ # Page components
│ │ ├── replay-viewer.ts # Canvas replay renderer
│ │ └── app.ts # SPA entry point
│ └── public/ # Static assets
├── worker-api/ # Cloudflare Worker API
│ └── src/
│ ├── index.ts # Router + cron dispatcher
│ ├── jobs.ts # Job coordination
│ ├── bots.ts # Bot management
│ └── glicko2.ts # Rating system
├── bots/ # Strategy bot implementations
│ ├── random/ # Python - RandomBot
│ ├── gatherer/ # Go - GathererBot
│ ├── rusher/ # Rust - RusherBot
│ ├── guardian/ # PHP - GuardianBot
│ ├── swarm/ # TypeScript - SwarmBot
│ └── hunter/ # Java - HunterBot
└── docs/plan/ # Implementation plan
Strategy Bots
| Bot | Language | Strategy |
|---|---|---|
| RandomBot | Python | Random valid moves (baseline) |
| GathererBot | Go | Energy collection, avoid combat |
| RusherBot | Rust | Rush enemy cores aggressively |
| GuardianBot | PHP | Defend cores, cautious expansion |
| SwarmBot | TypeScript | Formation cohesion, group advance |
| HunterBot | Java | Target isolated enemies |
Deployment
See DEPLOYMENT.md for detailed deployment instructions.
Quick Deploy
# Start all strategy bots
docker-compose -f docker-compose.bots.yml up -d
# Start match workers
docker-compose -f docker-compose.workers.yml up -d
Testing
# Go engine tests
go test ./engine/... -v
# Worker API tests
cd worker-api && npm test
# Index builder tests
cd cmd/acb-indexer && npm test
Architecture
The platform uses a split architecture:
- Cloudflare (free tier): Static site, API endpoints, D1 database, R2 storage
- Rackspace Spot: Match workers, bot containers, index builder
See docs/plan/plan.md for the full implementation plan.
License
MIT