feat(maze): shrink map and rebalance compact gameplay

This commit is contained in:
2026-09-08 22:14:13 +03:00
parent 5346f9296f
commit f043b63732
18 changed files with 297 additions and 61 deletions
+6 -6
View File
@@ -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