Skip to content

Platformer showcase polish: longer levels, JOINT mechanics, crusher alleys#40

Merged
SethMorrowSoftware merged 6 commits into
mainfrom
claude/nice-feynman-tg0ocy
Jun 13, 2026
Merged

Platformer showcase polish: longer levels, JOINT mechanics, crusher alleys#40
SethMorrowSoftware merged 6 commits into
mainfrom
claude/nice-feynman-tg0ocy

Conversation

@SethMorrowSoftware

@SethMorrowSoftware SethMorrowSoftware commented Jun 13, 2026

Copy link
Copy Markdown
Owner

Pre-Wave-4 polish of the flagship platformer into a professional demo of the kit as it stands today. All example-side: zero Kit changes, harness v10 holds. Static checker clean (smart quotes, handler/block balance, embedded-Kit sync); awaiting the OXT runtime pass for feel/art facing (statically unverifiable).

What's in this branch

  • The kit's first JOINT mechanics (its biggest dark subsystem): a sagging rope bridge (L1, hinged planks pinned to the world both ends), a rolling boulder (L3, slides the ice head-on, recycled off-screen so it never resets in place), an explosive barrel (L4, fuse → b2kExplode scatters a crate woodpile). A prototyped wrecking ball was cut — a rotating arm can't be sprite art (gotcha 23), and the kit is sprite-only for game visuals.
  • Four new enemy species on the slime family via a new pfMakeCritter: mouse, worm, ladybug, and a fire slime by the L4 lava. L4's piranha row doubled to four burrows.
  • A marquee CRUSHER ALLEY + two-cloud hop closes every level (this round): a row of four tile-block thwomps the hero times a dash beneath, biome-matched — green (L1/L2 grass), blue (L3 ice), red (L4 haunted) — then a cloud hop to the flag with coins up top. Powered by a new pTileFace param on pfMakeThwomp (plain tile sprite, no mood-face swaps; same drop/rest/rise/re-arm cycle, so the alley never blocks for good).
  • Longer, re-spaced levels (layout law: widen before squeezing a beat in): L1 7552 · L2 5952 · L3 6592 · L4 6656. Each walled-door/steps finale shifts as a whole unit; existing verified beats preserved in place. Snails used liberally; the classic chained-weight thwomps return in every level. Cloud chains ghost-padded a tile past the art each side (solid span == art span); door-gated coins reachable (keys are early on the main path); coins/totals self-count as the level builds.
  • User-review fixes folded in: the L3 ice boulder now slides all the way (no teleport-reset); the snail's facing polarity fixed; the barrel's woodpile is real crate sprites; the thwomp reward coins moved onto the critical path under each crusher (they were a gate-locking trap above/inside the block).

Verification

An Opus correctness/completability review of the latest round found no blockers across index uniqueness, coin reachability, cloud ghost-padding, beat spacing, finale consistency, patrol safety, and compile. Decision log: plan.md (rows through "Showcase round 4").

https://claude.ai/code/session_012A6Dqdr3DPCeC3oWZohjHi

…s; boulder slides all the way

User: longer classic levels with more clouds/coins/enemies/switches; snails
used liberally; bring the old chained-weight thwomps back; and the L3 ice
boulder should SLIDE ALL THE WAY in its direction (no teleport-reset).

- BOULDER: lowered friction (coasts far) and moved its reset line
  off-screen-left (3050 -> 2300, past the run and below the camera edge
  while the hero is in it), so a fresh boulder arrives from the source
  instead of one teleporting back in place. The slide path is clear (the
  snow cloud is a one-way chain above; the saw is bodiless; the patrol
  slime sits left of 2300 so the re-park beats it there).
- A fourth act on every level, finales shifted whole again (L1 +768 tail,
  L2 +640, L3 +512, L4 +512): the classic chained-weight THWOMPS return in
  all four levels (with ride-the-head coins), SNAILS go liberal (L4 now has
  four), plus more one-way clouds, coins, and decor.
- New widths L1 6336 / L2 4672 / L3 5312 / L4 5376. Enemy indices unique
  per level; flags within bounds. Docs synced. Still zero Kit changes.

https://claude.ai/code/session_012A6Dqdr3DPCeC3oWZohjHi

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 929d9d92df

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread examples/box2dxt-platformer.livecodescript Outdated
claude added 4 commits June 13, 2026 13:49
Reported by the user: the four new "ride the thwomp head" coins were placed
at y184, but pfMakeThwomp's body spans y170..230 (centered at 200), so the
coin sat INSIDE the block - below the hero riding on top - hidden and
unreachable, which would prevent the collect-every-coin gate from opening.

Moved all four (L1 5700, L2 3600, L3 4280, L4 4600) to y110: above the
block top (170) so never embedded, and within the hero's body as the
rising head crests, so it is grabbed by the RIDE itself (no precise hop) -
the gate opens reliably. (The original L2 ride coin at y64 is unchanged.)

https://claude.ai/code/session_012A6Dqdr3DPCeC3oWZohjHi
…king fix)

User found an L3 coin they couldn't reach. The new thwomps' reward coins
sat at the crusher's perch height (embedded, then lifted just above it),
reachable only by the obscure "hop onto the resting crusher and ride it up"
beat - which a player avoiding the hazard never finds, so a REQUIRED
collect-every-coin could lock the goal-flag gate.

Fix: all four new thwomp coins (L1 5700, L2 3600, L3 4280, L4 4600) moved to
y500, directly UNDER each crusher on the critical path. The crusher is too
tall to jump over, so the hero must pass beneath it to progress and grabs
the coin by passing (timing the crush) - the gate is guaranteed to open.

A full coin-reachability audit (every coin vs each level's slabs / clouds /
pits / step-plats) confirmed every other coin is reachable via its mechanism
(spring arcs, the rope-bridge deck, jump-over-pit arcs, the mound plateau,
and L2's original verified ride coin at 1840,64). Static checker passes;
zero Kit changes.

https://claude.ai/code/session_012A6Dqdr3DPCeC3oWZohjHi
The final completability review (all four levels confirmed finishable, every
coin reachable, no softlocks) flagged one minor: L4's finale (slime -> snail
-> crusher -> snail) had a ~60px-clear-air pinch, under the ~100px layout
law. Nudged the third snail +40 (4400 -> 4440); every gap in that run is now
>=100px, with no cascade onto the steps/flag. Static checker passes; zero Kit
changes.

https://claude.ai/code/session_012A6Dqdr3DPCeC3oWZohjHi
Mirror L1's GREEN CRUSHER ALLEY across L2/L3/L4: a row of four tile-block
thwomps the hero dashes BENEATH, then a two-cloud hop to the flag.

- New pTileFace param on pfMakeThwomp draws a plain tile-sprite crusher
  (no mood-face swaps; same armed/drop/rest/rise/re-arm cycle), so the
  alley never blocks the path for good. Biome-matched blocks: green
  (L2 grass), blue (L3 ice), red (L4 haunted).
- Finales (walled door + steps + flag + bounds) shifted right as whole
  units by +1280 (tile-aligned): L2 4672->5952, L3 5312->6592,
  L4 5376->6656. Coins at under-crusher midpoints (y500) and atop each
  cloud (y392); a new snail in L2 and L3 (snails liberally).
- Cloud chains ghost-padded a tile past the art each side (solid span ==
  art span); door-gated coins reachable (keys are early on the path);
  enemy indices unique per gBlock/gSlime/gPlant namespace per level.

Opus correctness/completability review found no blockers across index
uniqueness, coin reachability, ghost-padding, spacing, finale
consistency, patrol safety, and compile. Static checker clean; zero Kit
changes (harness v10 holds). Awaiting the OXT pass.

https://claude.ai/code/session_012A6Dqdr3DPCeC3oWZohjHi
@SethMorrowSoftware SethMorrowSoftware changed the title Third expansion: snails liberally, chained thwomps back, longer level… Platformer showcase polish: longer levels, JOINT mechanics, crusher alleys Jun 13, 2026
An Opus audit of on b2kFrame + all pfTick* against the kit's performance
playbook found one regression (introduced by the crusher alleys) and
three free wins, all example-side.

- pfTickThwomps read b2kPosition over the FFI for EVERY block every frame,
  even armed ones (static bodies resting at a fixed perch). With the new
  alleys at ~7-8 blocks/level and only 0-1 ever in motion, that was ~7
  wasted FFI round-trips + string splits per frame. Now each perch x is
  cached (gBlockX) at make/re-arm, the armed->falling trigger uses the
  cached x + the shared hero snapshot (perch y is invariantly 200), and
  b2kPosition is read only for the 0-1 blocks in motion. Identical trigger.
- shellslide tick reads b2kVelocity once (was twice).
- HUD reuses the snapshotted gHeroState and a single camera-scroll read.

Every other per-frame tick was already at the playbook's standard. Gotcha
scan clean. Example-only, no harness bump (v10 holds). Static checker
clean; awaiting the OXT pass.

https://claude.ai/code/session_012A6Dqdr3DPCeC3oWZohjHi
@SethMorrowSoftware SethMorrowSoftware merged commit bab5bf2 into main Jun 13, 2026
7 checks passed
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