Мод «DefLoadCache» для Rimworld (v1.6)

Дата
14.05.26
Просмотров
90
Версия
13.04.26

DefLoadCache кэширует результаты загрузки XML-файлов определений и применения патчей в RimWorld, поэтому при повторном запуске с тем же списком модов пропускаются два самых медленных этапа запуска.


При списке из 414 модов это сокращает время запуска с ~9 минут до ~2:40 после первого запуска.


Как RimWorld загружает моды

При запуске RimWorld с модами процесс загрузки проходит через ряд этапов. Вот некоторые из них, относящиеся к загрузке Def:

  • Поиск модов — сканирует папку Mods/ и мастерскую Steam на наличие активных модов.
  • Загрузка сборки — загружает DLL-файлы каждого мода.
  • LoadModXML — считывает в память все файлы Defs/*.xml из каждого мода.
  • CombineIntoUnifiedXML — объединяет весь проанализированный XML-код в один XML-документ.
  • ApplyPatches — выполняет проверку каждого файла Patches/*.xml с помощью XPath на соответствие единому документу.
  • ErrorCheckPatches — проверяет успешность установки патчей.
  • ParseAndProcessXML — преобразует XmlNode в типизированные объекты Def.
  • ResolveReferences — связывает перекрестные ссылки.
  • Загрузка текстур, звука, строк — Unity загружает ресурсы мода.

В списке из 414 модов этапы 3 и 5 (LoadModXML + ApplyPatches) занимают около 6 из 9 минут. Кроме того, при каждом запуске они дают одинаковый результат, если ничего не менять.


Что делает DefLoadCache:

DefLoadCache пропускает этапы 3, 5, 6 и 8 при запуске с попаданием в кэш. После первого обычного запуска он сериализует полностью пропатченный XmlDocument на диск, а затем при последующих запусках возвращает кэшированный документ обратно вместо повторного чтения файлов и повторного запуска патчей.

Кэш автоматически аннулируется при изменении любого содержимого def. Для каждого файла в папках Defs/, Patches/, Assemblies/ и About.xml каждого мода вычисляется отпечаток SHA-256. Любое изменение на уровне байтов в любом из этих файлов меняет отпечаток и принудительно запускает пересборку. Добавление, удаление, изменение порядка модов, изменение версий, обновления RimWorld и пересборка DLL-файлов запускают пересборку.

Этапы, которые по-прежнему выполняются при каждом запуске независимо от состояния кэша: загрузка текстур/аудио/строк, ParseAndProcessXML, ResolveReferences, патчинг Harmony и статические конструкторы. Это объясняет оставшиеся примерно 2:40 минуты времени запуска, которые остаются после попадания в кэш.


Производительность:

Измерения проводились на наборе модификаций Combat Extended milsim из 414 модулей:

  • Первый запуск (создание кэша): ~9:10 — обычная скорость плюс несколько секунд на сериализацию
  • Последующие запуски (попадание в кэш): ~2:40 — на 71% быстрее
  • Размер кэша на диске: ~7 МБ

При любых изменениях (добавлении, обновлении, удалении, изменении порядка) при следующем запуске примерно через 9 минут выполняется полная пересборка, и цикл начинается заново.
Наибольшую выгоду получают SSD-накопители и 16 ГБ оперативной памяти и более. Более старое оборудование также работает, но прирост производительности невелик, поскольку чтение из кэша конкурирует с другими операциями ввода-вывода на диске.


Когда использовать DefLoadCache, а когда MissileGirl?

MissileGirl — это комплексный пакет для повышения производительности. Он включает в себя Gagarin (кэширование XML-определений), RocketMan (кэширование статистики/объектов), Soyuz (регулирование тиков пешек), Cosmodrome (оптимизация патчей) и кэш текстур. Если вам нужен один мод, который решает множество проблем с производительностью одновременно, MissileGirl, как правило, является более предпочтительным выбором. Он делает больше, чем DefLoadCache.

DefLoadCache фокусируется на одном: конвейере XML-определений. На этом этапе он пересекается с Gagarin, поэтому запуск обоих избыточен. Остальные подсистемы MissileGirl (кэширование статистики, регулирование пешек, кэш текстур) не затрагивают загрузку XML и могут работать вместе с DefLoadCache без проблем. Вы можете использовать только один из них. Если вы предпочитаете другие возможности MissileGirl, пожалуйста, используйте MissileGirl.

Выбирайте DefLoadCache, если:

  • Вам нужно только кэширование XML без более масштабных изменений, вносимых MissileGirl в статистику, время жизни персонажей, патчи и текстуры. Меньшая площадь поверхности означает меньше точек взаимодействия с другими модами.
  • У вас возникли проблемы совместимости с подсистемами MissileGirl, не использующими XML.
  • Вам нужно, чтобы кэш сохранялся до тех пор, пока ничего не меняется. Gagarin автоматически удаляет свой кэш через 2 дня, даже если список ваших модов не изменяется; DefLoadCache этого не делает.

Для работы мода требуется:

Мод проверен на версии игры: 1.6

Установка мода

Для того, чтобы установить мод для игры Rimworld необходимо скопировать папку из скачанного архива по пути Путь к установленной игре\Rimworld\mods и включить мод в меню.

Рекомендуем ознакомиться с полным руководством на тему: "Как установить моды для Rimworld?"

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

ТОП группа по RimWorld

Помощь по игре и масса полезного контента. Подписывайся!

15:01

@.@ я думал это и так в игре используется… думал раз в римке интерфейс говно то хоть с оптимизацией норм… но видимо люденовцы вообще хер клали на игру. Спасибо

Загрузка...