Skip to content

Platformer improvement pass: L7 undercroft puzzle, second checkpoints, scene density, coin tiers, audio + win polish - #78

Draft
SethMorrowSoftware wants to merge 2 commits into
mainfrom
claude/platformer-demo-improvements-vgg7hf
Draft

Platformer improvement pass: L7 undercroft puzzle, second checkpoints, scene density, coin tiers, audio + win polish#78
SethMorrowSoftware wants to merge 2 commits into
mainfrom
claude/platformer-demo-improvements-vgg7hf

Conversation

@SethMorrowSoftware

Copy link
Copy Markdown
Owner

What this is

A deep review of the platformer demo (seven parallel readers mapped every level, maker, tick and event path against CLAUDE.md's laws and the polish plan), followed by an improvement pass built with the proven methods: append-only growth, existing makers only, every placement checked against the ~100px beat-air law, all example-side (no Kit change, no harness bump, kPfUIVersion untouched).

The headline: the L7 UNDERCROFT (length + the missing puzzle)

The Stone Keep grows down 512px (pfBoundsV bottom 2304 → 2816) into a torchlit vaulted undercroft — Phase C slice 3's multi-key/switch puzzle finally lands in the keep, where the file header always said it belonged:

  • You spawn in the vault. The old ground line became the keep floor with a 128px trapdoor doorway (the only way up — the gate is structural, wall to wall).
  • A blue switch in the far-right corner (past a warden slime, lit by a wall torch) slides the blue lid aside above you; three vaulted one-way ledges climb to the doorway; a checkpoint on the keep floor holds progress.
  • To make it possible, pfMakeSwitchGate/pfTickSwitchGates were generalized vertically aware — per-instance pad band (the old tick hardcoded the 448-cloud band and silently ignored pSwitchY, a latent bug), per-instance gate rect, slide axis, open-shift. L2's green-gate call is byte-identical (walked through with its exact arguments). pfMakeCheckpoint now banks a per-flag respawn height (uPfCheckY; the touch handler hardcoded 470 — mid-air on a tall world).
  • The lid slides right deliberately: parking left would sit it 64px under tower ledge 1, the gotcha-20 one-way straddle trap. The ledge/blade/warden geometry above the keep floor is untouched.
  • No tiles art (gToysOK false) = no lid: the doorway stays open and the climb completes (law 25).

Since tools/audit-platformer.py skips vertical levels, the undercroft geometry was hand-verified by a 32-check script (squeeze clearances, jump rises, gotcha-20 for both lid park positions, pad-vs-patrol bands, structural-gate coverage, camera clamps).

The rest of the pass

  • Second checkpoints on the long single-checkpoint levels — the review found the difficulty ramp inverted by punishment (L1–L4 ran 3,400–4,700px past their lone flag): L1 5500, L2 5230, L3 5180, L4 4860 (paired with the way-marker sign).
  • Scene density, by eye (polish plan §3, the Clocktown lesson): a few strong reads per level from already-loaded frames — L1 pool-finale dressing, L2 spawn/works/vault (torch + windows), L3 (the barest level) citadel finale, L4 hanging chains + cave torches, L5 dune cacti, L6's torch dark-zones lit. Three live placement conflicts fixed (L2 alley sign stood inside the slice-3 gate wall — retired, no legal pocket exists; L2 bush off the barnacle's snap zone; L3 sign off the snail's patrol).
  • L6's orphaned second bat roost gets its bat — with its band deliberately ending short of the G4 cloud's chain (bats swoop to y~450; the chain sits at 448 — a band over the cloud would grind the velocity assert against the chain, gotchas 17/18).
  • Deliberate coin tiers: L7 explicit everywhere (the auto height rule paid bronze for the hardest mid-shaft gap grabs on a vertical world); marquee grabs go gold on L4 (serpent stone), L5 (dune crest), L6 (star cloud).
  • Audio (§5): a distinct star fanfare (was sharing the gem chime — an admitted "for now"), a five-note final-win fanfare, and the orphaned creak tone finally wired to rope-bridge landings. Newest-cue guard re-keyed to fanfare.
  • Win payoff (§6): hits banked across the run (gOuchesBank), an UNTOUCHABLE callout tier above flawless, a hidden-star replay tease.
  • Fixes: the L7 build-frame 64px camera snap (narrow worlds now frame their centre, matching the per-frame clamp); the stationary half-blade's per-frame same-loc b2kSpriteMoveTo skipped (write-on-change); L3's stale lever-saw binding removed; b2kSensorEnter's hazard branch gains its missing exit (verified behavior-neutral — no sensor carries both flags); stale comment sweep.

Verification

  • python3 tools/check-livecodescript.py — all pass.
  • python3 tools/audit-platformer.py0 findings across 7 levels (it caught one of my own placements mid-pass — an L2 sign overlapping a coin — which is why that sign is retired).
  • Undercroft geometry script — 32/32 checks pass.
  • Verified statically; needs an OXT pass. The in-file header's item 21(i) lists the exact OXT verify items for the undercroft (bonk-not-squeeze at the closed lid, the latch + slide, the checkpoint respawn height, the fallback open-run, tier reads).

🤖 Generated with Claude Code

https://claude.ai/code/session_01B6aG88HWGdnCw7qhEUuZkj


Generated by Claude Code

claude added 2 commits July 19, 2026 01:52
…points, density, tiers, audio + win polish

The headline: the Stone Keep grows DOWN 512px into the UNDERCROFT - the
Phase C slice-3 multi-key/switch puzzle finally lands IN the keep. The
hero spawns in a torchlit vault under the tower; a blue corner switch
(past a warden slime) slides the keep-floor trapdoor open; three vaulted
one-way ledges climb to the doorway and a keep-floor checkpoint. To make
it possible, pfMakeSwitchGate/pfTickSwitchGates are generalized
vertically aware (per-instance pad band - the old tick hardcoded the
448-cloud band and silently ignored pSwitchY - plus per-instance gate
rect, slide axis and open-shift; L2's green-gate call is byte-identical)
and pfMakeCheckpoint banks a per-flag respawn height (uPfCheckY; the
touch handler hardcoded 470, mid-air on a tall world).

Also in the pass:
- SECOND CHECKPOINTS on the long single-checkpoint levels (L1 5500,
  L2 5230, L3 5180, L4 4860) - the difficulty ramp was inverted by
  punishment, with 3,400-4,700px late-death replays.
- A SCENE-DENSITY pass by eye (polish-plan par. 3): a few strong reads
  per level from already-loaded frames, three placement conflicts fixed
  (L2 alley sign retired - no legal pocket; L2 bush off the barnacle;
  L3 sign off the snail's patrol), and L6's orphaned second bat roost
  finally gets its bat (band kept short of the G4 cloud's chain - bats
  swoop to y~450 and the chain sits at 448).
- Deliberate COIN TIERS: L7 explicit everywhere (the auto height rule
  inverted risk/reward on a vertical world); marquee grabs go gold on
  L4/L5/L6.
- AUDIO: a star fanfare (was sharing the gem chime), a final-win
  fanfare, and the orphaned bridge "creak" tone finally wired; the
  newest-cue guard re-keys to "fanfare".
- WIN payoff: hits banked across the run, an UNTOUCHABLE callout tier,
  and a hidden-star replay tease.
- Fixes: the L7 build-frame 64px camera snap (narrow worlds now frame
  their centre), the stationary half-blade's per-frame same-loc MoveTo,
  L3's stale lever-saw binding, the sensor hazard branch's missing
  exit, and a sweep of stale comments.

Statically verified (check-livecodescript + audit-platformer clean, 0
findings; undercroft geometry hand-verified by script - the audit skips
vertical levels); needs an OXT pass. Example-side only: no Kit change,
no harness bump, kPfUIVersion untouched (buildPfUI unchanged).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01B6aG88HWGdnCw7qhEUuZkj
…t pass

Five parallel reviewers (syntax/compat/geometry/perf/completeness lenses)
swept the pass; the fixes, ranked:

- MAJOR: the new keep-floor slabs pf_keepL/pf_keepR joined pfShowSlabs's
  name list - in placeholder-art mode the keep floor was an INVISIBLE
  solid (collision fine, unreadable; every neighbouring piece already
  self-handled the fallback).
- The bridge creak now plays INSTEAD of the land thud (the engine plays
  one clip at a time - the old back-to-back calls just cut the thud and
  the comment claimed a layering the audio cannot do).
- The trapdoor lid snaps flush to its exact open target as gSwDone
  latches (the +-6 stop tolerance parked its edge a few px over the
  doorway lip; one write on the transition).
- The undercroft climbs on the tower's own 128px storey rhythm: U3
  raised 2352 -> 2368 (every vault rise now exactly 128; closed-lid
  headroom GROWS to 52px; the doorway rise matches the standard storey).
- The switch-corner coin moved out from under the switch art's 64px
  frame (800,2688), and the vault floor coins sit 64 above their floor
  (the L7 convention); the U3 coin follows its ledge.
- L4's hanging chains got their own representative-frame gate (a sheet
  with chain but no grass_purple must still hang them - L6's convention).
- L3's step-face windows grid-aligned (6112 / 6176).
- Comment honesty: pfTickSwitchGates' header no longer claims the fixed
  y342 rise; the two tightest checkpoint pockets (L1 5500, L3 5180) now
  document FRAME-EDGE margins with their OXT fallback positions; the
  hatch coin's silver tier is explained.

Confirmed-safe by the same review (no change needed): the amp-0 mover
skip (Kit camera-group mechanics), the L2 switch-gate call
(byte-identical), gOuchesBank lifecycle, the L3 gSawMov removal, the
hazard-branch exit (no dual-flag sensors), bat #10's band vs the G4
chain. Gates: check-livecodescript all-pass, audit 0 findings, the
undercroft geometry script 32/32.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01B6aG88HWGdnCw7qhEUuZkj
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants