docs(bf-1pwz): complete bot language and purpose analysis for all 21 bots

- 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>
This commit is contained in:
jedarden 2026-07-02 17:16:43 -04:00
parent dd68792c23
commit 6c803e41d2

40
notes/bf-1pwz.md Normal file
View file

@ -0,0 +1,40 @@
# 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**