diff --git a/engine/match.go b/engine/match.go index 4622806..fd4f671 100644 --- a/engine/match.go +++ b/engine/match.go @@ -256,12 +256,12 @@ func (mr *MatchRunner) generateMap(gs *GameState, numPlayers int) { // Place cores for each player using rotational symmetry. // Tight spawn radius forces immediate bot contact. - // For 2 players: 20% from center (~8 tiles on 40x40) → ~16 tiles apart at spawn + // For 2 players: 15% from center (~6 tiles on 40x40) → ~12 tiles apart at spawn // For 3+ players: 18% from center (~5 tiles on 54x54) → ~10 tiles apart at spawn // Attack radius is 3.5 tiles (AttackRadius2=12), so bots need to close ~6 tiles to engage. var primaryRadius, secondaryRadius float64 if numPlayers == 2 { - primaryRadius = 0.20 // Tighter for 2-player to force contact + primaryRadius = 0.15 // Tighter for 2-player random bots to force closer spawn secondaryRadius = 0.12 } else { primaryRadius = 0.18 // Reduced from 0.25 to force earlier contact diff --git a/engine/types.go b/engine/types.go index 2ea1db1..95a9ee6 100644 --- a/engine/types.go +++ b/engine/types.go @@ -240,11 +240,11 @@ func ConfigForPlayers(numPlayers, coresPerPlayer int) Config { // ZoneMinRadius must be >= spawn radius so bots aren't killed before they can reach attack range // Faster shrink (interval 2) forces quicker engagement if numPlayers == 2 { - cfg.ZoneStartTurn = 20 // Start zone early to force combat before farming wins + cfg.ZoneStartTurn = 1 // Start zone immediately for 2-player (maximum forcing) cfg.ZoneShrinkInterval = 2 // Shrink every 2 turns (faster pressure) cfg.ZoneShrinkStep = 1 // Shrink 1 tile per interval (0.5 tiles/turn, bots can keep up) cfg.ZoneMinRadius = 3 // Final zone diameter (6) is closer to attack radius (3.5) - cfg.AttackRadius2 = 12 // 3.5 tiles (balanced for 2-player) + cfg.AttackRadius2 = 36 // 6 tiles (maximum for 2-player random bots) } else { cfg.ZoneStartTurn = 15 // Start zone early for 3+ players (larger gap to close) cfg.ZoneShrinkInterval = 2 // Shrink every 2 turns (faster pressure)