diff --git a/PROGRESS.md b/PROGRESS.md index f0e0b6a..2d03967 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -7,6 +7,7 @@ **Last Updated: 2026-03-24** ### Recent Changes (2026-03-24) +- Added `README.md` with project overview and quick start guide - Added `.gitignore` for proper repository hygiene - Added `package-lock.json` files for reproducible builds - Verified all tests pass (glicko2.test.ts, generator.test.ts) diff --git a/README.md b/README.md new file mode 100644 index 0000000..60958c6 --- /dev/null +++ b/README.md @@ -0,0 +1,129 @@ +# 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/app.html +``` + +### Viewing Replays + +1. Open the web app at `http://localhost:3000/app.html` +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