Модифицируем Anno 1800, краткий гайд
Да, у этой игры тоже есть коммьюнити которое занимается моддингом, а структура у игры невероятно простая для редактирования даже без знания языков программирования. Правда в предыдущих частях серии с этим было немного проще.
Список необходимого для старта
Первое и самое главное - mod loader (ссылка на github проекта). Он позволяет загружать свои моды из директории mods в корне игры. Пример устройства мода можно взять на nexusmods.
Второе - rdaexplorer (github). Данный софт позволяет распаковать игровые архивы.
Assets Viewer (github) - помогает просматривать id предметов, зданий и различных групп без открытия xml напрямую.
Третье можно скачать, но не обязательно - это лаунчер для модов что-то вроде mod organizer 2 который используется игроками в Анно (github) для запуска игры.
Для ленивых есть визуальный редактор (часть интерфейса на немецком, можете автору помочь с переводом) - ссылка на nexusmods. Интерфейс тяжеловат, но имеет очень много функций для тех, кто не желает разбираться с xml структурой данных игры.
Для открытия и поиска по огромным xml файлам я использую firstobject, а VS Code для редактирования своих минимодов и локализации других.
Коротко о структуре файлов
Вся основная информациия о всех игровых предметах, зданиях и прочих объектах хранится в огромном assets.xml по пути data\config\export\main\asset\assets.xml.
С каждым новым контентным дополнением обычно в игру добавлялся новый rda архив в котором данный файл и изменяется. На данный момент чтобы получить полный список всего что есть в игре нужно смотреть этот файл из архива data23.rda. В директориях формата dlc01 обычно хранятся анимации, модели, текстуры и прочие ресурсы. Однако если старые механики получают обновления, то и старые архивы обновляются тоже.
Для редактирования моделей при желании умельцы сделали конвертер из проприетарного rdm в glTF (ссылка на github)
data\config\gui содержит файлы локализаций для 11 официальных языков.
Создание простого мода
Начнем с начала. После создания новой директории в Anno 1800\mods там желательно создать файл modinfo.json c содержимым
Затем нужно создать директории data\config\export\main\asset и файл assets.xml с содержимым.
Внутри тега ModOps и будет происходить непосредственно работа с игровыми обьектами.
Теперь ознакомимся с тем, как работает сам mod loader и формат xml.
Так как все что есть в игре представлено в виде огромного xml дерева с определенными тегами, редактирование чего-то в игре будет заключаться поиском нужного обьекта в assets.xml основной игры и описанием желаемых изменений в этом дереве тегов.
Например: добавим какому-нибудь старому предмету (возьмем Погружатор mk3 от Нейта) возможность работать с новыми химическими заводами, наш assets.xml будет выглядеть так:
Теперь детально опишу что тут происходит.
Каждое изменение которое вносит наш мод в игру декларируется тегом <ModOp />. GUID - это id объекта который мы хотим изменить.
Если нужно добавить какое-нибудь здание или новую цепочку производства это будет новый guid (они ни в коем случае не должны повторяться, только уникальные id, иначе никак, обычно сообщество использует id начиная с 1400000000 или 1500000000).
Type описывает действие, которое необходимо произвести с xml деревом по определенному пути Path начиная с корневого элемента обьекта. Path работает полностью в соответствии с XPath, поэтому опыт работы с ним очень поможет.
Все возможные действия описаны в документации к мод лоадеру, но используют обычно всего 2:
- Add - добавляет все из ModOp по указанному пути. Данный механизм очень удобен для модификации существующих предметов так как не ломает совместимость с другими модами.
- Replace - полностью заменяет все содержимое элемента на указанное в ModOp, если используются другие моды то стоит отнестись к данной функции с осторожностью.
Так как предмет представлен таким xml содержимым:
То в результате описанных выше действий мы добавляем в Values\ItemEffect\EffectTargets новый элемент, который сам по себе является id группы обьектов, описывающих все здания, являющиеся химическими заводами.
Пример посложнее
Возьмем за него один из модов, добавляющий в продажу торговцу в Арктике газ и скрап в небольшом количестве
В первой части изменений ModOps выбирается id арктического торговца, затем в ноде Trader/Progression ищутся все названия xml-элементов из скобок, у них выбирается нода GoodsProduction и добавляется автоматическое пополнение газа и скрапа по 0.5 тонны в минуту.
Во второй части этому же торговцу уже непосредственно в список доступных товаров для продажи добавляется газ и скрап иначе он будет его просто производить, но в окне продажи его не будет. (Например Нейт из дополнения с Мысом Треллони сам может производить скрап любого качества и продавать игроку если в портах будет стоять на него запрос, правда с ограничением на одну сделку).
На число элементов ModOp в одном моде ограничений каких-либо нет, однако вместо солянки разных вещей все таки лучше разделять моды по категориям.
Upd. Локализация
Самое главное наверное еще, переводы. Все переводы игры содержатся в таком же гигантском xml файле по пути config\gui\text_langname.xml
Формат крайне простой, это коллекция нод GUID + Text где содержится перевод на нужный язык. При переводе модов я обычно руководствуюсь поиском по этому GUID среди ассетов чтобы понимать контекст. Пусть большинство из авторов модов и немцы, но английский вторым переводом они чаще всего добавляют, а там не всегда понятно что имелось ввиду.
И насчет переводов стоит заметить один нюанс, что если название или описание копирует какой-либо предмет, хорошим тоном будет не копировать его описание, а вставить вместо текста Asset(GUID), где вместо guid использовать id обьекта.
Совместимость с сохранениями
Отдельно стоит отметить то, как модификация игры работает с сохранениями. Благодаря структуре игры модификации не ломают сохранения если это связано с редактирование ассетов, даже новых цепочек производства или уникальных зданий, привязанных к условиям числа жителей\какого-нибудь открытия, привязанного к региону. Именно поэтому при выходе обновлений от самих разработчиков выход DLC позволяет включить его в старом сохранении и продолжать играть.
В заключение
Если вам интересно, например, как можно добавить какое-либо новое здание или производственную цепочку, то очень советую посмотреть nexusmods где это уже реализовано. В этом моде (ссылка на нексус) автор сделал небоскребы для рабочих, угольные электростанции и много чего еще интересного. Отлично подойдет для более подробного ознакомления с изменением игры, описывать там пришлось бы очень много всего. Да и для игры этот набор модов могу порекомендовать, очень качественный.
За контент по Анно всегда плюс.
Когда игру доделают, попробую дополнительно поиграть с модами — сравнить впечатления.
Спасибо за статью!
Комментарий недоступен