Barotrauma

Barotrauma

Not enough ratings
Мод Лоудер WIP
By Cain
Руководство о том, как работать с этим куском кода
   
Award
Favorite
Favorited
Unfavorite
Введение
Что такое Mod Loader?
Mod Loader - это утилита, которая поможет вам навести порядок в модификациях. Она показывает, как моды взаимодействуют друг с другом, какие перезаписывают другие и на что завязаны зависимости. Если вы когда-то пытались понять, что за чем должно идти, и почему одни моды конфликтуют с другими это может помочь вам.

Ссылка на проект на GitHub[github.com]
Ссылка на скачивание последнего релиза[github.com]

Зачем нужен Mod Loader?
Mod Loader пытается решить проблему недостаточной гибкости при работе с большой сборкой модов, анализируя установленные моды и показывая, какие из них переписывают что именно. Теперь, если вдруг что-то не так, вы сможете легко разобраться, какие моды нужно переставить.

Основные возможности
  • Проверка конфликтов: Вы видите, какие моды переписывают какой контент другого мода.
  • Сортировка по зависимостям: автоматически выставляет порядок загрузки, данная автоматизация учитывает только внешние зависимости. Порядок перезаписи остаётся на усмотрение вас
  • Дополнительные функции для Barotrauma: автоматическая установка Lua и пропуск заставки при запуске игры.
Для игроков
Как запустить это чудо инженерной мысли?

Или вы идёте архив под свою ОС отсюда[github.com], распаковываете в любое удобное место и радуетесь. Просьба учитывать что данный исполняемый файл может заставить ваш антивирус среагировать на него. Если не доверяете исполняемым файлам - качайте репозиторий, смотрите код и запускайте самостоятельно.

ИЛИ! Или же в ручную качать и запускать

Для начала вам понадобится установить следующее:

Теперь всё просто. Откройте консоль в удобной для вас папке
win + r для пользователей Windows, для Linux и так знают

и клонируйте репозиторий командой:

Далее, заходите в папку с проектом и запускайте:
  • Для Windows:
    run_app.bat
  • Для Linux:
    run_app.sh
Для Linux-пользователей — не забудьте про chmod +x перед запуском

Вот и всё! После каждого обновления с помощью git pull находясь в папке приложения желательно удалить папку .venv, чтобы все зависимости обновились корректно.
Для мододелов
Я мододел, какое мне дело до этого?
Самое прямое! Вам меньше усилий пройдётся прилагать чтобы сказать что работает, что не работает, что конфликтует, а что опциональная зависимость.

Вы можете добавить свой мод в базу данных Mod Loader даже не вливая ничего в основной репозиторий. Конктретно - вам необходимо добавит в корень модификации файл metadata.xml
Пример можно посмотреть в форке нейротравмы[github.com]

То есть структура будет примерно такой:
  • mod/
    • filelist.xml
    • metadata.xml
    • dir_1/...
    • dir_2/...
    • dir_in_dir/
      • file_3.some
      • ...
    • file_1.some_extension
    • file_2.some
    • ...

А если мой мод уже указан в внутренней библиотеке?
Если ваш мод уже присутствует во внутренней библиотеке, вы всё равно можете создать файл metadata.xml. В этом случае приоритет будет у информации из вашего файла metadata. Если хотите, можете создать запрос на удаление вашего мода из внутренней библиотеки на гите (хотя необходимости в этом, скорее всего, нет).

А что я могу указывать в metadata.xml ?
Если коротко - тут смотреть[github.com]
Ещё примеры можно найти тут[github.com], но не советую смотреть в auto_pars, там страшно.
xml структура упрощённая
<?xml version="1.0" encoding="UTF-8"?> <metadata> <meta> <author>Ваше имя в Steam здесь!</author> <!-- Уникальный идентификатор мода; формат — ВашеИмяБезПробелов.НазваниеМода --> <id>AuthorsName.SomeUniqueId</id> <!-- Лицензия, если требуется (этот элемент можно удалить) --> <license>Тип лицензии здесь</license> <!-- Предупреждение, отображаемое в программе. По сути, это комментарий от разработчика к своему пакету. Например, WIP или что-то другое --> <!-- <warning>Убедитесь, что совместимые моды установлены.</warning> --> <!-- Сообщение об ошибке, отображаемое в программе. Похоже на предупреждение, но выделено красным. Например, если вы больше не хотите работать над модом, но хотите пометить его как устаревший и нерабочий --> <!-- <error>Загрузка мода не удалась из-за несовместимости.</error> --> </meta> <dependencies> <!-- НЕ УКАЗЫВАЙТЕ ID, ЕСЛИ ВЫ НЕ УВЕРЕНЫ, ПРОСТО ПРОПУСТИТЕ --> <!-- Патч: Моды, которые должны быть загружены ПОСЛЕ вашего мода. Ваш мод будет перезаписывать их содержимое при конфликте. ПОЛЯ: name - Обязательно (название мода в filelist.xml) steamID - Необязательно (уникальный Steam ID) ID - Необязательно (уникальный ID мода в формате AuthorName.ModID) --> <patch name="Название мода в filelist.xml" steamID="123" ID="AuthorsName.SomeUniqueId" /> <!-- Требование: Моды, которые должны быть загружены ДО вашего мода, так как они содержат необходимые компоненты для вашего мода. ПОЛЯ: name - Обязательно (название мода в filelist.xml) steamID - Необязательно (уникальный Steam ID) ID - Необязательно (уникальный ID мода в формате AuthorName.ModID) --> <requirement name="Название мода в filelist.xml" steamID="123" ID="AuthorsName.SomeUniqueId" /> <!-- Необязательное требование: Моды, совместимые с вашим модом, но не обязательные для работы. Эти моды могут улучшить функциональность, если установлены, но не являются обязательными. ПОЛЯ: name - Обязательно (название мода в filelist.xml) steamID - Необязательно (уникальный Steam ID) ID - Необязательно (уникальный ID мода в формате AuthorName.ModID) --> <optionalRequirement name="Название мода в filelist.xml" steamID="123" ID="AuthorsName.SomeUniqueId" /> <!-- Необязательный патч: Похож на необязательное требование, но будет перезаписан вашим модом при установке. Эти моды могут предоставить дополнительные функции, не влияя на основную функциональность вашего мода. ПОЛЯ: name - Обязательно (название мода в filelist.xml) steamID - Необязательно (уникальный Steam ID) ID - Необязательно (уникальный ID мода в формате AuthorName.ModID) --> <optionalPatch name="Название мода в filelist.xml" steamID="123" ID="AuthorsName.SomeUniqueId" /> <!-- Конфликт: Моды, несовместимые с вашим модом. При установке они вызовут предупреждение или ошибку для пользователя. Необязательные атрибуты message и level позволяют указать детали конфликта. ПОЛЯ: name - Обязательно (название конфликтующего мода в filelist.xml) steamID - Необязательно (уникальный Steam ID) ID - Необязательно (уникальный ID мода в формате AuthorName.ModID) message - Необязательно, по умолчанию="Несовместимые модификации" level - Необязательно, может быть "warning" или "error", по умолчанию="error" --> <conflict name="Название мода в filelist.xml" steamID="123" ID="AuthorsName.SomeUniqueId" message="Обнаружен конфликт" level="warning" /> </dependencies> </metadata>
FAQ
Тут я просто предсказываю вопросы которые могут возникнуть
Q: Поддерживается MacOS?
A: Фактически я не делал поддержку MacOS. У меня его нет, а пилить без багфиксо>

Q: Зачем это?
A: Мне не нравится текущая система менеджмента модов. Хочу чтобы было лучше. Во>

Q: У меня проблема с X, что мне делать?
A: Обратиться ко мне в дискорде(Я есть на официальном сервере [barotauma|Luatra>

Я ещё буду добавлять ответы вопросы если будут частые однотипные вопросы