В физическом движке есть проблема: при подъеме около 30 градусов и более возникает ошибка в расчете нормали поверхности.
В оригинальном физическом движке существует особенность, превращающая крутой переход дорожной поверхности в вертикальную collision-плоскость. Непосредственно на подъеме для возникновения проблемы также нужна небольшая Vy. Значения -0.3 м/с уже достаточно, поэтому расчеты проводились с этой величиной.
Также существует ложная стеновая реакция при проверке границ трассы.
Границы возникновения проблемы видны на графиках:

На 3D-графике показан процент потери скорости в зависимости от угла подъема. Видно, что после 30 градусов потеря становится довольно ощутимой и сохраняется примерно на одном уровне при различных углах и скоростях.
Рядом приведен отдельный график для 30-градусного подъема.
Скорости около 22 м/с уже достаточно для возникновения проблемы.
На эту проблему меня натолкнул pete9516.
У него есть временный компромиссный патч:
https://www.nfsaddons.com/downloads/nfshs/tools/11480/dynamic-uphill-crash-fix-crash-logger.html
Патч обнуляет три передние точки выборки при расчете коллизий.
Саму проблему он не решает, а просто отодвигает ее возникновение на более высокие скорости, одновременно создавая дополнительные проблемы с коллизиями:

Я попробовал сделать менее разрушительное исправление в uphill_fix.n4p.
Не вдаваясь в длинные рассуждения, суть исправления следующая: сохраняются все точки выборки, а убирается только ложный высотный признак границы.
Пока я не знаю, на что еще это может повлиять. Судя по коду, исправление не должно приводить к регрессиям реальной физики в других ситуациях, но его желательно дополнительно протестировать.
График сравнения оригинальной физики, pete9516-uphill-patch и uphill_fix.n4p:

3D-график для uphill_fix.n4p:

На видео ниже я записал саму проблему и показал, что после исправления физики тот же replay воспроизводится без столкновения с невидимой стеной.
uphill_fix.n4p является частью работы по переносу патчей с прямого изменения EXE-файла на отдельные модули.
На данный момент список патчей пока невелик. Сначала я планирую перенести в новую систему все изменения, которые уже сделал непосредственно в EXE, а затем продолжить исправление ошибок и добавление нового функционала.
Но перед этим сделаю небольшой предварительный релиз с несколькими патчами. Это будет быстрее, чем пытаться сначала довести все существующие изменения в EXE до состояния полноценного релиза.
Сейчас доступны следующие модули:

race_again.n4p — добавляет кнопку "Race Again" в карьерные гонки.
replay_trace.n4p — отладочный модуль для трассировки во время воспроизведения replay.
telemetry.n4p — сбор телеметрии во время гонки.
uphill_fix.n4p — исправление проблемы с крутыми подъемами.
Комментарии
Свернуть ветку от lnikonl за 2026-10-04
I found another problem with this "Dolphin Coaster" while testing the uphill fix.
With the rear-view mirror enabled, the game could crash before even reaching the problematic uphill section. It seems to be caused by some invalid texture-related data in the track. I added an extra check so the game falls back to the normal "no texture" path when the texture pointer is invalid.
Although this isn't directly related to the uphill problem, I've included the fix in
uphill_fix.n4pfor now.I managed to fix the track geometry, so the game no longer crashes when the rear-view mirror is enabled.
Fixing the track geometry itself is probably the more correct approach, so I'm still thinking about whether to keep this check in the patch or make
uphill_fix.n4phandle only the uphill problem.They're really two separate issues. The uphill problem is in the game's physics engine and needs a patch, while the rear-view mirror crash is caused by the track geometry itself.
Войдите, чтобы оставить комментарий и оценить. Войти