diff --git a/notes/bf-1pwz.md b/notes/bf-1pwz.md new file mode 100644 index 0000000..10e5eab --- /dev/null +++ b/notes/bf-1pwz.md @@ -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**