feat(game): add persistent bush-wall breakthroughs

This commit is contained in:
2026-09-10 23:12:42 +03:00
parent bb5bd73ebd
commit e10ad3acb8
12 changed files with 354 additions and 39 deletions
+147 -1
View File
@@ -2271,7 +2271,7 @@ The following planning-time observation motivated the milestone:
## Milestone 022 — Persistent bush-wall breakthrough
**Status:** `NOT_STARTED`
**Status:** `COMPLETE`
### Objective
@@ -2426,3 +2426,149 @@ The following planning-time decisions define this milestone:
always available to both players.
- Implementation, automated verification, physical-device checks, and owner
acceptance are deferred until all preceding milestones are `COMPLETE`.
- 2026-09-10 implementation evidence: `bash scripts/run_host_tests.sh` passed,
including `game persistent bush-wall breakthrough: PASS (five impacts, shared
passage)`. `node --test test/web/test_player_app.js` passed all 23 browser
tests and confirmed the bounded impact and trampled-passage presentation.
## Milestone 023 — Top-down living hedge SVG sample library
**Status:** `NOT_STARTED`
### Objective
Design and obtain project-owner approval for a lightweight SVG sample library
that makes maze walls read as varied living hedges viewed from above, with
recognizable leaves, twigs, depth, and matching damaged and permanently
breached variants for perseverance mode, without integrating the artwork into
the running game in this milestone.
### Scope
- Do not start this milestone until every preceding milestone is `COMPLETE`.
- Treat this as a visual exploration and asset-approval milestone only. Do not
replace the current maze renderer, change gameplay, modify the protocol, or
ship the samples in browser or firmware assets during this milestone.
- Before drawing, add a concise hedge-art contract to `docs/UI_STYLE.md` that
defines top-down perspective, scale, palette, outline weight, contrast,
organic variation, tiling rules, and the relationship between intact,
impacted, and permanently breached bushes.
- Create editable, hand-reviewable SVG source artwork with semantic groups and
stable symbol identifiers. Do not embed raster images, external fonts,
remote resources, scripts, generated metadata, or tool-specific binary data.
- Explore at least six visibly different intact straight-hedge samples. Vary
leaf clusters, branch paths, gaps, highlights, and silhouette rhythm while
keeping every sample unmistakably part of one visual family.
- Include representative joins and boundary situations needed by a cell-based
maze: continuous straight runs, perpendicular corners, crossings of adjacent
wall segments, exposed ends, and shared edges. Samples must rotate or mirror
cleanly for all four cardinal directions without directional lighting errors.
- Make individual leaves and small branch forks distinguishable at the actual
supported maze scales of 34, 40, and 46 CSS pixels per cell. Avoid both flat
green bars and noisy texture that turns into visual static on a phone.
- Use at least three vegetation tones plus restrained branch and shadow tones
to create depth. Maintain an identifiable hedge silhouette without relying
on green hue alone and keep players, keys, doors, passages, and interactive
feedback visually dominant.
- Draw a coherent perseverance sequence for the same representative wall:
intact, four increasing impact stages, the moment of breakthrough, and the
final permanent trampled opening. Branch bending, displaced leaves, broken
twigs, compressed foliage, and the cleared center must evolve consistently
rather than appearing as unrelated pictures.
- Provide at least three final breached-hedge samples with different organic
edge shapes. Each must clearly show a traversable gap from a top-down view,
retain torn or flattened bushes on both sides, and remain recognizable when
rotated or mirrored.
- Keep openings visually aligned to the authoritative cell passage and wide
enough for the player icon without implying a larger traversable area. The
samples must not encode coordinates, hidden passages, objects, ownership, or
other game state.
- Present all concepts together on one neutral comparison sheet and also as
isolated SVG symbols on representative dark maze cells. Include previews at
1x and high-density mobile rendering scales, with no smoothing assumptions
that are unavailable in ordinary browsers.
- Record approximate raw and compressed byte costs for each candidate family
so later integration can select variety without threatening the 1.5 MiB web
asset budget or LittleFS partition. Prefer reusable leaf, twig, shadow, and
damage components over repeated paths where that improves size and clarity.
- Check color-vision robustness, grayscale silhouette, normal contrast, and
reduced-motion suitability. This milestone defines static frames only;
animation timing and runtime particle behavior remain governed by Milestone
022 and are outside this milestone's implementation scope.
- End with an explicit project-owner selection of the preferred intact hedge
family, damage progression, breached variants, density, and palette. Runtime
integration requires a separately planned later milestone after approval.
### Deliverables
- Updated hedge-art and sample-review contract in `docs/UI_STYLE.md`.
- Editable SVG symbol sheet containing intact straight segments, joins, ends,
four impact stages, breakthrough frame, and permanent breached variants.
- Neutral comparison sheet plus representative dark-cell previews at 34, 40,
and 46 CSS pixel cell sizes and normal and high-density mobile scales.
- Brief asset manifest describing symbol identifiers, reuse rules, rotation and
mirroring constraints, accessibility checks, and raw and compressed sizes.
- Recorded project-owner selection and any requested revisions; no browser or
firmware integration changes.
### Acceptance criteria
1. The sample library contains at least six intact straight-hedge variants,
representative continuous runs, corners, shared-edge joins, and exposed
ends, all drawn as editable vector artwork with stable semantic identifiers.
2. Every intact sample resembles a living hedge viewed directly from above and
contains clearly distinguishable leaf clusters and branching structure. No
candidate is merely a solid, gradient, or textured green bar.
3. The candidates form one coherent visual family while showing enough
silhouette, foliage, branch, highlight, and gap variation to prevent obvious
repetition across a representative maze preview.
4. Leaves and primary branch forks remain recognizable at 34, 40, and 46 CSS
pixel cell sizes at 1x rendering. At high density they gain clarity without
changing geometry, producing seams, or becoming disproportionately detailed.
5. Straight segments, corners, joins, and ends connect without visible gaps,
doubled borders, accidental knots, or discontinuous lighting when rotated or
mirrored into every cardinal orientation.
6. At least three vegetation tones plus restrained branch and shadow tones
provide top-down depth. Grayscale and representative color-vision checks
preserve the hedge silhouette and do not reduce the legibility of players,
keys, doors, passages, or feedback.
7. One representative wall has a visually continuous set of intact, impact
stages one through four, breakthrough, and permanent-open frames. Each stage
shows plausible cumulative bending or damage and is distinguishable from
adjacent stages without explanatory text.
8. At least three permanent breached variants show an unambiguous traversable
center with torn, bent, or flattened vegetation on both sides. They remain
understandable from either side after rotation or mirroring and do not look
like an intact or merely shadowed wall.
9. Every breached opening aligns to one authoritative wall passage, is visually
wide enough for the existing player icon, and does not suggest access to an
adjacent closed cell or reveal any hidden maze state.
10. SVG files contain no raster payloads, external dependencies, scripts,
unnecessary editor metadata, or unbounded duplication. The manifest records
raw and compressed size for each candidate family and identifies reusable
components.
11. The comparison sheet shows all candidates on a neutral background and the
preferred candidates on representative dark maze cells at all target sizes.
Review does not require running or modifying the game.
12. No runtime HTML, CSS, JavaScript, firmware, protocol, generated web bundle,
or LittleFS image changes are part of this milestone. Automated checks
confirm SVG validity, local-only dependencies, stable identifiers, and
deterministic optimization output.
13. The project owner selects or explicitly rejects the intact hedge family,
impact sequence, breached variants, density, and palette after reviewing the
sample sheet at representative mobile scale. Any requested revisions are
recorded before the milestone can become `COMPLETE`.
### Evidence
The following planning-time request defines this milestone:
- On 2026-09-10, the project owner requested a future sample-drawing milestone
because maze walls should look like varied living hedges from above rather
than simple green sticks. The owner specifically required visible leaves and
branches plus matching broken-bush samples for permanent breakthroughs in
perseverance mode, and requested planning only with no immediate artwork or
runtime implementation.
- Artwork creation, review previews, validation, owner approval, and any later
runtime integration are deferred. Milestone 022 remains the sole active
milestone at planning time.