feat(maze): shrink map and rebalance compact gameplay
This commit is contained in:
+23
-22
@@ -1,20 +1,20 @@
|
||||
# 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`.
|
||||
This document locks the compact gameplay configuration evaluated for Milestone
|
||||
014. Human confirmation of the revised map belongs in
|
||||
`docs/PLAYTEST_REPORT.md`.
|
||||
|
||||
## Locked configuration
|
||||
|
||||
| Parameter | Locked value | Purpose |
|
||||
| --- | ---: | --- |
|
||||
| Maze dimensions | 128 x 64 cells | MVP map size |
|
||||
| Maze dimensions | 32 x 32 cells | Square map with one eighth of the former area |
|
||||
| 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 |
|
||||
| Cross-half connection pairs | 2 | Four seam crossings between conceptual halves |
|
||||
| Extra cycle pairs | 8 | Proportional route density without removing dead ends |
|
||||
| Minimum start-to-exit separation | 22 cells | Linear scaling by approximately the square root of eight |
|
||||
| Landmark pairs | 2 | Four spatial-memory cues in symmetric positions |
|
||||
| Vision-artifact pairs | 1 | Two one-use artifacts; preserves the MVP minimum |
|
||||
| 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 |
|
||||
@@ -47,15 +47,15 @@ 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 |
|
||||
| Cycles | 19..19 |
|
||||
| Dead ends | 74..128 |
|
||||
| Start to key | 93..422 cells |
|
||||
| Key to exit | 84..352 cells |
|
||||
| Start to exit | 26..242 cells |
|
||||
| Generation attempts | 1..2 |
|
||||
|
||||
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
|
||||
At the 150 ms cooldown, an uninterrupted shortest 93-cell key route takes at
|
||||
least 13.95 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
|
||||
@@ -63,9 +63,10 @@ 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
|
||||
The topology and object counts were reduced with the map area while retaining
|
||||
the three-cell base view, ten-move artifact effect, 150 ms cooldown, and 200 ms
|
||||
draw window. These interaction values remain unchanged until representative
|
||||
playtesting of the compact map supplies evidence for a further adjustment. If
|
||||
playtesting identifies a material duration or navigation problem, change only
|
||||
the smallest relevant locked value, rerun the 1,024-seed suite, record the new
|
||||
range here, and repeat the affected playtests.
|
||||
|
||||
@@ -14,7 +14,7 @@ image. Start from a freshly booted device with no occupied lobby sessions.
|
||||
```
|
||||
|
||||
Monitor the USB serial log at 115200 baud. Confirm application version
|
||||
`0.10.0`, the 4 MB partition table, successful LittleFS mount, station or
|
||||
`0.14.0`, the 4 MB partition table, successful LittleFS mount, station or
|
||||
fallback network startup, registration of all HTTP/WebSocket routes, and
|
||||
health state `serving`.
|
||||
|
||||
@@ -33,7 +33,7 @@ The scenario intentionally takes more than two minutes because both repeated
|
||||
matches use the real 60-second reconnect deadline. It performs these checks:
|
||||
|
||||
1. Connect two players and four observers and assemble all four complete
|
||||
8,192-cell observer projections.
|
||||
1,024-cell observer projections.
|
||||
2. Verify heartbeat round-trip latency for all six sessions.
|
||||
3. Stop consuming one observer stream while Player 1 performs accepted moves;
|
||||
intermediate observer updates may be dropped, but player acknowledgements
|
||||
|
||||
@@ -7,13 +7,13 @@ later milestones.
|
||||
## Representation and limits
|
||||
|
||||
- Dimensions are runtime configuration values. Supported maps are even-width,
|
||||
even-height rectangles from `8 x 8` through `128 x 64` and contain at most
|
||||
8,192 cells.
|
||||
even-height rectangles from `8 x 8` through `32 x 32` and contain at most
|
||||
1,024 cells.
|
||||
- Each cell uses one byte of four-direction passage flags. A fixed bit set,
|
||||
traversal queue, and distance array form the reusable generation workspace.
|
||||
- Starts, keys, boundary exits, compass cells, landmarks, and vision artifacts
|
||||
use bounded fixed arrays. No generation or validation path calls a heap API.
|
||||
- The maze plus workspace budget is 64 KiB. The default `128 x 64`
|
||||
- The maze plus workspace budget is 64 KiB. The default `32 x 32`
|
||||
configuration targets generation within 250 ms on the ESP32-C6.
|
||||
- Candidate regeneration is capped by `maximum_attempts`; failure returns a
|
||||
diagnostic result instead of retrying indefinitely.
|
||||
@@ -35,10 +35,10 @@ topology, placements, metrics, and hash.
|
||||
|
||||
Player 2's start and every required object are the exact rotational counterpart
|
||||
of Player 1's placement. Starts and exits are boundary cells, and the default
|
||||
requires at least 64 cells of Manhattan separation between each start and its
|
||||
requires at least 22 cells of Manhattan separation between each start and its
|
||||
exit. Keys are selected outside the owners' initial Chebyshev-radius-three
|
||||
views. The default places eight landmark pairs and four vision-artifact pairs,
|
||||
with no placement collisions.
|
||||
views. The default places two landmark pairs and one vision-artifact pair, with
|
||||
no placement collisions.
|
||||
|
||||
Validation independently checks reciprocal passages, rotational symmetry,
|
||||
full reachability, edge and cycle counts, dead ends, half crossings, placement
|
||||
|
||||
+17
-2
@@ -10,14 +10,14 @@ unrecorded assumptions.
|
||||
| 2. Persistent station and fallback provisioning | Milestone 010 owner confirmation: persisted station connection and bounded retry; fallback provisioning page worked. | Passing. |
|
||||
| 3. Two-player lobby, countdown, and refresh | Host lobby/protocol and browser tests; Milestone 010 owner confirmation that both player tokens restored their slots. | Passing. |
|
||||
| 4. Four read-only observers | Milestone 010 six-client target run assembled four complete observer maps; Milestone 009 authorization tests. | Passing. |
|
||||
| 5. Fair repeated 128 x 64 maps | 1,024-seed host sweep and maze validation; locked metrics in `docs/BALANCE_REPORT.md`. | Passing. |
|
||||
| 5. Fair repeated 32 x 32 maps | Milestone 014 1,024-seed host sweep and maze validation; locked metrics in `docs/BALANCE_REPORT.md`. | Passing at host level; target playtest pending. |
|
||||
| 6. Projection security | Host game visibility and payload-security tests; player and observer browser-contract tests. | Passing. |
|
||||
| 7. Controls and cooldown | Host game-core and browser keyboard/swipe tests; 150 ms locked cooldown. | Passing. |
|
||||
| 8. Key and inventory mechanics | Host game-mechanics tests covering pickup, drop, sabotage, meeting return, and exits. | Passing. |
|
||||
| 9. Artifact and compass rules | Host game-mechanics tests covering ten successful moves and role-specific compass projections. | Passing. |
|
||||
| 10. Victory and draw window | Host game-mechanics test covering outward exit and 200 ms draw boundary. | Passing. |
|
||||
| 11. Disconnect recovery | Host disconnect-recovery tests and Milestone 009 physical acceptance evidence. | Passing. |
|
||||
| 12. Approximately five-minute normal match | Project-owner-confirmed representative physical playtests; the owner explicitly approved omitting match counts and timing statistics, recorded in `docs/PLAYTEST_REPORT.md`. | Passing by approved deviation. |
|
||||
| 12. Approximately five-minute normal match | The Milestone 011 evidence applies to the superseded `128 x 64` configuration. Repeat representative testing for the compact map or approve a new deviation. | Pending Milestone 014 confirmation. |
|
||||
| 13. Russian offline UI and browser coverage | Milestone 008 owner checks in Chrome 152, Firefox 155, Safari 26.6, and Edge 152.0.4191.53; asset verification enforces the offline and 1.5 MiB budget. | Passing; repeat asset check for release candidate. |
|
||||
|
||||
## Release-candidate record
|
||||
@@ -37,3 +37,18 @@ digest from the final candidate below. This record must match the tested image.
|
||||
|
||||
No pending criterion is treated as passing evidence. The only approved
|
||||
deviation is recorded above.
|
||||
|
||||
## Milestone 014 compact-map candidate
|
||||
|
||||
The following host-verified candidate supersedes the map configuration in the
|
||||
Milestone 011 release record. It is not the final accepted release until the
|
||||
representative compact-map playtest is confirmed.
|
||||
|
||||
| Field | Compact-map candidate value |
|
||||
| --- | --- |
|
||||
| Date | 2026-09-08 |
|
||||
| Application version | 0.14.0 |
|
||||
| Firmware build command and size | `pio run -e esp32-c6-devkitm-1`; 1,027,934 / 2,097,152 application bytes; `firmware.bin` 1,028,560 bytes, SHA-256 `428e7690bed50d30caf61aca174d838f00d7de1a603f14ea669e996e3d167123` |
|
||||
| LittleFS build command and size | `pio run -e esp32-c6-devkitm-1 --target buildfs`; 2,031,616 / 2,031,616 bytes; SHA-256 `467f0a07413c83bff5ea246b5063289eb61f8bf40b95d16d639b3241ceda8a9d` |
|
||||
| Web asset digest and compressed size | `3461d20742e1999c1489465d7f3a68317d56b3acfc5ac5003341e1cf2d478eed`; 20,314 / 1,572,864 bytes |
|
||||
| Pending evidence | Representative two-player confirmation for the `32 x 32` configuration. |
|
||||
|
||||
+2
-2
@@ -14,7 +14,7 @@ simulate movements or infer updates. Each player status also reflects the
|
||||
server-owned WebSocket connection state. A complete projection establishes the
|
||||
server-approved static geometry on join, restoration, and match start.
|
||||
Subsequent bounded projections replace all dynamic player and object state
|
||||
while reusing only that authoritative geometry, avoiding an 8,192-cell
|
||||
while reusing only that authoritative geometry, avoiding a 1,024-cell
|
||||
retransmission after every move.
|
||||
|
||||
The observer screen contains no movement, start, or drop-key control. This is
|
||||
@@ -25,7 +25,7 @@ pauses the game.
|
||||
|
||||
## Viewport and navigation
|
||||
|
||||
At `1024 x 768` CSS pixels and above, the complete `128 x 64` default map is
|
||||
At `1024 x 768` CSS pixels and above, the complete `32 x 32` default map is
|
||||
initially scaled to fit the available stage. The observer can zoom with the
|
||||
labelled buttons or mouse wheel and pan with pointer dragging. Zoom is bounded
|
||||
between 0.25 and 6 times the eight-pixel base cell size; the **Вся карта**
|
||||
|
||||
@@ -36,3 +36,13 @@ representative playtests above and approved the absence of a quantified timing
|
||||
sample. This is an approved evidence deviation, not a claim of statistical
|
||||
measurement. The locked configuration remains unchanged because no issue was
|
||||
reported.
|
||||
|
||||
## Milestone 014 compact-map revalidation
|
||||
|
||||
The earlier results apply to the superseded `128 x 64` configuration. Test the
|
||||
new `32 x 32` configuration with two players after the Milestone 014 firmware
|
||||
and web assets are installed. Confirm that navigation remains understandable,
|
||||
both players consider the symmetric race fair, no gameplay-blocking defect is
|
||||
observed, and the match duration remains acceptable without a hard timer.
|
||||
|
||||
Representative compact-map results have not yet been recorded.
|
||||
|
||||
+1
-1
@@ -120,7 +120,7 @@ are not MVP requirements.
|
||||
pixels. Smaller viewports show a Russian message explaining that a larger
|
||||
screen is required.
|
||||
- Place player and match status blocks above the full maze.
|
||||
- Initially fit the complete `128 x 64` map into the available map area.
|
||||
- Initially fit the complete `32 x 32` map into the available map area.
|
||||
- Provide zoom and pan without granting any gameplay control or changing
|
||||
server authority.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user