Что такое Script Merger и с чем его едят.
Script Merger by AnotherSymbiote — это утилита для устранения конфликтов между скриптовыми и xml модами путём объединения конфликтующих файлов в один.
Даже очень разные моды могут менять один и тот же исходный файл (игровой скрипт или файл с описаниями предметов), но в совершенно разных местах. Движок Ведьмака 3 не очень приспособлен для работы с модами и в случае конфликта он просто использует тот файл (скрипт или описание), который загрузится первым. Все изменения другого мода при этом будут потеряны: в лучшем случае это приведёт к ошибкам компиляции и игра откажется запускаться, а в худшем — игра запустится, но какие-то из модов будут работать неправильно.
До появления Script Merger конфликты между модами игроки устраняли вручную, сравнивая различные скрипты и xml в текстовом редакторе или WinMerge и прочих подобных программах. Практически, для рядового пользователя, не разбирающегося в программировании, установка более одного мода была мучительной и долгой задачей.
Script Merger использует утилиту kdiff3 для сравнения исходного (ванильного) и нескольких модифицированных файлов и объединения всех изменений в один файл. Объединённый файл помещается в специальный “мод” (mod0000_MergedFiles), имеющий наивысший приоритет, который затем используется игрой как основной — все остальные файлы с таким же именем игнорируются.
Окно программы:
Для установки Script Merger’а его надо скачать с Нексуса и распаковать содержимое архива в любое удобное место, например, “D:\Witcher-3-Modding\Witcher-3-Script-Merger\”. Не надо устанавливать мержер в “Program Files” или в другие системные папки! Можно установить его в папку с игрой и даже в папку с модами, но лучше, всё-таки завести отдельную от всего папку для утилит.
После распаковки необходимо запустить файл “WitcherScriptMerger.exe” и указать путь к игре:
Далее, рекомендуется открыть “Меню -> File -> Dependency Locations” и убедиться, что все вспомогательные утилиты у вас присутствуют (пути должны быть зелёными):
Следующий шаг — настройки, которые расположены в “Меню -> Options”:
- “Show Status Bar” — статусная строка в самом низу окошка, рекомендуется включить.
- “Merging…” — рекомендуется отключить всё, чтобы ускорить процесс объединения, особенно, если в программировании и моддинге вы особо не разбираетесь — всё равно эти сообщения не будут вам полезны. Однако, если что-то ломается и вы не можете понять, почему программа не объединяет ваши моды, все галочки, кроме “Review Each Merge”, рекомендуется включить. “Review Each Merge” имеет смысл включать, если вы разбираетесь в моддинге и желаете лично проверять все объединения, даже те, которые прошли нормально на автомате.
- “Refreshing Conflicts” — включить всё, кроме “Check Non-Bundled XML Files” — эта фича программы НЕ работает и является постоянным источником недопонимания! В подменю “Auto-Collapse Tree If…” рекомендуется всё отключить, чтобы не было проблем с “потерявшимися” конфликтами.
В окошке “Conflicts” отображаются найденные конфликты, кнопка “Refresh” обновляет окошко.
Аналогично, в окошке “Merges” отображаются объединённые моды, кнопка “Refresh” обновляет окошко.
Ветка “Scripts” показывает конфликты в игровых скриптах. Для их устранения (объединения модов) необходимо выделить соответствующий файл (или все скрипты сразу) и нажать кнопку “Create Selected Merge” внизу:
В случае успешного объединения появится вот такое окошко:
Если объединяется несколько модов, то и окошек будет несколько — они будут появляться последовательно, после того, как вы нажмёте “OK”.
Если же программа не смогла устранить конфликты самостоятельно — запустится kdiff3, где вам предложено будет устранить конфликты вручную.
Ветка “Bundled Text” объединяется аналогично, но объединение занимает больше времени, т.к. необходимо распаковывать и запаковывать файлы (бандлы).
Ветка “Bundled Non-text — Not Mergeable” носит чисто информационный характер: вы можете увидеть конфликты между, например, текстурами, но объединить их не сможете — в этом случае или решайте, какой мод вам важнее, или обращайтесь к инструкции/автору — часто, например, для модов меню, авторы предоставляют специальные файлы совместимости под конкретные моды.
Иногда автор мода рекомендует установить конкретный приоритет при использовании его/её мода с другими модами. Например, при использовании Ghost Mode и Preparations первый должен иметь больший приоритет.
Установка приоритета делается в контекстном меню, которое вызывается при клике правой кнопкой мыши на названии мода — не важно, в каком именно дереве, важно только выбрать правильный мод:
Установка приоритета “1” заставит мод загружаться самым первым:
По-умолчанию, игра загружает моды в алфавитном порядке, поэтому альтернативный способ ручной установки приоритета заключается в переименовании мода. Например, если вы хотите, чтобы мод “modNotSoCoolMod” загружался перед “modAVeryCoolMod“, переименуйте “modNotSoCoolMod” в “modAAANotSoCoolMod” или же переименуйте “modAVeryCoolMod” в “modZZZAVeryCoolMod“. Заморочено? Тогда используйте Script Merger 😉
Для удаления объединений надо выделить соответствующий файл (или всю ветку) в правом окошке и нажать “Delete Selected Merge”:
Ещё одна полезная фича — возможность открыть объединённый файл в редакторе: для этого кликните правой кнопкой мыши на объединённом файле в окошке справа и выберите “Open Merged File”:
Следует помнить, что Script Merger — это не панацея и всё зависит от автора мода и того, насколько он/она позаботились о возможных конфликтах. Кроме того, некоторые моды просто невозможно объединить: если вы пытаетесь установить, например, два принципиально разных мода на алхимию, не жалуйтесь, что объединение не работает — моды эти вполне могут менять одни и те же скрипты/описания, но по-разному.
Также следует помнить, что Script Merger необходимо запускать каждый раз после установки, обновления или удаления мода.