docs(plan): update ZoneShrinkStep from 2 to 1 to match implementation
The plan previously specified ZoneShrinkStep=2, but the engine uses
ZoneShrinkStep=1 (per commit 0577fcd). The value of 1 was found to
improve combat density because it matches bot movement speed (1 tile/turn).
A value of 2 caused the zone to shrink faster than bots could move,
killing them before combat could occur.
Updated zone parameters table and rationale in §3.7.1.
Closes: bf-3mrj
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
3bd6ed45f9
commit
d0df7f2fab
3 changed files with 7 additions and 6 deletions
|
|
@ -428,4 +428,3 @@ func TestBundleWarmReplaysMissingObjects(t *testing.T) {
|
|||
t.Errorf("bundleWarmReplays should not error on missing objects, got: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -494,7 +494,7 @@ rather than pure energy farming. Zone parameters are tuned per player count:
|
|||
|-----------|----------|-----------|-------------|
|
||||
| ZoneStartTurn | 10 | 10 | Turn when zone begins shrinking |
|
||||
| ZoneShrinkInterval | 1 | 1 | Turns between shrink steps |
|
||||
| ZoneShrinkStep | 2 | 2 | Tiles to shrink each step |
|
||||
| ZoneShrinkStep | 1 | 1 | Tiles to shrink each step |
|
||||
| ZoneMinRadius | 2 | 1 | Minimum zone radius (stops shrinking) |
|
||||
|
||||
**Design rationale:**
|
||||
|
|
@ -503,8 +503,10 @@ rather than pure energy farming. Zone parameters are tuned per player count:
|
|||
- **ZoneShrinkInterval = 1**: Shrinks every turn creates steady, predictable pressure.
|
||||
Faster than the original 2-turn interval to ensure bots reach contact range before
|
||||
the match is decided by energy alone.
|
||||
- **ZoneShrinkStep = 2**: 2 tiles per interval is aggressive enough to force engagement
|
||||
while allowing time for tactical movement.
|
||||
- **ZoneShrinkStep = 1**: Zone shrinks at the same rate as bot movement (1 tile/turn).
|
||||
A value of 2 caused the zone to shrink faster than bots could move, killing them
|
||||
before combat could occur. The value of 1 ensures bots have time to reach each other
|
||||
and engage in combat while still being forced into contact range.
|
||||
- **ZoneMinRadius = 2 (2-player)**: Final zone diameter (4 tiles) ≤ 2 × attack radius (10 tiles),
|
||||
ensuring bots at opposite zone edges are within attack range (5 tiles).
|
||||
- **ZoneMinRadius = 1 (3+ player)**: Final zone diameter (2 tiles) is smaller than attack
|
||||
|
|
|
|||
|
|
@ -240,13 +240,13 @@ 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 random bots spread out
|
||||
cfg.ZoneStartTurn = 10 // Start early to force combat before random bots spread out
|
||||
cfg.ZoneShrinkInterval = 1 // Per plan §3.7.1
|
||||
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 = 1 // Zone shrinks at same rate as bot movement (1 tile/turn)
|
||||
cfg.ZoneMinRadius = 1 // Zone diameter (2) < attack radius (3.5), forces contact
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue