Перейти к содержимому


В какую версию Skyrim вы играете?

Примите участие в опросе на форуме, проголосуйте за версию Скарийма, в которую вы играете. Голосовать

Описание Скриншоты

Скачать PrivateProfileRedirector 0.3.1 Протестировано

Ускорение запуска игры (кэширование INI файлов)

* * * * * 10 Голосов
skse skse64 skyrim skyrim se



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

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

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

Исходный код: https://github.com/K...ofileRedirector

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

Несовместимо с MO1



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

LE: PrivateProfileRedirector LE 0.2.0.zip
SE: PrivateProfileRedirector SE 0.2.0.zip
F4: PrivateProfileRedirector F4 0.3.1.zip

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

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


Начиная с 0.3.1:
GetPrivateProfileSectionNamesA
GetPrivateProfileSectionNamesW
GetPrivateProfileSectionA
GetPrivateProfileSectionW


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

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

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

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

Спасибо всем, кто помог проверить плагин, особенно AL12 и Augh.

Что нового в версии 0.3.1 (Посмотреть все изменения)

  • 0.3.1
  • Добавлены функции GetPrivateProfileSectionNamesA/W и GetPrivateProfileSectionA/W. Это должно решить проблему с натсройками MCM некорректным FOV камеры.
  • 0.3.0
  • Добавлена версия для Fallout 4. Консольная команда "RefreshINI" работает и для Fallout 4.
  • Добавлена опция "ProcessInlineComments" для игнорирования встроенных комментариев, в противном случае они будут прочитаны как часть значения.
  • Добавлена опция "TrimValueQuotes" для корректного получения значений таких как: sNegativeDir="enbseries\LUTs\Negative Stock".
  • Исправлен возможный вылет в GetPrivateProfileString когда запрошенный параметр не найден или его дина равно нулю. Это исправление позволяет Creation Club работать, что может быть нежелательно. Выла добавлена опция "DisableCCUnsafeA" для возврата к старому поведению.
  • Функция GetPrivateProfileInt теперь может разбирать числа в шестнадцатеричном, двоичном и восьмеричном представлениях.
  • 0.2.0
  • Добавлена опция "NativeWrite" которая позволяет использовать нативную функцию "WritePrivateProfileString". Используйте её если замечаете, что некоторые файлы неправильно записываются.
  • Добавлена опция "TrimKeyNamesA. Она требуется для некоторых ENB пресетов так как они могут запрашивать свои настройки используя не нормализованные имена параметров, например " CC: Gamma=1.50 " когда ожидается "CC: Gamma=1.50".
  • Добавлена опция "ANSICodePage". Она позволяет установить кодовую страницу для преобразования не ASCII символов во внутреннее представление. Не рекомендуется менять этот параметр.
  • Версия для Special Edition позволяет перезагрузить все INI файлы с диска используя обычную консольную команду "RefreshINI" в дополнение к её стандартной функциональности.


Нажмите, чтобы перейти к просмотру скриншотов…

Какие минуты??!!! вы че???!!! пользуюсь МО загружается скай быстрее чем через стим, установлено 70+ модов, никогда не загружался больше чем 5-10 СЕКУНД. Если у вас минуты загрузки длятся то видимо что то не так ставите через МО. Отличная прога вообще, пробовал и НММ и Врай башь хваленый, лучше чем МО нет мод менеджера, на личном опыте установил. 

Без фанатизма пожалуйста. Для 70 модов и без ENB 5-10 секунд вполне нормально и ничего необычного в этом нет. Для 3 * 70 результат будет другим.

У меня с этим плагином вместо слов квадратики везде, начиная с главного меню и  т.д.

Снес к чертям этот бубен.

Какой мод-менеджер есть есть и какое моды установлены?

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

Имхо, для меня загрузка в 2 минуты - это оче такая весомая причина, чтоб не использовать то, что эту загрузку вызывает.

Даже если это "псевдо-удобный" модменеджер.

Какие минуты??!!! вы че???!!! пользуюсь МО загружается скай быстрее чем через стим, установлено 70+ модов, никогда не загружался больше чем 5-10 СЕКУНД. Если у вас минуты загрузки длятся то видимо что то не так ставите через МО. Отличная прога вообще, пробовал и НММ и Врай башь хваленый, лучше чем МО нет мод менеджера, на личном опыте установил. 

У меня с этим плагином вместо слов квадратики везде, начиная с главного меню и  т.д.

Снес к чертям этот бубен.

    • bermik это нравится

Ну вообще игра может грузить "свободные" БСА.
В инишник их прописать - и нормально. Ванильные архивы скайрима так и грузятся.

Там ограничение на 256 символов для каждого списка. Много архивов так загрузить не получится. MO1 использует специальный хук для увеличения этого предела до 32768.

А если ты сам создал кучу свободных BSA, то ты сам себе злобный Буратино.

Ну вообще игра может грузить "свободные" БСА.
В инишник их прописать - и нормально. Ванильные архивы скайрима так и грузятся.
Просто в МО1 порядок архивов отвязан от порядка плагинов. Можно иметь [1.esp и 1.bsa] и [2.esp и 2.bsa]. Во всех мод-менеджерах если поставить 2.esp после 1.esp, то 2.bsa будет перезаписывать 1.bsa. А в МО1 можно поменять архивы местами, не трогая плагины, и 1.bsa будет перезаписывать 2.bsa. Это возможно благодаря парсингу архивов, для пользователя их условно нет, все ресурсы работают как в loose. Поэтому и bsa могут быть "свободными" - для экономии места в списке плагинов, например. Поэтому же архивы могут перезаписывать loose-файлы. Кому-то это нужно, кому-то нет, но для достижения такого функционала в МО2 или Кортекс действительно нужно распаковывать bsa.

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

Не при какой нормальной ситуации у тебя не будет свободных BSA чтобы использовать эту функцию MO1. Если у мода есть свой BSA, то он будет загружен по его же .esp. А если ты сам создал кучу свободных BSA, то ты сам себе злобный Буратино.

Не надо ничего распаковывать. Игрой предполагается что BSA загружается только вместе с ESP и никак иначе и это у всех нормально работает.

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

В таком случае нужно распаковывать каждый бса в игре, иначе они будут загружаться по лоадордеру есп, а не по лоадордеру виртуалки МО и тогда теряется большая часть того смысла, почему вообще люди юзают МО/аналоги.

Не надо ничего распаковывать. Игрой предполагается что BSA загружается только вместе с ESP и никак иначе и это у всех нормально работает.

Без менеджмента BSA можно прекрасно обойтись.

В таком случае нужно распаковывать каждый бса в игре, иначе они будут загружаться по лоадордеру есп, а не по лоадордеру виртуалки МО и тогда теряется большая часть того смысла, почему вообще люди юзают МО/аналоги.

проверил, работает -15. 20 сек на загрузку, ssd  F4 250+ модов, спасибо!

HMM если речь идет о nexus mod manager то не одно и тоже ли это? Такой же файловый менеджер как и все остальные только файлы перезаписывает оригинальные, что очень плохо для меня.

НММ файлы перезаписывает, да.

Но при этом делает бэкапы исходников, так что откатить установку мода - не проблема совершенно.

 

С другими программами в мо у меня никаких проблем не было. 

Ванильные скрипты ты сможешь открыть и компилировать. Создать и скомпилировать новый - тоже.

Но вот со скриптами из модов - уже начнутся проблемы. СК не работает со скриптами, которые не лежат в папке Scripts\Source.

 

Я уж молчу о том, что для работы тех самых "других программ" их надо запускать только через МО. А это лишние клики и время на ожидание запуска МО.

Как раз потому, что я знаю, как работает МО, я его и не использую.

Это осознанный  выбор - и сделан он мной в пользу НММ.

HMM если речь идет о nexus mod manager то не одно и тоже ли это? Такой же файловый менеджер как и все остальные только файлы перезаписывает оригинальные, что очень плохо для меня. Разве нельзя в других менеджерах

 

компильнуть\открыть скрипт в СК

также само? С другими программами в мо у меня никаких проблем не было. 

Тут я имею в виду с точки зрения конечного юзера знаю, как он работает - вся эта система с "внешними" папками, и прочие связанные с ней преимущества и ограничения.

 

В детали я, понятное дело, не лазил, и как там все на программном уровне работает - не разбирался. Не считаю это нужным - ибо для меня это то же самое, что в деталях разбираться в том, как работает, например, фотошоп или холодильник. Ну в самом деле, зачем мне знать, как именно фотошоп рисует пиксели, или как именно холодильник охлаждает продукты, которые в нем лежат? Мне достаточно знать, что с помощью холодильника картинку нарисовать не получится, а фотошоп мороженное холодным не сохранит =)

Логично в общем. Спасибо за ответ.

Чисто из интереса без каких-либо попыток придраться, что именно ты знаешь?

Тут я имею в виду с точки зрения конечного юзера знаю, как он работает - вся эта система с "внешними" папками, и прочие связанные с ней преимущества и ограничения.

 

В детали я, понятное дело, не лазил, и как там все на программном уровне работает - не разбирался. Не считаю это нужным - ибо для меня это то же самое, что в деталях разбираться в том, как работает, например, фотошоп или холодильник. Ну в самом деле, зачем мне знать, как именно фотошоп рисует пиксели, или как именно холодильник охлаждает продукты, которые в нем лежат? Мне достаточно знать, что с помощью холодильника картинку нарисовать не получится, а фотошоп мороженное холодным не сохранит =)

Как раз потому, что я знаю, как работает МО, я его и не использую.

Это осознанный  выбор - и сделан он мной в пользу НММ.

Чисто из интереса без каких-либо попыток придраться, что именно ты знаешь?

Для того что бы не любить МО нужно хотя бы понимать что это, а не говорить о том чего не знаешь. Вряд ли найдется вменяемый человек который зная возможности МО будет вручную все ставить, терять кучу своего времени, создавать кучу папок скайрима с разными модами, каждый раз возится с установкой и переустановкой модов, искать ошибки в кучи папок когда в это время можно удалить проблему в один клик, конечно это намного неудобнее чем загрузка на пару секунд дольше. Я хотел попробовать Kortex но мне тоже не нравится перспектива долгой загрузки модов из за этого даже не пробовал и продолжаю использовать МО потому что разница в пару секунд меня не волнует и псевдо-удобство лучше.    

Как раз потому, что я знаю, как работает МО, я его и не использую.

Это осознанный  выбор - и сделан он мной в пользу НММ.

Да не за что =)

Не люблю МО и прочие подобные ему штуки - главным образом из-за неудобств, которые они вызывают.

Для меня то, что все моды стоят в папке Data неудобством не является, а вот загрузки по 2 минуты, или невозможность компильнуть\открыть скрипт в СК, просто потому что он не лежит в Scripts\Source - это уже неудобства, да еще какие.

Вообщем, такие вот косяки плюсы этих модменеджеров для меня не перевешивают.

Потому и "псевдо-удобный" =)

Для того что бы не любить МО нужно хотя бы понимать что это, а не говорить о том чего не знаешь. Вряд ли найдется вменяемый человек который зная возможности МО будет вручную все ставить, терять кучу своего времени, создавать кучу папок скайрима с разными модами, каждый раз возится с установкой и переустановкой модов, искать ошибки в кучи папок когда в это время можно удалить проблему в один клик, конечно это намного неудобнее чем загрузка на пару секунд дольше. Я хотел попробовать Kortex но мне тоже не нравится перспектива долгой загрузки модов из за этого даже не пробовал и продолжаю использовать МО потому что разница в пару секунд меня не волнует и псевдо-удобство лучше.    

Спасибо за комплимент.

Да не за что =)

Не люблю МО и прочие подобные ему штуки - главным образом из-за неудобств, которые они вызывают.

Для меня то, что все моды стоят в папке Data неудобством не является, а вот загрузки по 2 минуты, или невозможность компильнуть\открыть скрипт в СК, просто потому что он не лежит в Scripts\Source - это уже неудобства, да еще какие.

Вообщем, такие вот косяки плюсы этих модменеджеров для меня не перевешивают.

Потому и "псевдо-удобный" =)

Даже если это "псевдо-удобный" модменеджер.

Спасибо за комплимент.

Что будет на MO я сказать не могу.

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

Имхо, для меня загрузка в 2 минуты - это оче такая весомая причина, чтоб не использовать то, что эту загрузку вызывает.

Даже если это "псевдо-удобный" модменеджер.

HDD у меня. Типичная небыстрая файлопомойка. ЕНБ тоже стоит, да.
Чтоб скай с модами на SSD ставить - это отдельный SSD покупать придется =)
60 гигов только сама папка ская, не считая папку с модами для НММ (это еще 70).
 
Но 2 минуты... Это, конечно, пипей.
Неужели из-за МО\Кортекса так долго загружается?

У меня были записаны результаты. На in-dev версии Kortex 1.3 было так (прямо с Дискорд сервера кусок текста):

First run | Next run (min:sec)
With ENB, no AV: 3:0 | 2:25
No ENB, no AV: 1:15 | 1:15
With ENB, with AV: 9:13 | <n/a> I don't think second run will be any different.
No ENB, with AV: 1:25 | 1:15

AV - это антивирус, конфигурация модов была примерно такая же, VFS тоже не менялась. Сейчас проверил снова. Да, сбрасывает время на минуту с ENB. То есть если смотреть по таблице, то вместо "With ENB, no AV" я получаю "No ENB, no AV" используя при этом ENB. Что будет на MO я сказать не могу.

У меня обычно запускается за ~2 минуты с ENB. С модом примерно за минуту. Моды и сама игра у меня на обычном HDD, около 100 плагинов и с десяток SKSE плагинов. Если у тебя SSD (а особенно SSD на NVMe или PCI-E), то выигрыш будет очень маленький. На Нексусе у многих разница от 3 секунд до минуты. В среднем будет около 10 секунд как раз.

HDD у меня. Типичная небыстрая файлопомойка. ЕНБ тоже стоит, да.

Чтоб скай с модами на SSD ставить - это отдельный SSD покупать придется =)

60 гигов только сама папка ская, не считая папку с модами для НММ (это еще 70).

 

Но 2 минуты... Это, конечно, пипей.

Неужели из-за МО\Кортекса так долго загружается?

Вот ты пишешь, что выигрыш до 10 секунд. Мне интересно, у тебя самого сколько скай загружается? Ну, чисто чтоб порядок величин оценить.

Я у себя проверял так:  второй+ запуск ская (первый после включения ПК обычно несколько заторможенный), закрыты все программы, кроме дискорда и НММ (да, я использую НММ).

Запускал ярлык СКСЕ, запускал секундомер. Как только появлялись строчки меню (загрузить-выход-etc) - секундомер останавливал.

Без твоей программы скай грузился ~31 секунду, с ней ~29.

149 активных плагинов, плюс 43 .dll файла в папке с СКСЕ.

У меня обычно запускается за ~2 минуты с ENB. С модом примерно за минуту. Моды и сама игра у меня на обычном HDD, около 100 плагинов и с десяток SKSE плагинов. Если у тебя SSD (а особенно SSD на NVMe или PCI-E), то выигрыш будет очень маленький. На Нексусе у многих разница от 3 секунд до минуты. В среднем будет около 10 секунд как раз.

Загрузил
Информация
Новые статьи
Последние комментарии Все
  • Какие минуты??!!! вы че???!!! пользуюсь МО загружается скай быстрее чем через стим, установлено 70+ модов, никогда не загружался больше чем 5-10 СЕКУНД. Если у вас минуты загрузки длятся то видимо...
  • У меня с этим плагином вместо слов квадратики везде, начиная с главного меню и  т.д.Снес к чертям этот бубен.Какой мод-менеджер есть есть и какое моды установлены?
  • Al Sin, добавь в архив файл ридми, пожалуйста.Сделано.
  • или нет, т.к. новые интерьеры - это абсолютно новые, отдельные ячейки?Да. Вам придется либо терпеть неудобство, либо отказаться от нашего мода. :)
  • Совместимо с Requiem?

Другие интересные моды




  • 8 430 Всего файлов
  • 204 Всего категорий
  • 637 Всего авторов
  • 13 859 847 Всего загрузок
  • Катаны Горца (Redone). Последний файл
  • sergi111 Последний автор
876 посетителей за последние 15 минут

133 пользователей, 350 гостей, 6 скрытых


Виррант, Yandex (269), Alexa (14), CMS, FeliXon, tesfalo4, wofka, risati, Bing (78), Harmful beetle, WorlDBlooD, alex2001, Implicit90, Alverio, ddfdf, Onikana, Google (20), -MARK-RAGNOS-, dandaseika, rikoshetik, Pro100paiN, Soyer, Panda19, kiraFox999, Cyrein Croin, eiennk17, abkbgrbhrjhjd, Максим99999, Славун, tw3025, Damien, Vergil7714, Dimka82, ammos1992, canismajoris, Blackwolfren1, КillMonger, уткааа, sdaw, Балас, MichaelTesla, Mail.Ru (6), Tigram, asgarott84, agood, ВадимЛяхов, Darkerald, Eve002, sLanguage, PixusRaze8, kavai69rus, Lorental, Miks11432, дрыщ, MIOMI, monty_balrog, SyiWrot, просто русский, Askoldir, Noum1771, kiritaya, fes55555, Vouka 310185, Uryel, Kurskiy, Forest, Rektalo228, Артём Емельяненко, artlik, vilure, Danila158, Volcot, damdaz009, En3rgiiz113, Syper13, asasfd3, STALKERpasitik, Mr. Каджит Рар-Шарх-бел, kosakovitch, Dorenko, Kofe_s_molokom, vovavova8, Rendelll, Artem2356, зшвщк, toscha42, SIMON FRASH, Rybak2, hhfsjgvfbufsbsukibck, Goowernight, knight9, maminsibiryk1984, Romanbog, StrideForge, IlyaICE, Wolzogen, оператор, 777кос_мос777, StefanRipper, themrdeimos, zombiro, Максим7, Siriusteep, DEI'ES, nina90lyauk, accemblep, Odrodl, Nentik, bceleh888, YoongiGod, Dantrag, Izengrimm, MichaelAn, UndeadMad, emplix, SunSun, charizard80, Artoriac adiss, Ilia_Khmelyuk, Мезенцев, dibbuk, An-Karnamir, AndreyMensh, vangok1994, AtropasS, ALPHOVSKY, HMax, Небылица, den543---, karpeev, Yaneko, RomanSnuFF87, Astart1488, Vectorhous, DOOMaq, aronil98, artem991, Gabriel142