# Jelly Jungle — A Sky-High Adventure
## 1. Goal
Build a complete third-person platformer in which a pink jelly with a mint sprout crosses 13 floating islands using triple jumps and spring mushrooms. Use and the supplied references for the course, composition and finished visual style. This is Jared’s reconstruction inspired by aditya’s Jelly Jungle post at All game UI remains English.
## 2. Visual direction
Create a soft sculpted toy world: mint, sage, cream, turquoise, coral pink and warm gold. Use thick grass-topped islands with rounded lips, irregular warm-gray rock undersides, trailing vines, flowers, pebbles, tiny mushrooms, occasional waterfalls and a pale cloud sea. Add soft shadows, gentle fog, subtle environment reflection, breathing/squash-and-stretch, swaying trees and rotating crystals. Keep rocks below the landing plane and foliage clear of the next landing.
At desktop widths, reserve the left 35–40% for the stacked JELLY / JUNGLE title and CTA; frame the start island centre-right with the course receding upper right. Use a perspective camera near (13,20,25), target (-5,1.5,-5), vertical FOV about 40°, then tune against the reference. On a 390px phone, reframe the jelly and island above the title instead of cropping the desktop view. During play follow from behind near offset (0,8.8,15.3), looking about 5.8 units ahead. Preserve a stable horizon and a useful ground shadow.
Use local Barlow Condensed-style display type, DM Sans-style controls, forest-green buttons and softly frosted panels. Opening copy: “Born to bounce.” and “Let’s bounce”. Show utility buttons above, compact run HUD during play, a three-segment jump meter below and a prominent Classic / Tripo AI comparison switch. Touch joystick, Jump, HUD and footer must remain separate.
## 3. Course
Use the following baseline. Forward is negative Z; y is landing height and r is collision radius. Add a start banner and a warm-gold finish portal.
| Island | x | z | y | r | Type / name |
| --- | --- | --- | --- | --- | --- |
| 01 | 0 | 0 | 1.2 | 5.4 | start / First Leap |
| 02 | 0 | -10 | 1.6 | 3.1 | plain / Easy Does It |
| 03 | -4 | -19 | 2.0 | 3.1 | spring / Mushroom Launch |
| 04 | 2 | -29 | 3.2 | 3.6 | spinner / Candy Spinner |
| 05 | 7 | -39 | 3.8 | 4.0 | checkpoint / Cloud Camp |
| 06 | 1 | -49 | 4.1 | 3.1 | moving / Wandering Island |
| 07 | -6 | -59 | 4.7 | 3.2 | spring / Bounce Again |
| 08 | -1 | -71 | 5.8 | 3.8 | spinner / Double Trouble |
| 09 | 7 | -82 | 6.5 | 4.0 | checkpoint / Starlight Camp |
| 10 | 4 | -92 | 7.1 | 3.0 | crumble / Keep Moving |
| 11 | -3 | -102 | 7.7 | 3.2 | moving / Cloud Crossing |
| 12 | -7 | -113 | 8.2 | 3.3 | spring / One Last Bounce |
| 13 | 0 | -127 | 10.0 | 5.0 | finish / Above the Clouds |
## 4. Asset inventory
Prepare three replacement families in order:
- `jelly`: rounded candy-pink soft-vinyl character, small arms/feet, large dark oval eyes with highlights, rosy cheeks, small smile and mint two-leaf sprout; keep its face visible and height near 1.65 units.
- `mushroom`: broad coral-pink dome with raised ivory spots, cream gills and a short thick stem; reuse for every spring, with a generous stable cap.
- `tree`: curved peach-brown trunk, oversized rounded turquoise/mint palm leaves and small peach fruit clusters; reuse across the course.
Keep islands, clouds, vines, flowers, small rocks, waterfall sheets, crystals, flags, spinners and portal procedural. These define the course and effects rather than additional generated-model tasks. Fit each model in an unscaled wrapper; feet/trunk base at local y=0. Align mushroom cap and collision surface numerically as well as visually. Preserve the same colliders in both modes.
## 5. Physics and feedback
Use a fixed 1/120-second step, gravity near 22 units/s², movement near 8.8 units/s, responsive ground acceleration and gentler air steering. Normalize diagonal input. WASD/arrows move; a fresh Space press jumps. Permit exactly three jumps before landing: initial upward velocity about 9.2 and two air jumps about 8.5. Holding a key never repeats jumps. Landing recharges all three. A spring mushroom launches at about 16, recharges jumps and compresses/rebounds with a retrigger cooldown.
Spinner turntables carry grounded players; low rotating candy bars knock back only on segment contact with vertical overlap. Jumping clears them. Give about 1.7 seconds of immunity after a hit. Moving islands oscillate horizontally by about 2.6 units and carry grounded players by their displacement. Crumbling islands shake, vanish 1.5 seconds after landing and recover after about 4 seconds; hidden platforms do not collide.
Checkpoints on islands 05 and 09 restore position, velocity and jumps after a fall, retaining collected crystals and incrementing falls. R returns manually without a fall penalty. Place three crystals per island, 39 total; collect each once with sound, particles and HUD feedback. Reaching the final island completes exactly once; crystals are optional. Show time, crystals, island and progress; finish with time, falls and stars: three for ≥30 crystals, two for ≥18, otherwise one. Save best time and offer replay. No health or combat.
Provide a touch joystick with pointer capture and a large Jump button; each tap consumes at most one jump. Clear cancelled/held input. Add help and pause dialogs, hidden-tab recovery, nonblocking feedback and optional muted-by-default Web Audio. Restart resets all run, collectible and platform state.
## 6. Implementation
Use Vite, Three.js and plain JavaScript/HTML/CSS, with separate physics/course, world/asset registry, fitting, input/UI and audio modules. Bundle dependencies, fonts and assets locally. GLTFLoader imports self-contained models; validate finite bounds, visible geometry and embedded resources before swapping. Keep the current model on failure, prevent stale asynchronous loads and dispose superseded resources. Blender is optional for mesh cleanup or pivot correction if needed.
Classic uses the three procedural variants; imported mode uses available replacements and reports their real status. Switching or importing preserves position, velocity, jump charges, time, crystals and checkpoints without reloading. Instance or merge repeated static scenery, cap DPR near 1.5 and bound effects. Measure draw calls, triangles and frame timing in the actual camera; reduce distant decoration first.
## 7. Acceptance
Deliver complete source, lockfile, exact development/build commands and static output. Verify three fresh jumps and no fourth, spring alignment, moving-platform carry, sweeper contact, crumble/recovery, checkpoints, unique pickups, pause/restart and finish. Complete all 13 islands through actual input and physics; teleporting does not prove reachability. Check keyboard and touch, both art modes, each import/reset/failure path and state preservation. Compare settled desktop/mobile opening and gameplay views, inspect overflow and loading errors, and report actual performance conditions. Follow the shared asset workflow below.