Platformer Level 6 "Cavern Depths" — the dirt biome (asset expansion Phase B, slice 1)#58
Merged
Merged
Conversation
… B, slice 1) A sixth level on the previously-unused terrain_dirt_* tile set and the background_solid_dirt backdrop, completing start-to-finish: - dirt block tops + block_center mass under the mound, carved block_top_left/right cliff corners on the goal steps, ramp_long_a/b dirt ramps, and a one-way cloud_left/middle/right dirt platform - a wall-jump shaft of floating dirt columns (slot coin; the L3 ice-shaft recipe in dirt), a spike gap to leap, a dirt-ramp mound, a high one-way-cloud bonus route, two slimes + a snail, a bonus gem - win moves to gLevel >= 6 (L5's flag now advances); pfBuildBackdrop gains the dirt case; both pfStartGame switches wire case 6; help/splash/win strings + header walkthrough updated to six levels Example-side only - no Kit change, no harness bump. check-livecodescript passes; audit-platformer auto-discovers and clears L6 (9 coins, 3 walkers, 0 findings). Every referenced frame verified against the atlas. Statically verified; needs an OXT pass (header verify item 20). Block slime + conveyor follow in slices 2-3. Also fixes two asset-expansion-plan inaccuracies found during review: the tiles hud_* strip is 30 frames (not 33), and the conveyor tile is a single frame (not an animated 2-frame pair). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X92APxUJUMue3bAzXiX9V2
…erywhere Addresses the OXT pass on Level 6 (no background, lackluster, misaligned spikes): - BACKGROUND: Kenney's flat "background_solid_dirt" frame read as blank. L6 now builds a dark cave backdrop (pfBuildCaveBackdrop - two card graphics: deep earth + a warmer play band), guaranteed visible. No parallax drift (the depth comes from the scrolling cave structure). - ATMOSPHERE (was "lackluster"): flickering wall TORCHES (torch_on_a/b, new pfMakeTorch + a "torch" anim def), hanging CHAINS + STALACTITES (terrain_dirt_vertical_bottom), carved dirt CLIFF LIPS on the spike pit (block_top_right/left), and cave DECOR (a rock, cave mushrooms, a bush), all placed clear of every beat. - SPIKES (misaligned): the spike art's pixels are the bottom 34px of the 64px cell, so placing the tile at y576 sank the tips to y606 - 30px below the pit edge, reading as floating/misaligned. pfMakeSpikes now places at y546 so the tips meet y576 (the ground line) and the spikes bristle AT the edge. Affects every spike pit (L1/L3/L5/L6); the hurt sensor and pit geometry are unchanged. Example-side only (no Kit change, no harness bump). check-livecodescript passes; audit-platformer clears all 6 levels (0 findings); new frame names verified against the atlas. Statically verified; needs an OXT re-pass (header item 20). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X92APxUJUMue3bAzXiX9V2
The reported "misaligned spikes" was a horizontal offset, not the vertical seating I changed last round. pfTile treats its (x,y) as the tile TOP-LEFT (it centres at x+32, like all the ground tiling), but pfMakeSpikes tiled the spike row over pL+32 .. pR-32 - shifting every spike 32px RIGHT: a bare 32px gap at the left pit edge and the last spike overhanging onto the ground on the right. The row now tiles pL .. pR-64 (top-lefts), landing flush from pL to pR. Verified flush in all five pits (L1/L3/L5 x2/L6): each tiles to an exact pL..pR span. Sensor + pit geometry unchanged; the y546 vertical seating (tips at the ground line) stays. check-livecodescript passes; audit clears all 6 levels. Needs an OXT re-pass on the spike pits. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X92APxUJUMue3bAzXiX9V2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this is
The first implementation slice of asset-expansion Phase B (
docs/asset-expansion-plan.md) — the dirt biome and a sixth platformer level, CAVERN DEPTHS, built on theterrain_dirt_*tile set and thebackground_solid_dirtbackdrop that the demo loaded but never used.This lands after a full audit of the project (the four layers, the static gates, the optimization playbook, and a frame-by-frame cross-check of the asset plan against the atlases).
Slice 1 — the dirt biome + a Level 6 that completes start-to-finish
block_centermass under the mound, carvedblock_top_left/rightcliff corners on the goal steps,ramp_long_a/bdirt ramps, and a one-waycloud_left/middle/rightdirt platform — over the unusedbackground_solid_dirtparallax backdrop.pfBuildBackdropgains the dirt case; bothpfStartGamedispatch switches wirecase 6; the win gate moves togLevel >= 6(L5's flag now advances); help/splash/win strings and the header walkthrough updated to six levels.Reuses the existing slime/snail cast and proven makers — example-side only, no Kit change, no harness bump. Phase B's headline mechanics (the block slime and the conveyor belt) follow in slices 2–3.
Verification
tools/check-livecodescript.py— PASS (no smart quotes, balanced handlers/control structures, embedded Kit in sync).tools/audit-platformer.py— auto-discovers and clears L6 (bounds 64..3040, 9 coins, 3 walkers, 0 findings across 6 levels). No audit changes were needed because the level reuses the whitelistedpf_ground/pf_platslab names.terrain_dirt_*,background_solid_dirt, plus the reused spikes/flag/coin/gem/slime/snail frames).Statically verified — needs an OXT pass (header verify item 20). Things to confirm in OXT: dirt art reads with no missing-frame fallbacks; the wall-jump slot coin is reachable by wall-jump and a straight double-jump (never trick-only); the bonus gem above the shaft is reachable (lower it if not); the dirt mound walks up/across/down with no fall-through; the cloud drops through on DOWN+JUMP; the win screen says ALL SIX LEVELS CLEAR.
Also in this PR
Two small
asset-expansion-plan.mdaccuracy fixes found during the review: thetileshud_*strip is 30 frames (not 33 — the 33-frame sheet is the separatehud_sheet.xml), and theconveyortile is a single frame (not an animated 2-frame pair) — which matters for the slice-3 conveyor.🤖 Generated with Claude Code
https://claude.ai/code/session_01X92APxUJUMue3bAzXiX9V2
Generated by Claude Code