Source: https://shadowfrag.com/blog/shorter-leaps-better-duels/

# Shorter leaps, better room to fight

By the SHADOWFRAG developer · Movement · Oct 18, 2026 · 3 min read

Players were covering a lot of ground in a very short jump. I reduced horizontal travel while keeping the height, airtime and movement combinations intact.

[Twin Castles, captured in SHADOWFRAG's Vulkan renderer](https://shadowfrag.com/_astro/60b30cb2727587f9438651a26b189177bddc4c802dae0a2cbf5b97d5bcd327cb.BVfBgQeZ.png)

Actual engine render · Development build · 22 October 2026

An opponent could cross a lot of ground during one of SHADOWFRAG's short leaps. I wanted to give the person aiming at them a more manageable crossing without making the jumper hang in the air. Slowing every part of the jump would have changed the movement I was trying to keep.

I made two balance passes in the shared movement controller. Players and [bots](https://shadowfrag.com/glossary/#term-bot) use that controller, as do the client that predicts your movement and the server that checks it. Changing the rules there kept those versions of the same action in agreement. Directional control, the brief window for accepting a jump press around landing, and the quick vertical arc all stayed in place.

## Less distance in the same airtime

The second pass reduced running speed from 9 to 8 [world units](https://shadowfrag.com/glossary/#term-world-unit) per second and forward leap speed from 21 to 17. [World units](https://shadowfrag.com/glossary/#term-world-unit) are the game's internal distance scale. On level ground, the measured leap shortened from **9.84375 to 7.96875 units**, while both versions stayed airborne for **0.46875 seconds** and reached **1.24827 units** high. The player landed closer to the starting point, at the same time and from the same height.

The aimed [chi-jump](https://shadowfrag.com/glossary/#term-chi-jump) changed in a similar way. Launched at 25 degrees, it travelled **39.2545 units**, down from **50.47**, with its airtime and height unchanged. I also lowered the maximum horizontal speed from 42 to 34 units per second and the extra push supplied by an [air step](https://shadowfrag.com/glossary/#term-air-step) from 4 to 3. A stationary shadow-grenade throw still covered 21 units.

These are before-and-after measurements from the October 18 test setup. They show the specific change I made: less horizontal reach, rather than a longer or lower jump. They do not establish how much better any particular player would aim.

## Checking that a shorter jump still connects

Reducing reach also changes where a sequence of moves ends. I checked [directional leaps](https://shadowfrag.com/glossary/#term-directional-leap), [air steps](https://shadowfrag.com/glossary/#term-air-step) and [timed hopping](https://shadowfrag.com/glossary/#term-timed-hopping), then combinations of [chi-jumps](https://shadowfrag.com/glossary/#term-chi-jump), [shadow warps](https://shadowfrag.com/glossary/#term-shadow-warp), [wall kicks](https://shadowfrag.com/glossary/#term-wall-kick) and [double-jumps](https://shadowfrag.com/glossary/#term-air-step). The networking checks replayed movement after delayed world updates to make sure [prediction](https://shadowfrag.com/glossary/#term-client-prediction) still agreed with the server. [Bots](https://shadowfrag.com/glossary/#term-bot) needed their route previews to use the shorter reach while accounting for the height they could still gain.

The second-pass record contains **5,325 movement checks, 73,908 [bot](https://shadowfrag.com/glossary/#term-bot) checks and 63,435 terrain checks**. Those are automated assertions about behavior, not counts of players or play sessions. The movement and terrain tests also ran with [sanitizers](https://shadowfrag.com/glossary/#term-sanitizer), which look for memory errors and undefined program behavior. Some archived [bot](https://shadowfrag.com/glossary/#term-bot) stress tests used larger populations than a normal match; they do not change the game's later 64-[player ceiling](https://shadowfrag.com/glossary/#term-player-cap).

The distinction between speed, reach and airtime was useful here. I could shorten a crossing while leaving the next [air step](https://shadowfrag.com/glossary/#term-air-step) or [wall kick](https://shadowfrag.com/glossary/#term-wall-kick) available. Whether that made a [duel](https://shadowfrag.com/glossary/#term-duel) feel better still needed play; the measurements and tests told me that I had changed the intended part of the movement.

[Back to blog](https://shadowfrag.com/blog/)[Browse the glossary](https://shadowfrag.com/glossary/)

## Request an _invite code._

SHADOWFRAG is opening by invitation. Request a code and receive development updates. [Shadow Council](https://shadowfrag.com/glossary/#term-shadow-council) contributors receive priority when invitations begin.

Enable JavaScript to request an invite code and confirm your email address.

Email confirmation required. Codes will be issued later; a request does not guarantee access. Unsubscribe at any time. [Privacy](https://shadowfrag.com/privacy/)

Confirm your email to join the invitation list. Codes will be issued in a future round; a request does not guarantee access. Unsubscribe at any time.

Anyone can request a code. For [Shadow Council](https://shadowfrag.com/shadow-council/) priority, introduce yourself on Discord with your role, experience, region and time zone. Include examples of your maps or content if you have them.

[Join Discord](https://discord.gg/EHj7rZDNj)
