ai-code-battle/README.md
jedarden 41c7223f8a refactor(web): promote app.html to index.html as homepage
The main leaderboard SPA is now served at / (index.html) and the
standalone replay viewer lives at /replay.html. This removes the
_redirects workaround in index-builder that patched over the inverted
entry points.

- Rename web/app.html → web/index.html (main SPA)
- Rename web/index.html → web/replay.html (standalone viewer)
- Update vite.config.ts: main→index.html, replay→replay.html
- Remove _redirects injection from deploy.go verifyMergedOutput
- Update pages.json routes and README dev URL

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 08:51:52 -04:00

129 lines
3.8 KiB
Markdown

# 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
```bash
# 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
1. Open the web app at `http://localhost:3000/`
2. Navigate to "Replay Viewer" in the menu
3. 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](DEPLOYMENT.md) for detailed deployment instructions.
### Quick Deploy
```bash
# 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
```bash
# 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](docs/plan/plan.md) for the full implementation plan.
## License
MIT