Guide
Game fall damage and landing systems explained
Harbor Ruins shipped vertical cliffs as a traversal shortcut: jump down, roll, keep moving. Playtesters instead died to a waist-high ledge because fall damage compared the player's world-space Y coordinate to ground height at impact — a slope under the landing point made the delta look like a forty-meter drop. Worse, holding the roll button during descent did nothing; mitigation only checked on the landing frame, after velocity had already been zeroed by the ground snap. Fall damage felt random, and the level designers stopped using verticality.
Fall damage and landing systems track how far and how fast a character falls, then apply consequences on ground contact: scaled HP loss, instant death past a threshold, or no damage at all. They sit between movement physics and health pipelines, and they interact with mantling, environmental hazards, and stamina costs for roll landings. This guide covers policy taxonomy, height and velocity tracking, damage formulas, mitigation verbs, multiplayer authority, the Harbor Ruins refactor, a technique decision table, pitfalls, and a production checklist.
Fall damage policy taxonomy
Choose a policy before tuning numbers. Mixed policies (scaled damage plus instant-death cliff) confuse players unless telegraphed:
| Policy | Behavior | Common in |
|---|---|---|
| None | Any height safe; verticality is free | Platformers, kid-friendly adventures, some MMOs |
| Binary lethal | Below threshold = 0; above = death or % max HP | Survival sims, hardcore RPGs, battle royale |
| Scaled curve | Damage rises with height or impact speed | Action-adventure, looter shooters, souls-likes |
| Mitigation-gated | Base curve reduced by roll, ability, or gear | ARPGs, parkour action, tactical shooters |
| Zone override | Tagged volumes ignore or amplify fall damage | Story beats, tutorial pits, boss arenas |
Harbor Ruins moved from binary lethal to scaled-plus-mitigation: designers could place medium drops that rewarded roll timing without making short hops lethal.
Height and velocity tracking
Fall damage needs a reliable measure of “how bad was that landing?” Two inputs dominate:
Peak altitude delta
While airborne, record the highest point the character's feet (or capsule
bottom) reached since leaving ground. On landing,
fall_height = peak_y - landing_y. This survives slopes and moving
platforms because you compare against the peak in air, not world origin.
Impact velocity
Use downward speed at contact (or the frame before ground collision resolves).
Velocity captures knockback launches and gravity modifiers better than height
alone. Many games blend both:
severity = max(height_term, velocity_term).
Implementation notes:
- Airborne state machine — ground contact ends tracking; coyote-time jumps should not reset peak unless feet leave ground again.
- Moving platforms — store peak relative to the platform reference frame, or fall damage triggers only when landing on static geometry.
- Launch sources — catapults, explosions, and knockback may need a separate “forced airtime” flag so designers cap damage from scripted launches.
- Water and soft volumes — entering liquid cancels tracked height or switches to a drowning pipeline instead.
Damage formulas and caps
Once you have fall_height (meters) or impact_speed
(m/s), map to damage through a curve with explicit safe and lethal bands:
| Curve | Formula sketch | Feel |
|---|---|---|
| Linear | dmg = k * max(0, h - h_safe) |
Predictable; easy to explain in UI |
| Quadratic | dmg = k * (h - h_safe)^2 |
Gentle short drops, punishing cliffs |
| Square root | dmg = k * sqrt(h - h_safe) |
Medium drops hurt; extremes taper |
| Percent max HP | dmg = pct * maxHP per band |
Scales with progression; watch tank builds |
Always define h_safe (no damage below), h_warn (UI
tint or camera shake), and h_lethal (instant death or cap bypass).
Clamp final damage through your standard
mitigation stack
unless fall damage is flagged ignore_armor.
Landing mitigation verbs
Mitigation gives skilled players agency without removing tension:
- Roll landing — hold or tap roll within a window before impact; reduces severity by a multiplier or subtracts a height budget. Costs stamina in Harbor Ruins.
- Soft landing zones — hay bales, snow, water depth
tags that set
fall_damage_multiplier = 0or apply slow-fall on entry. - Abilities and buffs — feather fall, double-jump cancel, grappling hook snap: each needs explicit interaction with peak tracking (does the buff reset height or only reduce velocity?).
- Equipment — boots with
+2m safe heightbelong in the item stat block, not a hidden script on one level.
Mitigation should be visible in play: audio cue on risky airtime, landing VFX tiered by severity, and combat text color consistent with damage popups.
Integration with death and checkpoints
Fall damage often triggers death penalties instead of partial HP loss. Decide early:
- Lethal falls: respawn at last checkpoint vs corpse run vs gear durability hit.
- Non-lethal falls: still apply stagger, break stealth, or alert nearby AI via noise systems.
- Co-op: downed-from-fall vs instant death affects revive flows.
Multiplayer authority
Server-authoritative games should compute fall severity on the host from replicated position history, not trust client roll inputs blindly. Pattern:
- Client predicts landing VFX and local damage for responsiveness.
- Server validates airborne timeline, peak height, and mitigation button state within latency tolerance.
- Correction snap if client claimed a roll but server saw early release.
Log desync cases during playtests on high-latency builds; roll windows that work at 30 ms fail at 150 ms.
Harbor Ruins refactor (worked example)
The cliff shortcut loop required: jump from battlement, roll on slate, slide into combat. Pre-refactor fall logic used raw Y delta and ignored roll until after ground contact.
Changes shipped:
- Peak tracker component on the character capsule — resets on grounded; updates only while airborne.
- Blended severity —
0.6 * height_term + 0.4 * velocity_termwithh_safe = 3m,h_lethal = 18m. - Roll window — 200 ms before impact; halves severity and spends 15 stamina; failed roll plays distinct crunch SFX.
- Surface tags —
SoftLandingon hay and shallow water;HardStoneadds 10% damage. - Debug overlay for designers: peak height, predicted damage, roll eligibility in real time.
Vertical encounter completion rose 34% in telemetry; support tickets mentioning “unfair fall death” dropped to near zero over two weeks.
Technique decision table
| Approach | Use when | Avoid when |
|---|---|---|
| No fall damage | Platforming clarity is the core skill | Survival tension or gear-based mitigation is a pillar |
| Height-based curve | Readable drops, consistent level metrics | Heavy knockback combat defines airtime |
| Velocity-based curve | Knockback, grappling, variable gravity | Players need to plan drops by sight alone |
| Roll mitigation | Action games with stamina economy | Slow tactical games without dodge verbs |
| Instant lethal past threshold | Hardcore modes, obvious kill pits | Ambiguous geometry without telegraph |
| Hazard volume only | Scripted story pits, lava | Organic open-world verticality |
Common pitfalls
- World Y delta on slopes — Harbor's original bug; always track peak altitude in air.
- Ground snap before velocity read — sample impact speed the frame before collision resolution.
- Roll checked after landing — mitigation must evaluate during descent window.
- Moving platform false positives — riding an elevator down should not count as a fall.
- Inconsistent units — designers tune in meters, code uses Unreal centimeters; document conversion.
- Armor double-dip — fall flagged ignore_armor but still runs through resist layers; pick one.
- No telegraph on lethal drops — players blame the game, not their route; use color, sound, or mist.
- Co-op friendly fire on landing — AoE stomp damage from heavy landings needs team filters.
Production checklist
- Documented policy: none, scaled, lethal threshold, or hybrid.
- Peak height and impact velocity tracked with airborne FSM.
- Safe, warn, and lethal bands defined in design spreadsheet.
- Damage curve implemented with unit tests at boundary heights.
- Mitigation verbs wired before ground contact resolves.
- Surface tags for soft/hard landing materials.
- Integration with health, death, stamina, and stealth noise.
- Designer debug overlay for predicted damage in PIE/editor.
- Multiplayer server validation for mitigation timing.
- VFX/SFX tiers for light, heavy, and lethal landings.
- Accessibility option to reduce or disable fall damage.
- Playtest script includes slope, moving platform, and launch pad cases.
Key takeaways
- Track peak height in air, not world Y at impact.
- Blend height and velocity when knockback matters.
- Mitigation windows belong before landing, not after.
- Define safe and lethal bands so level art can telegraph risk.
- Validate fall logic on slopes, platforms, and high latency.
Related reading
- Game environmental hazard systems explained — lava, crush, and zone-based world damage
- Game health and damage systems explained — HP pools and damage pipeline integration
- Game mantling and vaulting systems explained — vertical traversal paired with drops
- Platformer game design explained — when to disable fall damage entirely