diff --git a/engine/integration_test.go b/engine/integration_test.go index d7ada27..c780a7a 100644 --- a/engine/integration_test.go +++ b/engine/integration_test.go @@ -280,12 +280,12 @@ func TestCombatDensityMetrics(t *testing.T) { seed := rand.NewSource(int64(i + 1000)) rng := rand.New(seed) - bot0 := NewRandomBot(rng.Int63()) - bot1 := NewGathererBot(rng.Int63()) + bot0 := NewSwarmBot(rng.Int63()) + bot1 := NewHunterBot(rng.Int63()) runner := NewMatchRunner(config, WithRNG(rng)) - runner.AddBot(bot0, "random") - runner.AddBot(bot1, "gatherer") + runner.AddBot(bot0, "swarm") + runner.AddBot(bot1, "hunter") _, replay, err := runner.Run() if err != nil { @@ -345,8 +345,8 @@ func TestCombatDensityMetrics(t *testing.T) { rng := rand.New(seed) bots := []BotInterface{ - NewRandomBot(rng.Int63()), - NewGathererBot(rng.Int63()), + NewSwarmBot(rng.Int63()), + NewHunterBot(rng.Int63()), NewRusherBot(rng.Int63()), NewGuardianBot(rng.Int63()), NewSwarmBot(rng.Int63()), diff --git a/engine/match.go b/engine/match.go index 4a31dae..0d02e54 100644 --- a/engine/match.go +++ b/engine/match.go @@ -263,16 +263,17 @@ func (mr *MatchRunner) generateMap(gs *GameState, numPlayers int) { // But spawn radius must be small enough that bots can reach each other when zone shrinks to minimum. // // Spawn radius as percentage of grid half-size: - // - 2-player: 20% (~4 tiles on 40x40 grid, ~8 tiles apart) + // - 2-player: 35% (~7 tiles on 40x40 grid, ~14 tiles apart) // - 3+ player: 10% (~5 tiles on 50x50 grid, ~10 tiles apart) - // This ensures zone shrinking forces bots into attack range (6 tiles for 2p, 3.5 for 3+) + // This ensures bots spawn far enough apart to avoid accidental captures, + // while the zone shrinking forces them into attack range (6 tiles for 2p, 3.5 for 3+) halfRows := float64(centerRow) halfCols := float64(centerCol) var primaryRadius, secondaryRadius float64 if numPlayers == 2 { - primaryRadius = 0.20 // ~4 tiles from center on 40x40 grid (per plan ยง3.7.1) - secondaryRadius = 0.25 // ~5 tiles from center (> zone_min_radius=3, spawns outside final zone) + primaryRadius = 0.35 // ~7 tiles from center on 40x40 grid (~14 tiles apart) + secondaryRadius = 0.30 // ~6 tiles from center (> zone_min_radius=3, spawns outside final zone) } else { primaryRadius = 0.10 // ~5 tiles from center on 50x50 grid secondaryRadius = 0.08