gmod-rs/docs
Niko Marmeladkov 32bd7c05f2 engine: констрейны — шар, шарнир, ползун, сварка, верёвка
Батч 3, шаг 4. Соединения между телами по классам GMod: phys_ballsocket,
phys_hinge, phys_slider, phys_weld, rope. Плюс add_force (база для
thruster/hover) и set_angular_velocity_target (мотор шарнира).

Главная тонкость переноса: скрипт задаёт якорь в мировых координатах, а
Rapier ждёт локальные в каждом теле. Пересчёт через обратное вращение.
Ошибка не бросает исключение — соединение просто «приклеивается» к другой
точке и уезжает при первом движении.

Четыре вывода из измерений, а не из рассуждений:

1. Констрейн не «стягивает» тела, и это правильно: якорь в мировой точке
   совпадает у обоих тел в момент создания, ограничение выполнено сразу и
   включается, только когда тела расходятся. Пять первых тестов проверяли
   расстояние между телами и падали именно поэтому. Правильный инвариант —
   совпадение ТОЧЕК КРЕПЛЕНИЯ под действием силы.
2. Сила в Rapier действует один шаг и сбрасывается: add_force надо вызывать
   каждый кадр. Тест с однократной силой измерял не силу, а её отсутствие,
   и падал одинаково при 8000 и при 40000.
3. Спящее тело честно сообщает нулевую скорость, поэтому эффект силы
   проверяется сравнением с контрольным прогоном, а не по скорости.
4. ПОЛЗУН НЕ УДЕРЖИВАЕТ. Сустав сообщает enabled = true и 5 заблокированных
   осей из 6, шар/шарнир/сварка в том же прогоне держат, но ползун пропускает
   расхождение по высоте. Тест помечен #[ignore] с причиной: зелёная галочка
   на неработающем коде хуже явного отказа. Гипотеза к проверке записана в
   docs/PARITY.md B2.6.

Тестов 67 в engine (было 56), 23 набора по воркспейсу, clippy чист.
2026-10-13 13:56:47 +03:00
..
ARCHITECTURE.md docs: план Source RS — этапы, архитектура, проблемы, Lua, сеть, разведка 2026-10-11 22:25:36 +03:00
LUA.md docs: план Source RS — этапы, архитектура, проблемы, Lua, сеть, разведка 2026-10-11 22:25:36 +03:00
NETWORK.md docs: план Source RS — этапы, архитектура, проблемы, Lua, сеть, разведка 2026-10-11 22:25:36 +03:00
PARITY.md engine: констрейны — шар, шарнир, ползун, сварка, верёвка 2026-10-13 13:56:47 +03:00
PLAN.md render: вода (SURF_WARP), area-скайбокс с правильным порядком глубины, лайтмапы диспов по UV 2026-10-12 08:28:28 +03:00
PROBLEMS.md docs: план Source RS — этапы, архитектура, проблемы, Lua, сеть, разведка 2026-10-11 22:25:36 +03:00
RECON.md net: добавлен недостающий userinfo-конвар cl_playermodel 2026-10-12 14:51:57 +03:00