Slow Fly

From P2SR Wiki

Revision as of 13:22, 20 October 2020 by Jerry (talk | contribs)

Slow Fly

Overview

The name slow fly refers to a movement related game mechanics, where if your vertical velocity is in specific range, your acceleration becomes 4 times smaller, resulting in movement being much harder to control.

Technical Explanation

Slow fly is caused by your vertical speed being bigger than 0 ups but smaller than or equal 140 ups[1]. When this condition is met, m_surfaceFriction is changed from 1.0 to 0.25, effectively causing your air acceleration to be 4 times smaller. This has been proven by various of experiments and by looking at CS:GO source code leak, which contains some of the Portal 2 source code.[2]

In-game effects

Color-coded model of vertical doors (both sides). Blue is upward slope, red is downward slope, green is straight wall.

Slow fly can be noticed in two scenarios: when jumping and during Crouch Fly Glitch. In former case, it's barely noticeable, since you're within required vertical speed range for only 14 ticks (about 1/4th of a second or 1/3th of a jump on a flat surface). However, during crouch fly, vertical speed is constant until you interact with something that changes it (ramp-like object or ground), which means, once it gets into the range, the effect of slow fly is easy to notice.

The most common way of entering the slow fly state is by hitting the vertical doors model, which apparently is an extremely steep slope rather than a wall. The amount of vertical speed gained by a quick collision with it is bigger than zero (which puts you in a slow-fly state) but at the same time is so small that it doesn't change your position (thanks to the way floating point numbers work).

This exploit is used in Finale 4's Least Portals route, where you gain a small amount of vertical speed in order to get into the next section of the level without placing any portals.

Notes

  1. This means the player has to go up. When falling, vertical speed would be negative.
  2. portal_gamemovement.cpp, lines 665 and 1339