Два оставшихся пункта из B6.7, сверенные с оригиналом SDK 2013
(src/game/shared/gamemovement.cpp).
- StartGravity / FinishGravity берут по половине гравитации до и после
движения: «yes, this 0.5 looks wrong, but it's not» — комментарий Valve.
Замер высоты прыжка на gm_construct: 42,7 -> 44,9 юнита при ~45 в Source.
Заодно проверено, что TryPlayerMove гравитацию не применяет вовсе.
- CheckVelocity: sv_maxvelocity = 350 попоосно. Без него шаг за кадр на
большой скорости становится длиннее стены, и отсечение её не видит.
- Место вызова важнее самого ограничения: в оригинале CheckVelocity стоит
прямо перед TryPlayerMove (внутри Friction). Вызов только в конце кадра
позволял одной нечислице уйти в смещение и сделать позицию нечислицей
навсегда — прогон тестов занимал 42 с вместо 0,01. Теперь вызов есть
и перед движением, и в конце.
- Позиция проверяется на нечислицу так же, как скорость.
Тесты: speed_is_capped_at_max_velocity, non_finite_velocity_is_zeroed.