docs(m011): record MVP balance and acceptance evidence
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
# MVP gameplay balance
|
||||
|
||||
This document locks the gameplay configuration evaluated for Milestone 011.
|
||||
It is not a claim that the required human playtests have completed; their
|
||||
results belong in `docs/PLAYTEST_REPORT.md`.
|
||||
|
||||
## Locked configuration
|
||||
|
||||
| Parameter | Locked value | Purpose |
|
||||
| --- | ---: | --- |
|
||||
| Maze dimensions | 128 x 64 cells | MVP map size |
|
||||
| Initial vision radius | 3 cells | Current-view-only exploration |
|
||||
| Cross-half connection pairs | 3 | Multiple routes between conceptual halves |
|
||||
| Extra cycle pairs | 64 | Alternative routes without removing dead ends |
|
||||
| Minimum start-to-exit separation | 64 cells | Keeps exits distant from starts |
|
||||
| Landmark pairs | 8 | Spatial-memory cues in symmetric positions |
|
||||
| Vision-artifact pairs | 4 | Eight one-use artifacts; exceeds the MVP minimum of two |
|
||||
| Compass pairs | 1 | One compass for each player's own exit |
|
||||
| Movement cooldown | 150 ms | Server-enforced minimum accepted-move interval |
|
||||
| Enhanced-vision duration | 10 successful moves | MVP artifact duration |
|
||||
| Draw window | 200 ms | Authoritative simultaneous-exit boundary |
|
||||
| Match timer | None | Matches end only by defined result conditions |
|
||||
|
||||
The values come from `maze32_maze_default_config()` and
|
||||
`maze32_game_default_config()`. They are server-owned defaults; browser
|
||||
clients cannot alter them.
|
||||
|
||||
## Deterministic generation evidence
|
||||
|
||||
`test/host/test_maze_generation.c` generates and validates seeds 0 through
|
||||
1,023 with this configuration. For every generated map it proves reachability,
|
||||
central symmetry, positive cycles and dead ends, at least four cross-half
|
||||
connections, paired player-relative route distances, and this balance
|
||||
invariant:
|
||||
|
||||
```
|
||||
start_to_key_distance >= key_to_exit_distance
|
||||
```
|
||||
|
||||
The test measures shortest traversable routes, not straight-line distance. It
|
||||
therefore establishes that finding a key is never made easier by a shorter
|
||||
required route than the later exit search. It does not substitute for human
|
||||
search behaviour in a maze with fog of war, landmarks, compasses, and
|
||||
artifacts.
|
||||
|
||||
The most recent recorded sweep (2026-09-08) reported:
|
||||
|
||||
| Metric | Observed range across 1,024 seeds |
|
||||
| --- | ---: |
|
||||
| Cycles | 133..133 |
|
||||
| Dead ends | 704..854 |
|
||||
| Start to key | 416..1,442 cells |
|
||||
| Key to exit | 346..1,244 cells |
|
||||
| Start to exit | 102..992 cells |
|
||||
| Generation attempts | 1 |
|
||||
|
||||
At the 150 ms cooldown, an uninterrupted shortest 416-cell key route takes at
|
||||
least 62.4 seconds of accepted-move time. Actual match duration also includes
|
||||
route discovery, current-view-only navigation, the exit search, detours,
|
||||
interactions, and player decisions. The approximately five-minute target must
|
||||
be confirmed by the representative human-playtest procedure; no hard timer is
|
||||
introduced to force that outcome.
|
||||
|
||||
## Tuning decision
|
||||
|
||||
No parameter change is justified before representative timing evidence exists.
|
||||
Changing maze density or cooldown solely from shortest-path metrics would risk
|
||||
making the target duration less representative of real fog-of-war play. If the
|
||||
playtest median materially misses the five-minute target, change only the
|
||||
smallest relevant locked value, rerun the 1,024-seed suite, record the new
|
||||
range here, and repeat the affected playtests.
|
||||
Reference in New Issue
Block a user