Анатомия игры: реверс-инжиниринг на службе мододелов или как замодить игру на примере Elden Ring и не только. Часть 2

c8f2a7e68fbf0ebe4acf665cb96594d4.png
Мод, заменяющий модельку Волка из Sekiro на драконида-альбиноса. Мой

Продолжаем тему фанатских модификаций игр. В прошлый раз мы познакомились с понятием «моды», рассмотрели их классификацию и попробовали самостоятельно сделать мод-перекраску для TES V: Skyrim и игр Souls-серии.

Сегодня на очереди моды-реплейсеры или замена моделей внутри игры на альтернативные.

Автор статьи настоятельно не рекомендует как-либо вмешиваться в структуру и работу файлов той или иной игры. Это может привести к сбоям в работе самой игры, срабатыванию систем типа античит и потере лицензии на использование и обслуживание игры.

9pz81199qn8efywowe5_tthryc0.png

▎Делаем реплейсер модели

 
В прошлый раз мы делали ретекстур — замену окраски модели путем замены цветовых текстур. В этот раз мы будем менять модель.
Дело в том, что в игре все живые существа, а так же нежить и призраки, поделены на расы. Но не в привычном смысле (раса нордов, имперцев, аргониан, каджитов, данмеров и т.п.), а в сугубо геймдизайнерском. 

66784ca1aa475e8dac3b409c269d65a0.png
Каждая из этих папок содержит свой скелет для анимаций.

Каждая раса в игре имеет свой скелет (свой риг) и собственный набор анимаций. Раса драконов, раса оленей, раса грязекрабов, раса хорхеров и так далее. А вот разные внутриигровые расы людей, как ни странно, делят один скелет между собой, только с разными настройками. Скелет аргониан и каджитов же отличается от людского только дополнительными костями для хвоста. 

8ab66359c5b01ff67a69d85e886025d2.png
   Скелет для человекоподобных моделей.

Впрочем, если учесть наличие особых скелетных групп моделей, готовить реплейсеры становится даже проще. Отчасти. Проблемы начинаются в момент загрузки скелета для риггинга и при адаптации неподходящий моделей. Но об этом в другой раз.

Примечание
При большом желании и наплыве креатива можно натянуть на базовые скайримские скелеты практически что угодно. Яркий пример — Mikhail«s Monster mods, добавляющий множество весьма экстравагантных существ в игру. Ну либо можно ухитриться и, немного поиграв с пропорциями, адаптировать модельку из другой игры.

               27f8d4275ce6460cde2604e02a459175.gif

               37cc4f52588daf1debfb2fa6d95d9cea.gif

Драконы из Dark Souls PDTE, которых я (не без помощи более опытных людей) адаптировала под скелеты скайримских драконов. Если с рукокрылой красной виверной особых проблем не возникло, хотя и пришлось изменить длину шеи и хвоста и исправить размер головы и крыльев, то с четырехлапым Каламитом пришлось повозиться. В конце концов, было решено просто поджать передние лапы, оставив их без движения. 

               60d6fd2f0d46ac7eab2a72dba643a570.gif
                     Иначе получилось бы криво, как здесь.


В прошлый раз мы использовали вот такой набор тулов:

  • BSA extractor — для распаковки архива Textures.bsa
  • DDS-plugin для Adobe photoshop CS5–6
  • Irfranview с плагином DDS — для чтения, просмотра и экспорта dds-текстур. Это не обязательная программа.


Набор инструментов для модов-реплейсеров моделей в Скайрим пополняется следующими:

  • Nifskope — программа просмотра (viewer) моделей в nif-формате. Без неё нам никак не обойтись, если мы хотим настроить нашу замену правильно. 
  • Nif importer — плагин импорта моделей nif в 3ds max. Аналогичный можно найти и для блендер, но я с ним, честно, не работала. 
  • Навыки работы в 3D-редакторе (желательно). 
  • Модель для переноса с текстурами (ради теста можно взять любую модель из самого скайрима или её измененную версию). 


Идем внутрь папки Data в директорию Meshes и ищем там нужную папку с заменяемой моделью. Допустим, Эбонитовая катана лежит по пути Skyrim\Data\meshes\weapons\ebonyblade. Мы можем открыть его напрямую в 3Ds max с помощью Nif importer plugin, после установки которого импорт ниф-моделей будет доступен непосредственно с кнопки File — Import.

Либо открыть его с помощью Nifskope и импортировать оттуда в OBJ-формат, читаемый почти любой 3d-программой:

0df361a193ba364855b2a52e8e27a3f4.png
Если правильно настроить внутри программы пути до текстур, то в окне просмотра вы увидите полностью окрашенную модель. Правда, некоторые блестящие части будут отличаться от вида внутри игры. Чтобы экспортировать модель, необходимо выбрать в списке слева NiTriShapedata, иначе модель может экспортироваться не полностью.

265fd2a1a0583ef7c5ea206232f5d947.png
Желтый оригинал и сиреневый ремейк. е мудрствуя лукаво, я взяла ванильный посох и переделала его на более эпичный и фентезийный, похожий на то, что я рисовала много лет назад для небольшого рассказа.

Примечание

Обратите внимание, что некоторые модели оружия и доспехов имеют два-три варианта. Первый (иногда помечены префиксом gnd) — модель отображения в инвентаре и мире, для доспехов — сложенный или упакованный вариант. Второй с префиксом 1stperson — вид от первого лица, более детализированное оружие и рукава с отрезанным торсом для доспехов. Третий — вариант при виде от третьего лица на персонаже — полный доспех и оружие с ножнами.


Рукоятки мечей и всего остального должны совпадать как можно больше. То же справедливо и для длины лезвия. Натягивать цвайхандер на меч-одноручник не стоит, это будет мешать регистрации попаданий по врагу. 

Аналогично с суставами при замене животных и доспехов:  

4580066ad7770f582e297e614e17b093.png
Интересный факт — поворот модели в самой игре может отличаться от установленного в редакторе. Это связано с некоторыми настройками модели в самом 3Ds max и особенностях Nif-формата.

При этом нельзя забывать, что доспехи в Скайриме разделены на четыре части — голова, руки ниже локтя, ноги ниже бедра и тело с бедрами и плечами. Старайтесь придерживаться тех же масштабов:

138d1d658da9cdbfb7fcd1869ed0c5cf.png
И все равно многие вещи будут выглядеть несуразно. При попытке адаптировать костюмы из соулсборнов в скайрим соуловские человечки кажутся длинноногими и стройными эльфами по сравнению с угловатой приземистой фигурой скайримского героя.

После подгона по оригиналу сохраните куда-нибудь эту модель, чтобы не потерять ее. Время идет, но стабильности при работе с инородными моделями в 3Ds max оно не добавляет.
Теперь нам понадобится загрузить оригинальную модель и скелет, если мы заменяем не статичную, а анимированную модель. 

ac27bbf3770dbf1d2049618415f99075.png
Для скелета настройки импорта выглядят так. Для меша галочку с этого пункта снимаем.

Далее импортируем оригинал, сняв галочку с пункта «Import skeleton». Тогда игровая модель как бы натягивается на этот скелет:

57bd9e1bcc7bc5f2f3a98180901b5aed.png
Имена костей в Скайриме очень сильно отличаются от оригинала, так что использовать сторонний риг не получится. Да и в принципе использовать уже отригованную модель для переноса нерентабельно. Все равно скелет придется удалить.

         03e73cc51106bc736d06865a51cd4089.png
В лучшем случае при попытке использовать готовый риг вы увидите нечто подобное.

Импортировать поверх скелета сначала оригинальную модель жизненно необходимо. Дело в том, что в Скайриме весьма специфические шейдеры (настройки отображения текстур и эффектов) и флаги меша, и так плагин импорта автоматически скопирует их с оригинала на новую модель.

Теперь загружаем нововведение. Если мы берем оружие, то задаем влияние от базовой кости в рукояти. Если доспех или животное, то стараемся следовать вышеобозначенным правилам — уделять внимание оригиналу и суставам.

Примечание

Функционал 3DS max позволяет назначить автоматический риггинг по костям скелета или даже спроецировать влияние костей с одной модели на другую при наличии общего скелета. Однако с моделями из Скайрима это не работает, т.к. несколько осей координат имеют нестандартное значение, и плагин импорта не может прочитать их корректно. Так, при попытке назначить авто-риггинг и включив отображение зон влияния в виде капсул, вы увидите, что большая их часть смещена и повернута вправо относительно основной вертикальной оси. Поэтому вам все же придется потратить время на ручной риггинг.


de7a04247d16b0677c51ea076044d4df.png

Проделав все необходимые настройки костей, удаляем меш оригинала и экспортируем нашу новую модель в формат nif. 

Во втором случае открываем два Nifskope (благо программа поддерживает работу нескольких своих копий одновременно) и в списке слева ищем выпадающий список NiTriShape/NiTriShapeData/BSLightningShaderProperty/BSShaderTextureSet.

f813b3777cc15453fe7e19341b8eb982.png
Обратите внимание, что на одной модели может быть несколько NiTriSHape, но некоторые из них вспомогательные, либо являются дополнительными слоями для эффектов крови и зачарования. Выбирайте тот, при нажатии на который модель подсвечивается. Кроме того, если модель использует несколько мешей с разным набором текстур, для каждого из мешей будет свой NiTriShape.

Самостоятельно во всех флагах и настройках вы будете разбираться долго, и далеко не все из них работают в Скайриме, поэтому просто копируйте пункты ShaderFlag из оригинала на реплейсер в разделе BSLightingShaderProperty. В разделе BSShaderTextureSet укажите путь к текстурам. 

5407be3ebfe62688397635275a08bef4.png
После завершения настроек, сохраните свою новую модель и переименуйте ее в соответствии с оригиналом, заменив ванильную версию. После этого запустите игру, чтобы проверить, все ли удачно.

c78dadf2426263cab482fa734a061c68.png
Если есть косяки с поворотами, как тут, необязательно лезть обратно в 3DS max. В Nifskope можно ткнуть на NiTriShape правой кнопкой мыши и выбрать Transform. Так вы сможете вращать и сдвигать модель относительно центра сетки координат.

fdd3b3c56363fbaf323c45f380905cce.png
                                            Так-то лучше

▎Замена соуса на подливку

 
Итак, нам снова надо распаковать целую кучу файлов и найти иголку в стоге сена. Опять же, предпочтительнее будет начать с замен оружия, так как большая его часть имеет только одну кость и ограниченный набор текстур. Хотя некоторые умельцы умудряются заменить целую модельку игрока на сексуальную рободевушку, начинающему моддеру это не под силу.

Для моддинга Dark Souls 2–3, Sekiro и Elden Ring вам понадобятся в обязательном порядке:

  • UXM editor — для распаковки файлов игры самого верхнего уровня (BDT) и запаковки их модифицированных версий обратно. 
  • Yabber — для распаковки и запаковки текстур в TPF и моделей с TPF-тестурами в DCX — архивы второго уровня.
  • Bindertool версии 0.5 для DS2 и версии 0.6 и выше для DS3, Sekiro и ER. Он понадобится для извлечения содержимого TPF-архивов — файлов с текстурами. В принципе, он может служить и распаковщиком основных архивов верхнего уровня (в корневой папке игры), но запаковать обратно не сможет, как и все прочие архивы. Искать на Github.
  • ModEngine (Elden Ring mod loader) — специальный плагин для загрузки модов в виде DLL библиотеки, свой для каждой из игр фромов. Необходим для загрузки модов без перезапаковки всех 30 с гаком гигабайт игры. Можно найти, как и UXM, на Nexusmods.
  • Файл с расшифровкой номеров архивов с форумов по распаковке соулс-игр или очень много свободного времени.


Чтобы провернуть замену модельки в Dark Souls 3, Sekiro и, если повезет, Elden Ring, сверх уже упомянутых распаковщиков нам понадобятся:

  • 3DS max или любой другой 3D-редактор, поддерживающий экспорт FBX с ригом
  • FLVER import plugin для 3ds max (или аналогичный инструмент для Blender, но его я не пробовала)
  • FLVER editor — для настройки модели


Ищем нужную модельку в файлах, убеждаемся, что это она, открыв ее в 3ds max или блендере.
Находим ей замену — как и в случае со Скайримом, это может быть просто другая модель из той же игры, либо совершенно новый объект.

315cbcbc92b1388afad9cbb04326799d.png
Импорт-скрипт модели из Dark souls в 3Ds max требует импорта скелета. Можно использовать базовый скелет персонажа из папки Parts. Потом его можно удалить, оставив только кость меча с номером.

Найдя необходимое, производим действия, аналогичные подготовке модели в Скайриме: импортируем распакованный оригинальный предмет/одежду/оружие/врага, импортируем замену и подгоняем под оригинальные масштабы. 

eddd1a7b04fa6f3388c99c631197e710.png

Далее нашу модель нужно отриговать. Можно использовать скелет из самой игры или любой базовый скелет вашего редактора, более-менее подходящий по количеству костей. В самой игре помимо основного скелета (руки, ноги, позвоночник, голова) есть отдельный набор костей для одежды, волос, прикрепления оружия и физики. Но учитывать все их сложно, поэтому стоит сосредоточиться только на основном скелете. Все нависающие части, наподобие пол одежды, длинных волос, юбок, хвостов и крыльев, стоит прикреплять к базовым костям независимо от их длины — волосы к голове, хвост к тазу и т.п. В противном случае в некоторых местах ваша модель будет сильно ломаться. Как только вы закончили с ригом, сохраните вашу модель в FBX-формате.

76c2dc576ec796aea442b716e7e32611.png
В режиме Skin (настройки влияния костей) красным обозначено 100% влияние. Не забудьте потом проверить назначение текстур на меш!

Далее идет еще более муторная часть, чем создание рига. Вам предстоит открыть FLVER Editor, открыть в нем модель, которую хотите заменить, и модель-замену.
 
e9585d3c375e1cea9c8969314bac4a3a.png
Для открытия можно просто перетащить модельку для редактирования на исполняемый файл MySFformat.exe

c4ad349539f5e5a8b28117334f9c0350.png

Нажимайте смело кнопку Import Model, чтобы загрузить свою новую игрушку. На всех всплывающих окнах, кроме запроса на создание LOD, нажимайте OK.
Жмите на Mesh, чтобы открыть окно редактирования меша. 

7cc2f55c1c21ee2b757bd723f58296a4.png

Кстати, простейшие изменения в оружии, как, например, шипы, можно сделать прямо в FLVER editor. Для этого правой кнопкой жмем на вершины (углы полигонов на модели), затем Transform и в окне с координатами меняем значения, не забывая жать на Modify.

3e172eb39b3dde87df8bbf40feff4b82.png
Снимите галочку с верхнего пункта в списке Chosen, чтобы оставить пока неизменной оригинальную модель (справа выделено красным). Включайте галочками режимы вращения, перемещения и масштабирования справа. По окончании масштабирования верните галочку Chosen на основу, а также поставьте птичку на строчку основы в списке Delete. Снова нажмите Modify.

После каждого изменения нажимайте Modify, чтобы применить изменения, и возвращайте значения на ноль перед следующим изменением, чтобы избежать излишней работы.
Помните, что после нажатия этой кнопки ваш FLVER файл автоматически сохраняется. Так что позаботьтесь о резервной копии.

Примечание

. По итогу создания конкретно этого реплейсера выяснилось, что морозный клинок Иритила содержит слишком много дополнительных эффектов и скриптов. Так что сходу вспомнить, что я делала пять лет назад для корректной работы реплейсера я не смогла, и переключила свое внимание на реплейсер модели без визуальных эффектов — посохе Изалита.


ac74b04ff04b8dd99365cc56a65a910d.png
 Иногда бывает и так. Приготовьтесь к таким фортелям при замене моделей с эффектами.

1739fd1c1d91aba2c541c01e35306493.png
                     Замена посоха Изалита

После настройки положения модели необходимо заняться текстурами. Так же, как и в случае с ретекстуром, сохраните их в DDS-формате и запакуйте в TPF-архив. 
В том же FLVER Editor пропишите путь до ваших текстур на модели.

f6f1cc2764c1d11adb409632485d1e1d.png
Если вы заранее позаботились о подготовке и переносе в конечную папку текстур, то беспокоиться не о чем — программа сама подхватит карты и прикрепит их к модели. Если же нет, то ищите пропуски в путях (обычно выглядят как пустые кавычки ») и вводите путь до текстуры

Поместив все необходимое в папку с реплейсером, убедитесь, что все имена файлов соответствуют оригиналу, после чего запакуйте архив с помощью Yabber, перетащив папку.
Важный момент: даже если у реплейсера меньше текстур, чем у оригинала, не удаляйте лишние старые текстуры! Иначе Yabber будет паниковать, т.к. при распаковке создает список содержимого архива.Теперь, как и в случае с ретекстуром, можно либо запаковать все файлы, либо воспользоваться Mod Engine.

47736503d11fdf152e2d7a0ee5524614.png

Можно загружать и проверять в действии. Иногда на лицензионной версии потребуется перезапустить компьютер, чтобы игра работала стабильно — это связано с особенностями работы средств защиты внутри Steam.

dc22d6008c470b0551425c5f61fcf323.png

e8a2d815e2c2fa7ae6e6e6650f0fc706.png
Теперь можно и к боссу по десятому кругу!

Итак, чтобы провернуть замену модельки с ванильной на новую, необходимо следовать такому алгоритму:

  1. Распаковать игровые архивы
  2. Найти нужный файл для замены (текстуру и модель)
  3. Подогнать под ее пропорции новую модель
  4. Сделать риггинг и скиннинг (задать влияние костей от оригинала)
  5. Сохранить модель в формате игры
  6. Сохранить в нужном формате и цветности текстуры новой модели
  7. Заменить измененным файлом оригинал
  8. Запаковать файлы игры обратно в строго соответствии с уровнями архивации

Как и в случае ретекстура, очень важно найти правильные и безопасные инструменты. Кроме того, создание реплейсера модели потребует от вас куда больших сил и умений. Вам придется работать с 3D-редакторами для перенастройки влияния костей, а также строго соблюдать правила риггинга, включая иерархию костей, имена костей и порядок назначения веса от младшей кости к старшей. Однако для начинающего игродела этот опыт будет весьма полезен.

▎Итого

 
Моддинг в играх — весьма сложное и увлекательное занятие. Если все-таки решитесь заняться этим благородным, но неблагодарным делом, будьте готовы к бессонным ночам, поиску нужной версии инструментов и десяткам попыток, совсем как в самих играх от From Software.
Но и усилия вознаградятся сторицей.

ca45431da7406559fcb72b022b3ee3b9.png

ae962af74780e67d9759632fac725be3.png

c3cfdefeb8269e3bfad4b40f903ae6c7.png

С Вами была Людмила Хигерович. Всего хорошего и не болейте!

НЛО прилетело и оставило здесь промокод для читателей нашего блога:
— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS

© Habrahabr.ru