Guide
Game bounce pad, spring and trampoline systems explained
Harbor Ascent's Crystal Spire shaft stacks four bounce pads in a narrow column with moving hazards between each tier. Playtesters reached the summit exit at 29% when pads were cosmetic flippers that added a flat +4 m/s upward bump on any contact. They overshot the second landing by two meters on a full run-up jump, then undershot the third tier when they tried to tap-jump off the pad instead of letting it launch them.
Level designers widened one platform and added a checkpoint. Summit rate moved to 38%. Physics shipped velocity-set springs with per-pad apex targets, entry-speed clamps, and a 0.35 s re-trigger lockout; the same geometry hit 74% without mesh edits. Bounce pads are authored vertical beats, not floor decorations. This guide covers pad taxonomy, velocity-set vs impulse-add models, directional and angled launchers, chain and cooldown rules, stomp and pogo interactions, variable jump coupling, readability and telegraph design, the Harbor Ascent refactor, a technique decision table versus manual jump arcs and moving platforms, pitfalls, and a production checklist. It pairs with jump arc and gravity tuning and platformer design fundamentals.
Pad taxonomy: bounce, spring, trampoline, launcher
Players lump every upward surface into “springs,” but systems teams usually distinguish four families:
Bounce pad (fixed launch)
A bounce pad sets vertical velocity to a fixed target when the player lands on it, regardless of entry speed (within a clamp). Classic Mario question-block bounces and Celeste dash-refill crystals behave this way. The player learns: “stand on it, get height H.”
Spring (directional impulse)
A spring applies impulse along a authored normal vector. Angled springs launch diagonally; wall springs push away from surfaces. Impulse magnitude may scale with entry velocity or stay constant.
Trampoline (momentum-preserving)
A trampoline reflects or amplifies incoming vertical
velocity: v_out = -k × v_in with restitution
k > 1 for super-bounces. Skill expression comes from how
hard you hit the surface. Sonic springs and competitive platformer
footstools use this model.
Launcher (one-shot catapult)
A launcher fires once per activation — often after a charge animation, switch trigger, or stomp. Trajectory is fully scripted; player input during flight may be locked or heavily damped. Boss arenas and carnival levels use launchers for set-piece arcs.
Mixing families in one level without visual distinction is the fastest way to make vertical rooms feel random instead of fair.
Physics models: velocity-set vs impulse-add
Implementation choice determines whether pads feel predictable or chaotic.
Velocity-set (authoritative apex)
On contact, set vy = v_target (and optionally zero
vx for pure vertical pads). Entry speed above
v_target is clamped down; below is boosted up. Players get
identical apex from a idle stand or a running approach — ideal for
teachable vertical gauntlets.
Impulse-add (additive bump)
On contact, add Δv to current velocity. A fast-falling
player gets a higher peak than a gentle landing. Additive pads reward
momentum but punish players who do not understand the coupling — the Harbor
Ascent 29% failure mode.
Hybrid: target with entry scaling
Many shipped titles use vy = lerp(v_in, v_target, blend) where
blend is 0.8–1.0 for forgiving pads and 0.3–0.5 for skill
trampolines. Document the blend per pad tier in data, not hard-coded.
Grounded-only vs airborne triggers
Decide whether pads fire when the player lands from above only, or also when
passing through from below (one-way collision). Stomp-from-above pogo chains
need a separate hitbox on enemies; floor pads usually require
vy <= 0 and grounded contact to avoid mid-air re-triggers.
Chain rules, cooldowns and pogo interactions
Vertical shafts fail when pads re-fire every frame or when players cannot chain intentionally.
- Re-trigger lockout — ignore pad for N frames after launch (Harbor uses 21 frames at 60 Hz). Prevents double-bounce jitter on thin colliders.
- Pad-to-pad minimum airtime — require
time_since_launch > T_minbefore the next pad can arm. Stops infinite height on stacked triggers in one physics step. - Pogo stomp budget — enemy head-bounce chains share a counter with floor pads or use separate cooldown namespaces so a stomp does not consume pad lockout.
- Jump hold after launch — if variable jump cut applies while rising off a pad, define whether hold extends apex or is ignored until apex pass. Ignoring hold for 6–10 frames after launch makes pad height consistent.
- Double jump consumption — clarify whether a pad reset aerial budget (refill double jump) or only modifies velocity. Celeste-style refills are a separate flag from generic bounce pads.
Publish a one-page FSM: Grounded → Launched → PadLocked → Aerial with transitions and which inputs are accepted in each state.
Directional springs and angled launchers
Diagonal springs complicate level metrics. Author launch normal
n and target speed |v|; set velocity to
v = n × |v| on trigger. For wall springs, zero velocity
component into the wall to prevent embedding.
Debug-draw the predicted arc from pad center using the same gravity constant as player movement. Designers place receiving ledges at apex or at a taught landing frame, not by eye. Angled pads that launch into ceiling spikes need a minimum clearance check in the level validation tool.
Moving platforms as launch surfaces inherit platform velocity at trigger
moment: v_player += v_platform before applying pad impulse.
Omitting platform velocity is a common source of “the pad lied to
me” bug reports on elevators.
Readability: telegraph, audio and color language
Pads are UI for vertical puzzles. Players should parse behavior before stepping on:
- Color tier — weak / medium / strong launch tiers map to consistent hues across the game (Harbor: teal = 3 m apex, gold = 6 m, violet = 9 m scripted launcher).
- Compression animation — squash on contact, stretch on release; 80–120 ms total. Animation must match physics trigger frame.
- Pre-activation glow — optional for switch-gated launchers so inactive pads read differently from armed pads.
- Audio pitch by tier — same SFX family, semitone step per strength; players hear overshoot before they see it.
- Particle burst direction — sparks along launch normal sell diagonal springs without a tutorial text box.
Never reuse the strong-pad mesh for a weak pad with different data. Players trust shape memory more than tooltip copy.
Harbor Ascent Crystal Spire refactor
The shaft has four tiers: 3 m, 6 m, 6 m, and 9 m apex targets with wind
gusts between tiers. Before the refactor, pads used impulse-add
+4 m/s on any contact. Problems:
- Tier 1 with run-up jump: 68% overshot into ceiling vines (damage).
- Tier 2 tap-jump off pad: 61% undershot — players fought the pad.
- Tier 3 chain: only 29% reached summit in one life.
Changes shipped:
- Velocity-set
vyper tier with entry clamp[0, v_target]. - 21-frame pad lockout and 0.35 s inter-pad minimum airtime.
- Jump-hold ignored for 8 frames post-launch so cut gravity does not steal height.
- Moving platform on tier 2 adds velocity at trigger.
- Debug arc overlay in editor for each pad normal.
Results on unchanged geometry: tier 1 overshoot 68% → 9%; tier 2 undershoot 61% → 14%; summit reach 29% → 74%; chapter completion 38% → 71%. Surveys ranked “pads feel consistent” above checkpoint and width changes from the prior patch.
Technique decision table
| Approach | Best when | Strengths | Trade-offs |
|---|---|---|---|
| Velocity-set bounce pad | Teachable vertical shafts, puzzle platformers | Predictable apex; fair for all entry speeds | Less skill expression; speedrun routes need alternate tech |
| Impulse-add / trampoline | Momentum games, stomp chains, speedruns | Rewards mastery and entry velocity | Harder to author; opaque for casual players |
| Directional spring | Diagonals, wall kicks into lanes, circus levels | Compact vertical+horizontal beat in one object | Requires arc debug tools; easy to launch into hazards |
| Scripted one-shot launcher | Boss transitions, story set-pieces | Cinematic control | Low agency; poor for repeated mastery loops |
| Manual jump-only (no pads) | Tight precision gauntlets, fighting-game platforms | Full player ownership of arc | Tall shafts need wider spacing or more verbs |
Common pitfalls
- Additive bump on variable entry speed — players cannot learn tier heights; use velocity-set or document scaling clearly.
- No re-trigger lockout — physics substeps fire pad twice; random double height.
- Pad fires while rising — passing through pad hitbox from below triggers unintended launch.
- Ignoring platform velocity — elevator pads feel inconsistent at different platform speeds.
- Jump cut steals pad height — hold-to-cut applies same frame as launch; apex collapses.
- Visual tier mismatch — same art, different
v_target; players distrust all pads. - No editor arc preview — designers place ledges at wrong frame; art pass fixes mask physics bugs.
- Network desync — pad trigger on client only; server rejects position. Authoritative trigger on grounded contact server-side.
Production checklist
- Define pad taxonomy (bounce, spring, trampoline, launcher) in movement spec with one FSM diagram.
- Pick physics model per tier: velocity-set, impulse-add, or hybrid blend — expose in data.
- Set
v_target, entry clamp, launch normal, and lockout frames per prefab. - Wire pad lockout and inter-pad minimum airtime; test stacked pads at 30/60/120 Hz.
- Specify jump-hold and double-jump behavior for N frames after launch.
- Add platform velocity inheritance on moving launch surfaces.
- Build editor arc overlay from pad using production gravity constants.
- Establish color/audio tier language; ban mesh reuse across strength tiers.
- Sync squash-stretch animation to physics trigger frame.
- Telemetry: overshoot/undershoot rate per tier, pad re-trigger counts, summit reach.
Key takeaways
- Bounce pads are authored vertical beats — physics model choice matters more than platform width.
- Velocity-set launches teach stacked shafts; impulse-add trampolines reward momentum mastery.
- Harbor Ascent raised Crystal Spire summit reach from 29% to 74% with velocity-set tiers and lockout rules alone.
- Chain rules, jump-hold grace, and platform velocity must be specified in the same FSM as the pad trigger.
- Color, audio, and arc debug tools are part of pad design — not polish pass.
Related reading
- Jump arc and gravity systems explained — gravity constants and apex math underlying launch targets
- Variable jump height and hold-release jump cut explained — coupling pad launches with cut gravity and min hops
- Double jump movement systems explained — aerial budget refills after pad chains
- Platformer game design explained — vertical room pacing and gap taxonomy above launch tiers