С этой темы я начну рубрику баголовства [Под капотом]
Итак, после нескольких дней подкапотного копания, пришёл к выводу, что основная причина серьёзной нестабильности новых модулей RA вызвана не скомпилированными скриптами в .esm-мастерах и проблемами в уровневых списках. В данной теме попробую изложить всю подробную информацию на этот счёт.
Т.к. я более чем уверен, что последние модули были собраны с помощью древнего xEdit 3.0.31, который при больших объёмах данных ломает вообще ВСЁ, от уровневых листов, до айдишников и навмешей. Просьба к @MagnuMspec, перейти либо на стабильную xEdit 4.0.3h, либо на "ночную" 4.1.3h. Главные особенности свежих сборок по сравнению с древней 3.0.31, (которой к слову была выпущена в мае 2015 года), огромные изменения и исправления в работе с игровыми данными, новейшие функции по чистке и поиску ошибок, куча оптимизаций, исправлений с утечками памяти и многое другое. Давайте уже ставить SFW и RA на более современные рельсы, ибо мы топчемся по замкнутому кругу, исправляя одни ошибки и на программном уровне создавая другие.
Возможные связанные темы: #3611, #3672, #3680.
Начнём с того, что установлены абсолютно все модули RA (кроме BTR) и RA-аддоны.
1. NVAC (nvac.log). Каждый вылет сопровождается с записью журнала типа:
26140035 _ LEVELED_ LIST_ERR
26140035 e 0047CF1E C0000005 FalloutNV.exe
Данная ошибка означает, что игра ругается на рекурсивные уровневые списки. Данную ошибку генерирует модуль RA-MoreGear. Решение проблемы: в новой версии xEdit запускаем функцию поиска рекурсивных списков "check for recursive leveled lists".
Далее стабильно получаю следующее сообщение.
NVSE version: 6.24 JIP LN version: 56.34 Base address: 18240000
26140145 ; script 'Expression Error: SYNTAX' (0007691E).
26140145 ; script 'Expression Error: SYNTAX' (0FA7D6E0).
26140146 ; script 'Expression Error: SYNTAX' (0FA7D70B).
26140147 ; script 'Expression Error: SYNTAX' (2203B7E8).
26140148 ; script 'Expression Error: SYNTAX' (1D017858).
26140148 ; script 'Expression Error: SYNTAX' (1D01486A).
26140149 ; script 'Expression Error: SYNTAX' (1D00295B).
26140152 ; script 'Expression Error: SYNTAX' (0500DE11).
26140416 ; script 'Expression Error: SYNTAX' (1EDF3377).
26140419 ; script 'Expression Error: STACKUNDERFLOW' (1E0056E3).
Expression Error: SYNTAX означает ошибку в скрипте, ссылку на неверные данные, либо на не скомпилированный скрипт, на который могут ссылаться другие скрипты.
Expression Error: STACKUNDERFLOW - объект ссылается на плохой NIF или KF.
Теперь по проблемным id.
00 - falloutnv.esm
0F - RA-Worlds
22 - RA-PlayerHomes
1D - RA-Followers
05 - Zeta.esm
1E - RA-Quests
2. NVSE_log (falloutnv_error.log). Здесь тоже в частности происходит очень много интересного, что не просто губит производительность всей сборки в целом, но и приводит к частым вылетам.
По сути, мы имеем сообщение за каждый модуль и аддон, типа:
MASTERFILE: Script 0019EEC8 in file 'Название_модуля.esm' has not been compiled.
И кучу сообщений об ошибках после каждого модуля или аддона.
В качестве примера выкладываю один falloutnv_error.log.
Также некоторые игроки жаловались на нашем Discord-канале, что некоторые логи за 5-10 минут игры генерируют порядка 200 мб логов, после чего отправляют игру в нокаут.
Стоит понимать, что генерация такого объёма ошибок в логах приводит к очень серьёзным просадкам FPS в игре и стабильности в целом, т.к. игра постоянно пытается сослаться к проблемному узлу. И таких обращений может быть сотни, а то и тысячи в секунду.
Можно постоянно вешать обвесы на свой автомобиль, перешивать салон и прочее, но если посыпались двигатель, коробка, подвеска..... Ну вы поняли)
Надо уже наконец-то что-то с этим делать.