Исправление вылетов (рассинхронизация потоков) у SKSE плагинов (HDT)
Это довольно простое решение казалось бы безвыходной ситуации с CTD у HDT плагина. На первый взгляд вылеты у HDT плагина происходят совершенно случайно и спонтанно и это действительно так. Вы не могли отследить причину, как собственно и я. Проблема этого плагина заключается в постоянном спаме в память, так собственно и работают 90% всех плагинов, но даже не сам спам, а то, что в это время плагин зачем-то постоянно пишет данные в лог. Не нужно быть IT специалистом чтобы знать, что команды ввода-вывода на запись-чтение являются просто катастрофически медленными по сравнению с обменом данными процессор-память или ядра-кеш, и SATA3 или M2 ничем совершенно тут не помогут. Дело в том, что когда плагин решает записать новую строку, потому-что он обнаружил нового NPC, на которого решил повесить поддержку физики и решил сообщить об этом всем на свете, он посылает соответствующие команды ОС. И тут начинается праздник. Все знают о невероятной скорости интерфейсов типа SATA3, M2 и пр. Но мало кто догадывается сколько времени уходит на старт записи, на инициализацию: создания потоков, выделение памяти под операцию, опрос готовности железа, кучу обращений через подсистемы, драйвера и пр. прежде чем запись начнется. Специалисты поправят если что. А в этот момент плагину нужно работать и игре тоже нужно работать, а скорости функций там просто космические по сравнению с этим. Но идет не просто создание нового файла с одной строкой, а добавление строки к существующему, а это затягивает (в сравнении с наносекундами) операцию в разы, т.к. системе нужно считать старый файл и добавить строки и произвести записать. Собственно тут и происходит вылет судя по всему. Некая рассинхронизация в потоках происходит, что-то начинается или заканчивается раньше или позже, не дождавшись чего-то. Я не такой специалист в этом.
Решение: запретить плагинам писать логи. У 99% плагинов такая функция жестко прописана в коде и отключение не поддерживается. Поэтому приходится извращаться. Как решение был выбран самый простой вариант: путь и имя лог файла (доступного в HEX редакторе) заменяется одним символом ? являющимся недопустимым знаком для путей и имен файлов. ОС будет игнорировать такой запрос на самом первом этапе работы с таким запросом и не будет запускать инициализацию записи. Вы можете сделать это самостоятельно (см. пример изображения), все остальное забивается нулями.
По главной ссылки плагин HDT. По дополнительной отключение логов для самого SKSE и .dll файлы от распространенных плагинов:
AddItemMenu 3.2
Animation Loading Fix
Armor Rating Rescaled
Barter Fix
Cobb Bug Fixes
Enchantment Reload Fix
Encounter Zones Unlocked
Equip Enchantment Fix
Improvement Names Customized
MoreHUD
NPC AI Behavior Fixes
OSA
PapyrusUtil
Race Menu
Russian Helper
Skyrim Souls
Smart Souls
Unequip Quiver
Which quest's item
Обратите внимание, что так же добавлено "исправление" для файла nioverride.dll, чья версия 3.4.5 вызывает вылеты, в а версии 3.4.4 нет вылетов. Версию nioverride 3.4.4 можно спокойно использовать с версией Race Menu 3.4.5 т.к. она не отличается набором функций.
Обратите внимание так же на эти исправления: раз, два,
Требования:
Вы должны удалить hdtskyrimmempatch, если он у вас есть и у вас установлен ENB и есть расширение памяти SKSE\SSME\OSA. Почему?
Заменить нужные файлы в папке Директория игры\Data\SKSE\Plugins предварительно создав резервные копии старых.
Удаление:
Восстановить свои резервные копии или скачать оригинальные версии.
Требования:
Skyrim LE
HDT плагины
Решение: запретить плагинам писать логи. У 99% плагинов такая функция жестко прописана в коде и отключение не поддерживается. Поэтому приходится извращаться. Как решение был выбран самый простой вариант: путь и имя лог файла (доступного в HEX редакторе) заменяется одним символом ? являющимся недопустимым знаком для путей и имен файлов. ОС будет игнорировать такой запрос на самом первом этапе работы с таким запросом и не будет запускать инициализацию записи. Вы можете сделать это самостоятельно (см. пример изображения), все остальное забивается нулями.
По главной ссылки плагин HDT. По дополнительной отключение логов для самого SKSE и .dll файлы от распространенных плагинов:
AddItemMenu 3.2
Animation Loading Fix
Armor Rating Rescaled
Barter Fix
Cobb Bug Fixes
Enchantment Reload Fix
Encounter Zones Unlocked
Equip Enchantment Fix
Improvement Names Customized
MoreHUD
NPC AI Behavior Fixes
OSA
PapyrusUtil
Race Menu
Russian Helper
Skyrim Souls
Smart Souls
Unequip Quiver
Which quest's item
Обратите внимание, что так же добавлено "исправление" для файла nioverride.dll, чья версия 3.4.5 вызывает вылеты, в а версии 3.4.4 нет вылетов. Версию nioverride 3.4.4 можно спокойно использовать с версией Race Menu 3.4.5 т.к. она не отличается набором функций.
Обратите внимание так же на эти исправления: раз, два,
Требования:
Вы должны удалить hdtskyrimmempatch, если он у вас есть и у вас установлен ENB и есть расширение памяти SKSE\SSME\OSA. Почему?
Заменить нужные файлы в папке Директория игры\Data\SKSE\Plugins предварительно создав резервные копии старых.
Удаление:
Восстановить свои резервные копии или скачать оригинальные версии.
Требования:
Skyrim LE
HDT плагины
HDT Physics Extensions (2.2 mb)Сервер №1
Набор других dll файлов с отключенными логамиСервер №2
Внимание: Автор данной темы имеет право удалять комментарии пользователей, если комментарии не соответствуют правилам сайта. Если ВЫ как пользователь считаете, что ваш комментарий был удален без каких-либо на то причин и без основания, то можете написать автору данной темы, и спросить, за что был удален ВАШ комментарий, с предоставлением причины удаления, исходя от правил сайта.
и SafetyLoad нужен или не нужен где то читал что не нужен ,
Прошёл месяц, а может и больше, как я поставил этот Фикс себе на "UNP с физикой полный комплект".
Полёт нормальный. Ранее я бегал и сохранялся после каждых телодвижений. А теперь забываю о сохранениях.
Долго бегаю, а потом думаю, надо же сохраниться.
Мне кажется ты попал в точку. Я не знаю как это работает, но вижу что работает офигительно.
Тем более у меня Скайрим весь построен на телодвижухах, не на статике (деревья, цветы, города и прочая муть) А на монстрах, бойнях, беге, скачках, охоте и тд. Он живой. Одних животных наверно тысячи.
И работает на стареньком компе сейчас лучше чем до Фикса. Хотя мой старенький комп может быть и лучше чем новые Ноуты, т.к. всё же машина с кулерами, охлаждением и прочими прелестями. Короче я не Тех.наладчик компов.
Хотел поменять тот свой "UNP с физикой полный комплект" который выставлял на сайте, да что то лень мне суетиться.
Может легче туда дописать пару строк с ссылкой сюда, чтобы они сами себя обслужили. Всё таки там наверно за 50К скачек.
Вобщем СПАСИБО за фикс. По всем критериям и во времени, вроде это он так работает отлично. Ну больше нечему.
Я в отличие от других, сейчас НЕ сую много всякого говна в игру. Раньше сувал, сейчас всё по минимуму. Десятки тысяч монстров и животных, ну всё по минимуму. По Фен-Шую.
Дело в том что он работает с моим "UNP - c физикой полный комплект" и работает как и тот который был ранее.
То есть разницы визуально нет. Как тряслись сиси, так и трясутся.
А вот все вылеты прекратились. Даже вчера провёл в Черноземье целый день, а Черноземье всё таки сыроватая конструкция и то нет вылетов.
Такого не было ранее, тем более на "левых" землях.
Или это так работает hdtphysicsextensionscrashfix.dll ????
Вобщем в двух словах посвяти. Мне это надо знать, чтобы поменять тот свой "UNP - c физикой полный комплект" что на сайте для людей.
Там скачек тысячи. До ума довести да и людям отдать.
Неделю я конечно потестирую. Но нет вылетов. Этого быть не может. Это НОНСЕНС.
hdtphysicsextensions.dll и hdtphysicsextensionscrashfix.dll
А было 5. Ну я конечно понял, что что то поменялось или было удалено, хотя в описаниях и в версии ничего об этом нет.
Короче. Поставил эти два файла. Файл hdtphysicsextensions.dll заменился.
Смотрю сиськотряс работает. Всё что работало, работает.
А играл я сегодня целый день в Готик-Проект Орфей (примочка к Скайриму), а он немного глючноват.
Но всё равно ни ОДНОГО вылета. Я аж офигел. Даже были моменты что ФПС на НОЛЬ и картинка зависает на пару сек, а потом опять 55-60.
Стопарь есть, а вылета то нет.
Оставил эти два файла. Перешёл в Скайрим и посмотрим, ЧО будет завтра.
А пока СПАСИБО. Те 5 файлов и эти 2 это разные вещи.
Если говорить об основном костяке "hdtPhysicsExtensions", состоящем из 3 файлов, то при замене на ваши физика груди и ягодиц немного меняется, видимо это уже зависит от того, какую физику использует сам пользователь - оригинальную или кастомную (я же использовал кастомную). Поэтому пришлось эти три файла откатить (дело вкуса).
С "Animation Loading Fix" у меня банально вылетает игра при попытки произвести загрузку сейва или просто продолжить игру. Сам автор говорил, что увеличил кол-во лимита анимаций, но со скольких и до скольких - не уточняется (если же это уточнение есть в комментариях под его файлом - пожалуйста, но в описании я не заметил). Может это проблема моя, т.к. возможно я использую подобный ему плагин и поэтому происходит конфликт (или же лимит не удовлетворяет мое кол-во анимаций). По крайней мере, вроде как, я использовал этот плагин, но сейчас его удалил (сам искал причины вылетов).
Пока вроде как все стабильно, а там еще посмотрим...
upd: И почему-то у вас используется другой .dll-файл для AddItemMenu, т.к. у версии с Nexus'а нет цифры "2" в файле...
Не буду вдаваться в разглаголы, суть в том, что в 90% случаев 3BBB может и будет требоваться hdtSkinnedMeshPhysics.dll (тот самый SMP)), который в обычных условиях работает через задний проход драугра. И вот именно этому плагину чаще всего и требуется мем патч (на самом деле нет, но это самый простой вариант заставить его работать правильно, а вот разбираться с дальнейшими проблемами уже никому не надо, да)))
На нексусе есть сборка COCO Body (3BBB) с преднастроенной физикой в куче вариантов. Создатель этой солянки реально помешана на "фигуристых" телах и шарит в их производстве И, насколько помню, мем патч у неё отличается от обычного (не буду утверждать)))
Если вдруг поставите, можете покидать её плагины мне? Чисто глянуть на досуге.
DAR и JContainers без логов можете забрать отсюда.
Ах, да, почернение лиц у спутников действительно не связано с мем патчем. Пропади у них волосы с физикой, можно было бы подумать, а так - нет.
На счёт "растягивания" частей тела - если дадите мне все свои плагины с припиской hdt... и с их конфигами (включая те, что могут быть в папке hdtSkinnedMeshConfigs) я смогу подсказать более точную причину такого бага, если там действительно замешана физика, а не кривые меши.