«Дырки в крыше, сквозь которые нельзя упасть»: граней в картинке было меньше,
чем в коллизии. Причина — константы SURF_* в world.rs были перепутаны. По
public/bspflags.h Source настоящие значения:
SURF_SKY2D 0x0002 SURF_NOPORTAL 0x0020
SURF_SKY 0x0004 SURF_TRIGGER 0x0040
SURF_WARP 0x0008 SURF_NODRAW 0x0080
SURF_HINT 0x0100 SURF_SKIP 0x0200
SURF_NOPORTAL означает «нельзя поставить портал», SURF_TRIGGER — служебный
флаг; ни то, ни другое не про рисование, а мы их пропускали. Замер на
gm_construct: старая маска скрывала 2511 граней, новая 2411 — в картинке
появилось 100 граней, не пропало ни одной.
Тесты surface_flags_match_source_bspflags и
skip_mask_covers_only_faces_that_are_not_drawn не дадут значениям снова разойтись.
«Прыжки марсианские»: скорость прыжка бралась как 270 из Source SDK, а у GMod
она своя — вики GMod в примере Player:GetJumpPower() печатает 200. Прыжок был
выше в 1,8 раза.
высота 60,8 -> 33,3 юнита
до вершины 0,45 -> 0,33 с
полёт 0,90 -> 0,67 с
sv_gravity = 600 подтверждён вики отдельно и остаётся.
Попутно исправлены две ошибки в самих измерениях: брался максимальный z над
точкой вместо высоты поверхности на месте (крыша на z=1296 заслоняла крышу на
z=240), и зазор между габаритами считался без клампа по нулю. На этих
артефактах диагностика рапортовала чужие дефекты.