Перейти к содержанию

1 изображение

Информация о файле

Проблема
Проблема, которую пытается решить этот плагин, исходит из того, что в игре используется старая, устаревшая и крайне неэффективная функция для загрузки значений из файлов INI. Эта функция GetPrivateProfileString, реликвия 16-разрядных операционных систем. Но знаете ли вы, что хуже, чем использовать такую ​​функцию? Использовать её сотни тысяч раз. По-видимому, игра использует эту функцию для каждой индивидуальной настройки игры, а это значит, что один и тот же INI-файл открывается и закрывается сотни раз. Что действительно делает это ужасным, так это то, что для каждого включенного плагина игра будет пытаться прочитать все те же настройки из гипотетического INI-файла, который может или не может существовать. Таким образом, вы получаете безумное количество невероятно неэффективных вызовов для каждого включенного плагина. В качестве решения этот мод перехватывает вызовы этих функций и загружает целевые INI-файлы в память, так что каждый последующий вызов для одного и того же INI-файла будет намного быстрее, поскольку он будет считываться непосредственно из памяти и не потребует снова открыть файл с диска.

Количество секунд, на которые этот мод уменьшит время старта игры зависит от количества используемых плагинов, а также от других вещей, использующих INI-файлы, таких как ENB (хотя ENB имеет собственные проблемы с временем загрузки, которые этот мод не может исправить). Его эффект будет в основном незаметным в игре без модов ("ванильной", Vanilla), но с увеличением числа модов сэкономленное время будет увеличиваться. Вы получите 6 секунд на 50 или около того плагинов, до 20+ секунд для 250+ плагинов.

Решение
Когда игра, ENB или что-то еще вызывает GetPrivateProfileString, первый раз этот плагин будет загружать запрошенный файл в память и возвращать требуемые данные. В следующий раз файл не будет загружен, и данные также будут извлечены из памяти. То же самое происходит, когда процесс пытается записать значение в файл. Вместо того, чтобы снова открывать файл, разбирать и сохранять на диск, плагин будет записывать данные в файл в памяти, а затем сохраняет на диск (если разрешено). Также все файлы сохраняются при закрытии игры, если игра не вылетит в процессе выхода.

Исходный код: https://github.com/Karandra/PrivateProfileRedirector
Страницы на Нексусе: Skyrim LE | Skyrim SE | Fallout 4

Требования
LE: SKSE, SKSE Plugin Preloader.
SE: SKSE64, SSE Engine Fixes.
VR: SKSEVR, SSE Engine Fixes.
F4: F4SE, xSE PluginPreloader F4.

Если у вас не последняя версия игры, то на Нексусе вы найдёте версии плагина для старой версии игры.

Несовместимо с Mod Organizer 1.x (MO1)

Установка
Это плагин для xSE, поэтому установите его как и любой другой плагин для xSE. Извлеките архив в папку с игрой или используйте мод менеджер.

Skyrim LE: PrivateProfileRedirector LE 0.6.1 (Runtime 1.9.32).zip
Skyrim SE: PrivateProfileRedirector SE 0.6.1 (Runtime 1.5.97).zip
Skyrim AE: PrivateProfileRedirector AE 0.6.1 (Runtime 1.6.1170).zip
Skyrim VR: PrivateProfileRedirector VR 0.6.1 (Runtime 1.4.15).zip
Fallout 4: PrivateProfileRedirector F4 0.6.1 (Runime 1.10.984).zip
Fallout 4 VR: PrivateProfileRedirector F4VR 0.6.1 (Runtime 1.2.72).zip

Удаление
Используйте мод менеджер или удалите все установленные файлы.

Покрытые функции
GetPrivateProfileStringA
GetPrivateProfileStringW
WritePrivateProfileStringA
WritePrivateProfileStringW
GetPrivateProfileIntA
GetPrivateProfileIntW
GetPrivateProfileSectionNamesA
GetPrivateProfileSectionNamesW
GetPrivateProfileSectionA
GetPrivateProfileSectionW

Настройка
Плагин может быть настроен в собственном INI-файле, каждый параметр описан внутри этого файла.

Вопросы и ответы
Q: Мне действительно нужен этот плагин?
A: Зависит от обстоятельств. Если ваша игра стартует от ярлыка до главного меню за долю секунды, то нет. Если это занимает больше времени, этот плагин может помочь. Сколько времени вы сможете экономить, зависит от количества модов.

Q: Будет ли это работать с MO/NMM/Vortex/Kortex (да, я должна была упомянуть о нём) или любым другим мод менеджером?
A: Он был протестирован с MO2, Vortex и Kortex, и никаких проблем не было обнаружено. Не совместим с MO1 (Mod Organizer версий 1.x). Ожидается, что плагин будет нормально работать и в NMM. Я ничего не могу сказать о совместимости с другими мод менеджерами.

Q: Я установил его, игра вылетает при запуске или как-то иначе не работает или работает не так.
A: Включите детальное ведение лога (LogLevel=6) и воспроизведите проблему. Перейдите в папку Data\\Plugins, найдите файл PrivateProfileRedirector.log, сожмите его архиватором, загрузите его куда-нибудь и разместите ссылку на него в своем отчете о проблеме. Файл журнала может быть больше 100 МБ, поэтому не загружайте его как есть, обязательно сжимайте его.

  • Нравится 66

Обратная связь

Рекомендуемые комментарии



ammos1992

Опубликовано

как узнать что он работает?

Karandra

Опубликовано

Цитата:

как узнать что он работает?

Замерить время запуска игры до установки мода и после него. Или включить лог и проверить появятся в нём какие-нибудь записи (и выключить его потом).

tik20

Опубликовано

Думаю, это ошибка, что в архиве LE порядок папок Data-Plugins-SKSE, по идее последние две должны быть наоборот.

  • Нравится 1
Karandra

Опубликовано

Цитата:

Думаю, это ошибка, что в архиве LE порядок папок Data-Plugins-SKSE, по идее последние две должны быть наоборот.

Да, ошибка. Исправил архив.

SVG

Опубликовано

А обязательно нужен "SKSE Plugin Preloader"? Вроде и без него работает. Время загрузки - минус 2 сек.

Karandra

Опубликовано

Цитата:

А обязательно нужен "SKSE Plugin Preloader"? Вроде и без него работает. Время загрузки - минус 2 сек.

Не обязательно, но в таком случае Redirector не будет работать на полную мощность.

wizmet1_2

Опубликовано

Скачал, установил на ЛЕ, при первом(свежем) запуске игры, от клика по сксе до появления меню проходит секунд 30. Если выйти из игры и запустить повторно, то загрузка до меню проходит секунд за 8. Так и должно быть? То есть, первый запуск всегда будет дольше повторных.

На СЕ, игра до меню грузится за 4 секунды, есть ли смысл ставить?

Karandra

Опубликовано

Цитата:

Скачал, установил на ЛЕ, при первом(свежем) запуске игры, от клика по сксе до появления меню проходит секунд 30. Если выйти из игры и запустить повторно, то загрузка до меню проходит секунд за 8. Так и должно быть? То есть, первый запуск всегда будет дольше повторных.

А до установки как? Но вообще нормально, Windows тоже кэширует данные и последующие запуски обычно проходят быстрее.

Цитата:

На СЕ, игра до меню грузится за 4 секунды, есть ли смысл ставить?

Скорее всего нет.

wizmet1_2

Опубликовано

Цитата:

А до установки как?

Я без этой утилиты не замерял, но скорее всего, примерно так же, может на пару секунд дольше. Но у меня мало модов плюс/минус 50, и без ЕНБ.

Karandra

Опубликовано

Цитата:

Я без этой утилиты не замерял, но скорее всего, примерно так же, может на пару секунд дольше. Но у меня мало модов плюс/минус 50, и без ЕНБ.

Без ENB и при таком количестве модов выиграешь секунд 5 в лучшем случае.

  • Нравится 1
Uniast

Опубликовано

Здравствуйте у меня в меню скайрим перестало быть на русском да и иероглифы с этой утилитой, можете помочь чтобы я понял почему это ?

Karandra

Опубликовано

Цитата:

Здравствуйте у меня в меню скайрим перестало быть на русском да и иероглифы с этой утилитой, можете помочь чтобы я понял почему это ?

Скорее всего ты используешь Mod Organizer 1.x (MO1). Он не совместим с этим модом (что указано в описании).

  • Нравится 1
Uniast

Опубликовано

Цитата:

Скорее всего ты используешь Mod Organizer 1.x (MO1). Он не совместим с этим модом (что указано в описании)

Спасибо что ответили =), а тогда что мне надо использовать чтобы заработало я ведь только и использую MO1 ?

Karandra

Опубликовано

Цитата:

Спасибо что ответили =), а тогда что мне надо использовать чтобы заработало я ведь только и использую MO1 ?

  • Ничего. В MO1 есть подобная оптимизация, хотя и не настолько эффективная.
  • MO2: https://www.nexusmods.com/skyrimspecialedition/mods/6194.
  • Vortex. Новый мод менеджер от Нексуса на замену NMM.
  • Kortex. Мой мод менеджер. Хотя я не рекомендую его прямо сейчас. Лучше подождать новой версии (до которой самое меньшее три месяца).
  • Нравится 1
Uniast

Опубликовано

Цитата:
  • Ничего. В MO1 есть подобная оптимизация, хотя и не настолько эффективная.
Цитата:
Цитата:
  • Vortex. Новый мод менеджер от Нексуса на замену NMM.
Цитата:
  • Kortex. Мой мод менеджер. Хотя я не рекомендую его прямо сейчас. Лучше подождать новой версии (до которой самое меньшее три месяца).

Спасибо большое =)

Dark Soul

Опубликовано

Результат при 2-ой и последующих загрузках - на лицо, использую на СЕ и через МО2.

Я, если честно, не ожидал результата вообще, стоит ~200 модов(около 350-400 если ещё и смердженые учесть)

Есть здесь кнопка расцеловать автора?

  • Нравится 1
Nokreb

Опубликовано

Я пользуюсь Skyrim LE и Kwanon ENB. При загрузке игры с данным плагином версии 0.2 , 0.3.3 экран засвечен и выглядит так, как будто не функционирует часть функции ENB. У меня была подобная проблема,но она была вызвана стимом. Можно ли как-то решить данную проблему ?

Так же заметил, что в главном меню, при выключенном плагине тест с версией енб больше, а если плагин включен ,то шрифт очень мелкий. Тоже и с Skyrim Reload (SKGE) и его внутри-игровым меню.

Karandra

Опубликовано

Цитата:

Я пользуюсь Skyrim LE и Kawanod ENB. При загрузке игры с данным плагином версии 0.2 , 0.3.3 экран засвечен и выглядит так, как будто не функционирует часть функции ENB. У меня была подобная проблема,но она была вызвана стимом. Можно ли как-то решить данную проблему ?

Дай ссылку на ENB, я не могу найти такой.

Цитата:

Так же заметил, что в главном меню, при выключенном плагине тест с версией енб больше, а если плагин включен ,то шрифт очень мелкий. Тоже и с Skyrim Reload (SKGE) и его внутри-игровым меню.

У Skyrim Reload немного отвратный INI файл.

[Main]
WindowedMode = 1
FoV = 90.0
WaterManagement = 1
...

Я не знаю как именно SKGE читает его. Он использует GetPrivateProfile* функции, я это вижу, но что эта хреновина делает дальше я не знаю. Попробуй отключить (установить в 0) опцию "TrimKeyNamesA" в INI файле PrivateProfileRedirector.ini.

  • Нравится 1
Nokreb

Опубликовано

Спасибо за внимание. TrimKeyNamesA не лечит проблему, из SKGE не хочет считывать размер шрифта. Извиняюсь,я ошибся в названии ЕНБ - Kwanon ENB.

Я перебрал мои моды и выяснил ,что hdtSkyrimOIT вызывает "засвеченный эффект" , но, и без него не работает часть функций. К примеру ,некорректно работает функция отражений..По ссылке ниже приложены примеры в скриншотах.

Мой ЕНБ с hdtSkyrimOIT, SKGE и HDTmemPatch ,у него тоже есть .ini - https://yadi.sk/d/tuAl7O2uBqxx5A

Karandra

Опубликовано

Цитата:

Спасибо за внимание. TrimKeyNamesA не лечит проблему, из SKGE не хочет считывать размер шрифта. Извиняюсь,я ошибся в названии ЕНБ - Kwanon ENB.

Цитата:

Я перебрал мои моды и выяснил ,что hdtSkyrimOIT вызывает "засвеченный эффект" , но, и без него не работает часть функций. К примеру ,некорректно работает функция отражений..По ссылке ниже приложены примеры в скриншотах.

Цитата:

Мой ЕНБ с hdtSkyrimOIT, SKGE и HDTmemPatch ,у него тоже есть .ini - https://yadi.sk/d/tuAl7O2uBqxx5A

Я проверил, это баг в плагине при чтении параметров из файла "hdtSkyrimOIT.ini". Я посмотрю что можно сделать с этим, но раньше следующих выходных решения не ожидается если только проблема не будет очень уж простой.

Karandra

Опубликовано

Проблема нашлась быстрее, чем я думал. Файл hdtSkyrimOIT.ini сохранён в кодировке UTF-16, а Redirector не поддерживает загрузку файлов в этой кодировке. Ну теперь поддерживает. Необходимая опция уже включена (SkipByteOrderMark). Проверь.

https://mega.nz/#!cJdixShB!b5hoE_TxX2MhXDV4tBbxb_Miej9KRoecaHR5reKsms4

GoD

Опубликовано

Что с модом что без загрузка более 7 минут ((

Nokreb

Опубликовано

Цитата:

Проблема нашлась быстрее, чем я думал. Файл hdtSkyrimOIT.ini сохранён в кодировке UTF-16, а Redirector не поддерживает загрузку файлов в этой кодировке. Ну теперь поддерживает. Необходимая опция уже включена (SkipByteOrderMark). Проверь.

Цитата:

Спасибо. Сегодня днем протестирую !

Что ж ,тест затянулся тк ,внезапно, перестал работать ЕНБ при любых обстоятельствах. Виной всему оказались новые моды, никак не относящийся к ЕНБ,но добовляющие .dll библиотеку в SKSE. Ваш мод так же добавляет новый .dll и, как с теми двумя, у меня перестает работать часть эффектов ENB,очень странно.

UPD.

Похоже у SKSE есть лимит на загрузку плагинов,около 72, тк выключив несколько старых модов у меня загрузилась игра с рабочим ЕНБ и ранее не работающими модами. Кажется,что лимит меньше 72 ,тк  не каждый плагин при отключении решает проблему.

Теперь HDTSkyrimOIT работает ! Спасибо !

  • Нравится 1
Karandra

Опубликовано

Цитата:

Теперь HDTSkyrimOIT работает ! Спасибо !

Хм, значит можно обновить плагин как полагается.

Цитата:

Похоже у SKSE есть лимит на загрузку плагинов,около 72

Не слышал о лимите на SKSE плагины и не знаю причины по которйо он там может быть. SKSE загружаются в алфавитном порядке, может может в этом была причина.

  • Нравится 1
Nokreb

Опубликовано

Цитата:

Хм, значит можно обновить плагин как полагается.

Цитата:

Не слышал о лимите на SKSE плагины и не знаю причины по которйо он там может быть. SKSE загружаются в алфавитном порядке, может может в этом была причина.

Что-то определенно есть. К примеру, включен Афтрбернер с Риватюнером и ваш плагин - ЕНБ сломался. Выключаю что-то одно и - все работает. Так же при включенных вышеперечисленных плагинов можно выключить ,к примеру: SKGE,Papyrus Extender,HDT Sitting Height Fix или Faster Sleep Wait (SKSE). Так же помогло убрать библиотеку HDTkyrimOIT.dll из енблокала.

Как-то помню не играл долго Скайрим ,но оставил его полностью рабочим. Через полгода включил ,а земля черная ! Обнаружил ,что ЕНБ сломался. Я долго не мог понять причину, пока в один прекрасный день решил попробовать запустить Скайрим без стима! И да,оверлей у меня был выключен. Само присутствие стима в процессе запуска игры ломало ЕНБ схожим образом. А теперь, если я  пытаюсь запустить Скай через стим , у меня выскакивает ошибка инициализации рендера !  Может если не ограничение СКСЕ ,то есть какие-то ограничения по количеству инжектов в сам процесс ? Это, наверное , едиственное ,что их объединяет.

SKGE все еще не загружает размер шрифта со своего ини.На заставке скайрима  и внутриигровом SKGE меню шрифт очень мелкий


Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
×
×
  • Создать...