Skip to content

feat: add Rusty Creek collision with a reach checker - #97

Merged
arudaev merged 4 commits into
mainfrom
chore/55-rusty-creek-collision
Oct 23, 2026
Merged

arudaev merged 4 commits into
mainfrom
chore/55-rusty-creek-collision

Conversation

@arudaev

@arudaev arudaev commented Oct 23, 2026

Copy link
Copy Markdown
Member

What and why

Rusty Creek now has collision for all three chunks in both states, in the docs/13 collision.json schema. Lane B's movement (#34, #27–#30) can run on the real stage instead of a test floor.

  • Clean: the bridge deck (y 132) across the region, water as no-go, the player on the left, and a jenny-ram trigger in the centre for [M4-S1] Jenny rams you on the bridge and the creek turns #54.
  • Anomaly: the maze. The art was drawn for the old 18×32 body, so its gaps under the beams are 50–65 px, less than the 76 px body. The hero walks in front of the girders: every deck is a one-way platform and only the quays are floors. Ladders are climb zones placed on the drawn rungs.
  • Chunk ids are grid positions: rc-0-0, rc-1-0, rc-2-0. chunks.json maps them to the art.

scripts/collision_check.py (new, runs in the art CI) validates the schema and walks the surface graph with the 28×76 body, a held jump of 88 px up and 140 px across, and free drops. It fails when a spawn, pickup or trigger can't be reached, when the right edge can't be reached, or when two neighbouring chunks meet at different ground heights. --overlay draws the review images next to the data.

Issue

Closes #55

Decisions to check

  1. Teaching order. The issue asks for jump → climb → ladders → chair. docs/04 (Region 1 beats) puts the chair on the first deck and the tutorial rover on the low deck before the first ladder. The docs win, so the order is: chair → rover → a ladder up, which is forced by a pillar that reaches the water → jumps on the far quays. Enforcing the issue's order would need the left chunk redrawn.
  2. The low routes in the centre and right chunks walk straight through, as docs/04 wants (two routes that meet again). The high routes hold the rewards: Leberkäse, both notes, the lookout muffin.
  3. route.json was traced for the old body and sits up to 60 px off the drawn ladders. I followed its intent (entry, climbs, three dead ends, reconnection, boss clearing, exit) and checked reachability on the collision itself.

Verification

  • python scripts/collision_check.py --overlay: 6 files, 0 problems.
  • python -m unittest discover -s scripts -p "test_*.py": 24 pass, 8 of them new in test_collision_check.py. They cover schema errors, a deck too high without a ladder, a jumpable deck, a wall that blocks until a ladder leads over it, a gap wider than a running jump, and the committed stage.
  • Mutation check on the gate. Removing every ladder up in the left chunk (tall, entry, spur) makes the right edge, the muffin and note 1 unreachable.
  • python scripts/creek_layers.py and python scripts/check_docs.py pass.
  • On the preview. The hero walking the route needs [1/4] chore(shared): scaffold the phaser game runtime #94 and [M1-S6] Load collision annotation per chunk, with a debug overlay #34 (lane B).

Screenshots

Legend from docs/04: green floor, yellow one-way, blue climb, red solid, black no-go, purple trigger, white spawn. The white box is the 28×76 body.

Anomaly
left
centre
right

Clean
left
centre
right

@github-actions github-actions Bot added area:art Sprite sheets, stage plates, direction pack area:delivery Build, Vercel, CI, workflows, the board area:stage Chunks, layers, collision, clean/anomaly states area:pipeline Rerunnable art and export scripts area:docs Design docs, README, contributor guides labels Oct 23, 2026
@arudaev
arudaev marked this pull request as ready for review October 23, 2026 20:27
@arudaev
arudaev merged commit f0d3e23 into main Oct 23, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:art Sprite sheets, stage plates, direction pack area:delivery Build, Vercel, CI, workflows, the board area:docs Design docs, README, contributor guides area:pipeline Rerunnable art and export scripts area:stage Chunks, layers, collision, clean/anomaly states

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[M1-S7] Annotate Rusty Creek collision: 3 chunks, clean and anomaly

1 participant