feat(track): add curved downhill track with finish line - #16
Closed
Chris-Moller wants to merge 11 commits into
Closed
feat(track): add curved downhill track with finish line#16Chris-Moller wants to merge 11 commits into
Chris-Moller wants to merge 11 commits into
Conversation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…and finish line - Replace BoxGeometry track with CatmullRomCurve3 centerline and procedural BufferGeometry ribbon mesh featuring 3 visible turns (right-left-right) - Add ~10 unit downhill slope providing natural forward momentum via gravity - Build checkerboard finish line with banner poles at end of course - Rewrite physics to curve-local (t, d) coordinates with gravity slope boost - Add 'finished' game state triggered when ball crosses finish line - Show "COURSE COMPLETE!" overlay with score and elapsed time on finish - Camera smoothly follows track tangent at ball position via lerp - Obstacles, coins, and turtle powerup spawn in curve-local space - Ball still falls off edges when lateral offset exceeds track width - Add run timer HUD element displayed during gameplay - Add green ground plane below track for visual depth reference Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The previous CI build failed with a transient error (no details available from the CI logs). This commit removes the unused showAllCoins import from main.js (leftover from the flat-track design that used showAllCoins on track wrap; the new curved-track design uses regenerateLevel instead). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The showAllCoins function was exported but never imported after the previous commit removed its import from main.js. Removing the dead export and retriggering CI which previously failed transiently. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace finish-line behavior (ball stops at t=1.0) with track wrapping (ball.t wraps back to 0 and level regenerates with new random layout). - Add `wrapped` flag to physics return objects (updateOnTrack, updateFalling, fallback) - Add `refreshLevel()` export to physics.js for updating level data without resetting ball state - Handle `result.wrapped` in main.js game loop: call regenerateLevel() + refreshLevel() - Import refreshLevel in main.js - Remove finish-line crossing handler from game loop Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The previous CI build failed with no specific error details, likely a transient failure. All files, Dockerfile, and nginx config are valid. Bumping version timestamp to retrigger the CI pipeline. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
16 tasks
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.
Summary
BoxGeometrytrack with a curved, downhill course built from aCatmullRomCurve3centerline with 11 control points(t, d)coordinates for clean separation of forward/lateral movementfinishedgame state with "COURSE COMPLETE!" overlay showing score and elapsed timeAcceptance Criteria Met
Test plan
🤖 Generated with Claude Code