- Read each bot's entry point file to determine programming language - Inferred purpose from code structure and comments - Created annotated table with all 21 bots - Language distribution: Rust(4), Java(3), Python(4), Go(4), TypeScript(2), JavaScript(2), C#(1), PHP(1) Co-Authored-By: Claude <noreply@anthropic.com>
3.3 KiB
3.3 KiB
Bot Language and Purpose Analysis
All 21 Bots Annotated
| Bot Name | Language | Purpose |
|---|---|---|
| assassin | Rust | Decapitation archetype - all units rush the enemy core directly, ignoring enemy units and economy |
| coordinator | TypeScript | Dynamic role allocation - assigns each bot a role (Attacker/Harvester/Defender/Scout) each turn, rebalancing based on game state |
| defender | C# | Core-hugging perimeter defense - bots patrol evenly-spaced slots around nearest active core and intercept enemies entering perimeter |
| economist | Python | Energy starvation through node contesting - deliberately contests energy nodes enemies are approaching (destroying energy) while harvesting uncontested nodes |
| farmer | Go | Energy collection and farming strategy |
| gatherer | Go | Maximizes energy collection while avoiding combat |
| guardian | PHP | Defensive core protection with cautious expansion - maintains perimeter bots within 5 tiles of each owned core |
| hunter | Java | Targets isolated enemies for efficient kills - sends pairs of bots to intercept isolated enemies (≥4 tiles from friendly support), defaults to gathering when no isolated targets |
| kamikaze | JavaScript | Aggressive attacker that finds and attacks nearest enemy |
| leader-targeter | Java | In N>2 games, always directs all units toward current score leader (kingmaker dynamic); in 2-player games, falls back to straight aggressor |
| nomad | Python | Constant relocation archetype - picks target region every ~20 turns, migrates all units toward it, briefly engages on arrival, then picks new region |
| opportunist | Go | Opportunistic strategy taking advantage of tactical opportunities |
| pacifist | JavaScript | Pure evasion, never attacks - moves to maximize distance from nearest enemy, retreats toward own core if cornered |
| phalanx | Rust | Tight formation archetype - all units move as coordinated group, maximizing local firepower at cost of map coverage |
| raider | Java | Hit-and-run harassment - scouts lone enemy bots, attacks from flank for 1-2 turns, then retreats; never attacks groups of ≥3 enemies |
| random | Python | Makes random valid moves - reference implementation demonstrating HTTP protocol |
| rusher | Rust | Rushes enemy cores aggressively using BFS pathfinding, ignoring energy and enemy bots unless they block path |
| scout | Python | Exploration-maximizing - maintains last-seen tick counter per cell, moves toward stalest unobserved cells, multiple bots assigned different map zones |
| siege | Go | Blocks enemy core spawning by surrounding cores |
| swarm | TypeScript | Formation-based combat strategy |
| zone-driver | Rust | Weaponizes the shrinking zone - positions units to block enemy escape routes inward, herds enemies toward zone edge for passive eliminations |
Language Distribution
- Rust: 4 bots (assassin, phalanx, rusher, zone-driver)
- Java: 3 bots (hunter, leader-targeter, raider)
- Python: 4 bots (economist, nomad, random, scout)
- Go: 4 bots (farmer, gatherer, opportunist, siege)
- TypeScript: 2 bots (coordinator, swarm)
- JavaScript: 2 bots (kamikaze, pacifist)
- C#: 1 bot (defender)
- PHP: 1 bot (guardian)
Total: 21 bots