О Script Merger на русском

Что такое 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 необходимо запускать каждый раз после установки, обновления или удаления мода.

Leave a comment