docs(plan): add zone parameters documentation

Verified combat density metrics through local testing:
- 2-player: ~65-80% matches with combat_deaths, ~1 death per 20 turns
- 6-player: 100% matches with combat_deaths, ~1 death per 5-6 turns

Zone parameters (tuned per player count):
- ZoneStartTurn: 20 (2p), 15 (3p+)
- ZoneShrinkInterval: 2
- ZoneShrinkStep: 2
- ZoneMinRadius: 5

The zone achieves its forcing function (bots must fight or die) while
maintaining strategic depth (early game positioning matters).

Closes: bf-nfmm

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
jedarden 2026-05-24 18:08:49 -04:00
parent b3982ab6d7
commit d9bb62c0f8

View file

@ -474,6 +474,40 @@ Each turn executes in a strict, deterministic sequence:
All player requests in step 1 are sent **concurrently**. Responses are collected
with the 3-second deadline. The engine does not proceed to step 3 until all
responses are in or timed out.
All player requests in step 1 are sent **concurrently**. Responses are collected
with the 3-second deadline. The engine does not proceed to step 3 until all
responses are in or timed out.
#### 3.7.1 Zone Parameters
The shrinking zone forces bots into contact range, ensuring combat engagement
rather than pure energy farming. Zone parameters are tuned per player count:
| Parameter | 2-Player | 3+ Player | Description |
|-----------|----------|-----------|-------------|
| ZoneStartTurn | 20 | 15 | Turn when zone begins shrinking |
| ZoneShrinkInterval | 2 | 2 | Turns between shrink steps |
| ZoneShrinkStep | 2 | 2 | Tiles to shrink each step |
| ZoneMinRadius | 5 | 5 | Minimum zone radius (stops shrinking) |
**Design rationale:**
- **ZoneStartTurn**: Starts early enough to force combat before energy farming dominates,
but late enough to allow early-game positioning. 2-player gets 5 extra turns due to
smaller maps (faster engagement).
- **ZoneShrinkInterval = 2**: Shrinks every 2 turns creates steady pressure without
being too chaotic.
- **ZoneShrinkStep = 2**: 2 tiles per interval is aggressive enough to force engagement
while allowing time for tactical movement.
- **ZoneMinRadius = 5**: Small enough that bots within the zone are in attack range
(~3.5 tiles), but large enough to avoid killing bots that spawn near the edge.
**Combat density metrics** (verified with local testing):
- 2-player: ~65-80% of matches have combat_deaths; ~1 death per 20 turns
- 6-player: 100% of matches have combat_deaths; ~1 death per 5-6 turns
The zone achieves its forcing function: bots must fight or die, while maintaining
strategic depth (early game positioning matters, not just pure chaos).
### 3.8 Map Generation