diff --git a/engine/match.go b/engine/match.go index ae0e3a3..0481992 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, outside 5-tile attack radius) + primaryRadius = 0.125 // ~5 tiles from center on 40x40 grid (~10 tiles apart, within 5-tile attack radius) 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 ccc50fc..43fcc17 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 - // Start with a larger margin to give bots time to move toward each other + // Margin is small to force bots together quickly before they can spread out maxDist := int(sqrt(maxDist2)) - gs.ZoneRadius = maxDist + 10 // Larger margin to give bots time to react + gs.ZoneRadius = maxDist + 5 // Smaller margin forces faster engagement } // sqrt returns the integer square root of n. diff --git a/engine/types.go b/engine/types.go index f5e33f6..1b6fb07 100644 --- a/engine/types.go +++ b/engine/types.go @@ -242,13 +242,13 @@ func ConfigForPlayers(numPlayers, coresPerPlayer int) Config { if numPlayers == 2 { cfg.ZoneStartTurn = 10 // Per plan §3.7.1 to force combat before bots can 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 = 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 // Per plan §3.7.1 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) }