Download

← All updates

Update

quark 1.18.31

Everything that changed in this version, and why.

Movement (src/game/pmove.cpp)

  • The hyper (super dash) bounces its speed up instead of adding a hop. The owner asked: "when you hyper you can use up to 90% of the speed on vertical". The hyper's speed is unchanged (the speed carried into the dash + 5, at least the dash's own 11, at most 36). It is now split like a dash bouncing off the floor: the dash's down share (the sine of its angle below level, at most 0.9 looking straight down) goes up, and the rest stays level (sqrt(1 - share²)), so the total speed is the same whichever way it points. kSuperDashJump is now that cap (0.9; a custom mode's SUPER DASH JUMP multiplier scales the share, never above 0.99), and kSuperDashJumpMax is gone. Before (1.18.28), the hop was 0.866 to 1.732 jumps (6.36 to 12.7 m/s up) on top of the full speed level.
    • From a 9.5 m/s run (14.5 m/s hyper): 20 deg down 0.45 m high, 45 deg 1.93 m with 11.2 m/s level, straight down 3.86 m with 6.3 m/s level. Before: 1.15 m, 2.36 m and 3.65 m, all with 14.5 m/s level.
    • From a standstill (the dash's 11): 20 deg 0.26 m, 45 deg 1.11 m, straight down 2.22 m. Just past the 14.5 deg threshold it is a skim (22.5% up, 0.14 m), close to the original Celeste-style hop (0.31 m before 1.18.28).
    • The trade-off: a steep hyper buys height with forward speed, and a shallow one keeps its speed but barely leaves the floor. Since 1.18.7 the hyper adds only 5 m/s, so it is the speed you carry in that decides how high you go.
  • Dash aim limits: 40% up, 90% down (owner: "dashing should be limited to 40% up and 90% down"). kDashVertical (0.6375 both ways, a 39.6 degree climb or dive) becomes kDashVerticalUp 0.4 (23.6 degrees) and kDashVerticalDown 0.9 (64 degrees). The custom DASH VERTICAL multiplier scales both. The super dash threshold is still 25% of the way down (looking 14.5 degrees below level), so which dashes count as a hyper is unchanged.
    • A standing jump with a dash straight up at its top (0.3 s) peaks about 2.79 m (was 4.15 m). A straight-up dash moves 92% of its speed level (was 77%).
    • A straight-down dash hits the floor sooner from a height, and it feeds the hyper's 90%.

Physics editor (tools/physics_editor/)

  • native/physics.cpp maps DASH VERTICAL to kDashVerticalDown and kDashVerticalUp, and SUPER DASH JUMP to the 0.9 cap. web/js/params.js and web/js/mockpm.js carry the same model. test_phys.py's super dash preset expects 11.2 m/s level and a 1.94 m hop at 45 degrees.

Tests (tests/tests.cpp)

  • The super dash tests check the split: the level speed is the hyper's speed x sqrt(1 - share²), and the up speed is the speed x the share (0.225 at the threshold, 0.9 straight down). The hop checks are now 0.14 m at the threshold and 2.23 m straight down from a standstill. Where forward or jump is held after a run, the level part is below the run cap, so air control adds a little: those checks allow 0.02 m/s.

Compatibility

  • No protocol change (still 44): 1.18.31 joins and hosts 1.18.22 and newer. pmove runs on both sides, so a client from 1.18.22-1.18.30 on a 1.18.31 server (or the other way round) predicts the old aim and hyper and is corrected once per such dash, the same as the earlier movement updates in this line.