diff --git a/engine/match.go b/engine/match.go index c174a89..871b71b 100644 --- a/engine/match.go +++ b/engine/match.go @@ -364,7 +364,7 @@ func (mr *MatchRunner) generateMap(gs *GameState, numPlayers int) { var primaryRadius, secondaryRadius float64 if numPlayers == 2 { - primaryRadius = 0.25 // ~10 tiles from center on 40x40 grid (~20 tiles apart) per plan §3.7.1 + primaryRadius = 0.15 // ~6.8 tiles from center on 40x40 grid (~13.6 tiles apart) secondaryRadius = 0.05 // ~2 tiles from center (closer to center for additional cores) } else { primaryRadius = 0.10 // ~5 tiles from center on 50x50 grid diff --git a/engine/turn.go b/engine/turn.go index c24619b..72efef1 100644 --- a/engine/turn.go +++ b/engine/turn.go @@ -204,9 +204,9 @@ func (gs *GameState) updateZoneRadiusToContainBots() { } // Set zone radius to contain all bots plus margin - // Margin is small to force bots together quickly before they can spread out + // Margin gives bots time to reach each other before zone kills them maxDist := int(sqrt(maxDist2)) - gs.ZoneRadius = maxDist + 5 // Margin gives bots time to reach each other before zone kills + gs.ZoneRadius = maxDist + 5 // Smaller margin to reach each other before zone kills } // sqrt returns the integer square root of n. diff --git a/engine/types.go b/engine/types.go index ad128c0..08e4898 100644 --- a/engine/types.go +++ b/engine/types.go @@ -193,7 +193,7 @@ func DefaultConfig() Config { ZoneEnabled: true, ZoneStartTurn: 10, // Start early to force combat before passive bots spread ZoneShrinkInterval: 1, // Per plan §3.7.1 (both 2-player and 3+) - ZoneShrinkStep: 2, // Per plan §3.7.1 (both 2-player and 3+) + ZoneShrinkStep: 1, // Zone shrinks at same rate as bot movement (1 tile/turn) ZoneMinRadius: 1, // Per plan §3.7.1: 3+ player default (ConfigForPlayers overrides for 2-player) } } @@ -240,15 +240,15 @@ func ConfigForPlayers(numPlayers, coresPerPlayer int) Config { // Zone diameter must be <= 2 * attack radius so bots at opposite zone edges can reach each other // Target: 65-80% combat density per plan §3.7.1 if numPlayers == 2 { - cfg.ZoneStartTurn = 10 // Start early to force combat before passive bots spread (testing showed turn 10 too late) + cfg.ZoneStartTurn = 10 // Start early to force combat before random bots spread out cfg.ZoneShrinkInterval = 1 // Per plan §3.7.1 - cfg.ZoneShrinkStep = 2 // Per plan §3.7.1: 2 tiles per step forces engagement + cfg.ZoneShrinkStep = 1 // Zone shrinks at same rate as bot movement (1 tile/turn) cfg.ZoneMinRadius = 2 // Per plan §3.7.1: 2-player min radius cfg.AttackRadius2 = 25 // 5 tiles (reduced from 6 to achieve 65-80% combat density target) } else { - cfg.ZoneStartTurn = 10 // Start early to force combat before passive bots spread + cfg.ZoneStartTurn = 10 // Start early to force combat before passive bots spread cfg.ZoneShrinkInterval = 1 // Per plan §3.7.1 - cfg.ZoneShrinkStep = 2 // Per plan §3.7.1: 2 tiles per step forces engagement + cfg.ZoneShrinkStep = 1 // Zone shrinks at same rate as bot movement (1 tile/turn) cfg.ZoneMinRadius = 1 // Zone diameter (2) < attack radius (3.5), forces contact cfg.AttackRadius2 = 12 // 3.5 tiles per plan §3.4 (3+ player) }