Guide
Game wind zone and updraft traversal systems explained
Harbor Peaks’ wind shrine gauntlet chained three vertical updrafts through narrow stone arches. Playtest telemetry showed 37% completion and a spike in “wind is random” reports. The implementation added a fixed upward offset each frame while the player was inside a trigger volume — not acceleration integrated with gravity and jump velocity. Players overshot ledges, slammed into ceiling spikes, and could not predict whether a short hop or full jump would clear the next arch. Refactoring to force-field acceleration, capped terminal rise speed, gradient falloff at zone edges, and telegraphed gust cycles lifted shrine completion to 76% and cut unfair-mechanic feedback by 71%.
Wind zones and updrafts are volume force fields that modify player velocity while airborne (and sometimes while grounded). They differ from conveyor belts (surface tangential velocity) and bounce pads (instant impulse at contact). Wind teaches vertical routing, timing, and reading environmental flow. This guide covers force models, airborne coupling with jump arcs and air control, horizontal gusts, downdrafts and hazards, puzzle sequencing, networked determinism, the Harbor Peaks refactor, a technique decision table, pitfalls, and a production checklist.
Wind zones vs other environmental movers
Three common patterns move players without direct input, and mixing them without clear rules produces mushy feel:
- Surface velocity (belts, moving platforms) — applies while grounded; jump-off inherits surface speed.
- Impulse at contact (springs, bounce pads) — sets or adds velocity once on touch.
- Continuous force (wind, magnetism, water current) — accelerates velocity each tick while inside a volume.
Wind belongs in the third category. Applying wind as position teleport (the Harbor
Peaks bug) bypasses gravity integration and breaks
variable jump height:
a short hop and a full jump receive the same per-frame nudge, so apex becomes
unpredictable. Production platformers integrate wind as acceleration
a_wind each physics step: v += (g + a_wind) * dt while
the hurtbox center (or feet probe) overlaps the zone.
Force field models
Constant vector zones
The simplest updraft: uniform a_wind = (0, a_up) inside an axis-aligned
box. Easy to author but harsh at boundaries — velocity jumps when entering
because acceleration turns on instantly. Use constant zones for tutorial shafts
with wide margins and soft visual particles so players learn “float up here.”
Gradient falloff at edges
Scale acceleration by a weight w(x,y) from 0 at the volume edge to 1
at the core. Linear or smoothstep falloff prevents snap-in feel and lets players
“ride the edge” for fine height control. Harbor Peaks used smoothstep
over the outer 25% of each updraft column; overshoot deaths on arch 2 dropped 54%.
Directional and shaped fields
Horizontal gust corridors push along X; diagonal vents assist slope climbs; ring vortices (weak at center, strong at rim) suit circular arenas. Author direction from level data, not mesh rotation alone — rotated colliders with forgotten transform math is a top source of “wind points wrong way” bugs.
Terminal velocity caps
Uncapped upward acceleration fights gravity until the player rockets through the
ceiling. Cap rise speed v_y_max per zone (often 1.2–2.5×
normal jump apex speed). Downdrafts cap fall speed similarly to avoid slam-through
floor bugs. Caps make puzzles solvable on paper: designers can compute max height
from entry velocity plus zone height.
Airborne coupling and jump integration
When wind applies
Most platformers apply wind only while airborne or while a
“wind hang” flag is active after leaving an updraft. Applying full
updraft while grounded on a floor inside the volume creates infinite hover at
floor contact unless you zero vertical wind near ground probes — usually
undesirable. Pattern: enable vertical wind when !grounded OR
grounded && v_y > 0 (rising off a jump inside the shaft).
Jump takeoff inside updrafts
On jump impulse, wind acceleration should apply on the same tick and every subsequent airborne tick. Do not replace jump velocity with wind speed; add wind acceleration to existing velocity. Pair with coyote time at shaft lip so players who run off the edge still receive one or two wind frames.
Air control interaction
If the player has lateral air control, wind horizontal components stack with input — effective speed can exceed sprint. Clamp total horizontal speed in gust corridors or reduce air control authority inside strong wind (many flight sections lock lateral input to 40–60% while preserving steering feel). Document whether air dashes reset wind accumulation or inherit it; inconsistent dash-wind rules confuse speedrunners.
Glide, parachute and double jump
Glide states often multiply wind effect (hang time puzzles). Double jumps inside updrafts should consume the air jump normally; wind does not refund jumps unless the level is explicitly a wind-temple with recharge crystals. If you allow double jump in updrafts, cap total apex so double-jump plus wind cannot skip an entire act.
Gust cycles, curtains and timing puzzles
Continuous vs pulsed wind
Continuous updrafts suit teaching and zen ascent. Pulsed gusts (on 2 s, off 1.5 s) gate progression through moving hazards or force players to wait on ledges. Pulse shape matters: square waves feel unfair; sine or trapezoid envelopes with 200–400 ms fade read as natural gusts.
Telegraphs
Players accept timed wind if they can see it coming: flag cloth, pollen streaks,
audio whoosh 300–500 ms before gust peak, subtle screen-edge vignette on
strong downdrafts. Harbor Peaks added arch-mounted streamers synced to
gust_phase; “random wind” tickets fell 71%.
Wind curtains and one-way gates
Strong horizontal gusts can block backward travel (push player off ledge if they walk into headwind). Weaker tailwinds assist forward jumps. Combine with drop-through platforms for vertical routing: updraft lifts, player drops through floor to side chamber.
Multi-shaft sequencing
Chains of updrafts need consistent v_y_max and gap width. If gap
width equals jump distance at peak wind-assisted apex, publish the intended line
(early jump vs late jump vs
dash
from lip). Misaligned shaft spacing is the main cause of “impossible”
wind gauntlets in playtest.
Downdrafts, hazards and combat
Downdrafts accelerate descent — useful for speed routes and preventing infinite hover under updraft ceilings. Cap slam speed and respect fall damage rules. Spike ceilings above updrafts need either lower cap or wider arch so players can thread the gap; telemetry on ceiling hits identifies overtuned zones fast.
Rotating hazard fans are often cosmetic meshes over static force volumes; gameplay should read fan collider phase, not blade mesh angle, for damage frames. Environmental kill volumes in wind puzzles should activate only after 400 ms telegraph unless the level is labeled hard optional.
In combat platformers, wind can push projectiles and knockback vectors. If players expect neutral air, gust-combat rooms need UI callouts. Push direction should match projectile deflection for readability.
Networked and deterministic wind
Wind acceleration must be a function of simulation tick and shared phase clocks,
not frame-rate dependent offsets. Author a_wind(tick) = f(gust_phase(tick))
for pulsed zones. Rollback netcode includes gust phase in savestates; mispredicting
one gust cycle desyncs position in vertical gauntlets. Visual particles may
interpolate; gameplay force never reads particle velocity.
For co-op, decide whether both players share the same wind volume response (usual) or whether weight class changes cap (rare). Keep rules identical across clients.
Harbor Peaks wind shrine refactor (case study)
Before: Updrafts used per-frame y += 0.18 inside
triggers; no terminal cap; instant full force at volume entry; gusts toggled without
streamer sync; horizontal arch gusts used mesh forward vector (wrong axis). Metrics:
37% shrine completion, 29% of deaths on ceiling spikes in arch 2.
Changes:
- Replaced position nudge with
v_y += a_up * dtandv_y_maxper shaft tier. - Smoothstep edge falloff on all updraft volumes.
- Shared
gust_phasedriving streamers, audio, and force scale. - Wind applies only when airborne or rising off jump inside shaft.
- Reduced air control to 50% in horizontal gust corridor between arch 2 and 3.
- Widened arch 2 by 0.25 tiles after near-miss cluster on telemetry heatmap.
After: 76% completion, ceiling deaths down 61%, unfair-mechanic reports down 71%. Geometry tweak contributed ~5 points; force integration contributed the rest.
Technique decision table
| Goal | Prefer | Avoid |
|---|---|---|
| Teach vertical ascent | Wide constant updraft, low cap, gradient edges | Pulsed gusts as first introduction |
| Precision height puzzle | Gradient zones + capped rise speed + visible apex markers | Uncapped acceleration with variable jump |
| Timed gate through hazard | Phase-synced gusts with streamer/audio telegraph | Square-wave gust with no preview |
| Horizontal push across gap | Tailwind corridor with clamped total speed | Instant velocity set each frame |
| Factory floor flow | Conveyor surface velocity | Wind on grounded factory belts |
| Instant vertical launch | Bounce pad impulse at shaft base | Weak updraft that never reaches ledge |
| Block backtracking | Strong headwind curtain + one-way drop | Invisible repulsion with no feedback |
| Long-distance arc | Tailwind plus jump from lip; document line | Wind only after player already falling short |
Pitfalls
- Position nudge instead of acceleration — breaks gravity
and variable jump; integrate
a_windeach tick. - No terminal rise cap — players rocket into ceilings;
set
v_y_maxper zone. - Instant full force at boundary — use edge falloff or 80–150 ms ramp.
- Wind on grounded body at full strength — causes hover jitter; gate on airborne or rising state.
- Gust phase without telegraph — reads as RNG; sync VFX and audio to phase.
- Mesh rotation for wind direction — author explicit direction vectors in level data.
- Ignoring jump-off from moving ground into wind — merge platform velocity before wind tick when leaving moving platforms.
- Uncapped horizontal stack — air control plus tailwind exceeds jump puzzle math; clamp total speed.
- Frame-rate dependent force — use fixed timestep; same gust phase in netplay savestates.
Production checklist
- Model wind as acceleration inside volumes, not per-frame position offset.
- Integrate wind in the same fixed tick as gravity and jump physics.
- Set per-zone
v_y_maxand horizontal speed caps. - Apply smoothstep or linear falloff at volume edges (15–30% of width).
- Gate vertical wind on airborne or rising-off-jump states unless hover is intended.
- Expose direction, strength, cap, and gust phase in level data.
- Telegraph pulsed gusts 300–500 ms ahead with VFX and audio.
- Sync hazard windows to shared
gust_phaseclock across shafts. - Document intended jump lines for gap width at assisted apex.
- Clamp air control or total speed in strong horizontal gusts.
- Define dash and double-jump behavior inside wind volumes explicitly.
- For netplay, derive force from
f(tick); include gust phase in rollback state. - Playtest at min and max jump heights through each shaft tier.
- Log ceiling and pit deaths per wind volume in telemetry heatmaps.
Key takeaways
- Wind zones are acceleration fields, not elevators — integrate force with gravity and jump velocity each tick.
- Terminal caps and edge falloff make height predictable — Harbor Peaks overshoot was mostly uncapped rise speed.
- Telegraphed gust phases turn timing puzzles fair — streamers synced to phase cut “random wind” reports by 71%.
- Use belts for grounded flow, bounce pads for snap launch, wind for sustained vertical control.
- Air control, dash, and double-jump rules must be explicit inside wind volumes.
Related reading
- Jump arc and gravity systems — impulse, apex, and gravity integration wind must respect
- Platformer design explained — teaching order and pacing for vertical gauntlets
- Conveyor belt and walkway systems — surface velocity vs volume force contrast
- Puzzle platformer design — room logic and fair failure in precision vertical rooms