Перейти к содержимому
Для публикации в этом разделе необходимо провести 1 боёв.
BattleFrame

[Content SDK] Создание скинов и модификаций внешнего вида кораблей

В этой теме 4 комментария

Рекомендуемые комментарии

3 971
[GA]
Разработчик, Коллекционер
2 834 публикации
23 411 боёв

[FAQ] Создание скинов для кораблей при помощи Content SDK
В данной теме мы рассмотрим как правильно ретекстурить корабли.


Для начала нам понадобится архив ModsSDK, который можно взять на Google диске в папке с текущей версией клиента игры.

На момент написания статьи актуальной является версия 13.10.0, поэтому я перехожу в папку MK 13.10.0 на диске и скачиваю архив ModsSDK_13.10.0.zip

 

Выполняем подготовку:

  1. Переходим в папку с игрой, далее "\bin\<номер_билда>\res_mods\" и создаём там папку "PnFMods".
  2. Там же создаём пустой файлик "PnFModsLoader.py"
  3. В папке "PnFMods" создаём папку "ModsSDK.zip" (это именно папка с таким названием, не архив!)
  4. Распаковываем в папку "ModsSDK.zip" всё содержимое скачанного нами архива.
  5. Подготовка завершена

 

Дамп модели необходимого нам корабля:

Для того чтобы модифицировать какой-то корабль, нам необходимо достать из игры файлы от этого корабля.
Выполняем следующие действия:

  1. В папке "PnFMods" создаём папку с названием нашего мода. Например "MySuperMod".
    Будьте внимательны! По завершению дампа изменять имя этой папки не следует! Иначе мод работать не будет!
  2. Теперь в папке "MySuperMod" необходимо создать файлик "Main.py" со следующим содержимым:
    API_VERSION = 'API_v1.0'
    MOD_NAME = "MySuperMod"
    SHIP_NAME = 'ASA110_Midway'
    contentSdk.extractSources(MOD_NAME, SHIP_NAME) 
    """
    Где ASA110_Midway это ID папки нашего корабля, найти которое можно в папке "ModsSDK.zip"
    а MySuperMod это имя нашего мода
    """
  3. Сохраняем, запускаем клиент игры. Ждём пару минут и закрываем его (клиент может не прогрузиться в порт, это нормально)
  4. Убеждаемся что в нашей папке "MySuperMod" появилась папка "ASA110_Midway"
  5. Дамп модели завершен

 

Запуск мода:
Теперь у нас есть готовый пакет файлов для редактирования.
По сути это уже готовый мод, работоспособность которого мы можем проверить. Показателем работоспособности мода будет прогрузка корабля в порту.

  1. Открываем наш файлик "Main.py" из предыдущего пункта и изменяем его содержимое на следующее:
    API_VERSION = 'API_v1.0'
    SHIP_NAME = 'ASA110_Midway'
    contentSdk.registerShipMod(SHIP_NAME) 
  2. Запускаем игру, прогружаемся в порт и выбираем наш корабль (в моём случае это Midway)
  3. Если корабль прогрузился и мы видим его в порту, значит всё сделано правильно

 

Готово! Подготовка файлов для создания модификации завершена!

  • Плюс 4
  • Круто 2
  • Скучно 1

Рассказать о публикации


Ссылка на публикацию
3 971
[GA]
Разработчик, Коллекционер
2 834 публикации
23 411 боёв

Состав распакованного пакета файлов модификации
Рассмотрим что такого нам игра распаковала


А распаковывает она абсолютно всё что касается выбранного корабля.

Переходим в папку с распакованным нами пакетом файлов модификации корабля (в моём случае это "ASA110_Midway") и смотрим на её содержимое:

 

Состав папок и их содержимое может меняться в зависимости от класса нашего корабля:

  • compile.info - технический файл, его мы не трогаем ни при каких условиях
  • aircraft - папка с авиацией, присутствует у авианосцев, гибридов, либо если корабль имеет катапультный самолёт
  • catapult - папка с текстурами и моделями катапульт для запуска самолётов
  • detector - папка с текстурами и моделями системы управления огнём
  • finder - папка с текстурами и моделями дальномеров корабля
  • gun - папка с текстурами и моделями орудий ГК и ПМК, ПВО и торпедных аппаратов
  • projectile - папка с текстурами и моделями снарядов, используемых кораблём
  • radar - папка с текстурами и моделями радаров и антен РЛС
  • ship - папка с текстурами и моделями корпуса корабля

 

Типы файлов, встречаемые в распакованном пакете:

  • *.info и *.splash - технические файлы, необходимые для работы модификации. их редактирование может привести к отказу мода
  • *.geometry; *.model; *.visual - файлы моделей и их параметров
  • *.mfm - файл материала. отвечает за присвоение текстур и их свойства
  • *.dds - файлы текстур
  • Плюс 6
  • Круто 2
  • Скучно 1

Рассказать о публикации


Ссылка на публикацию
3 971
[GA]
Разработчик, Коллекционер
2 834 публикации
23 411 боёв

Покраска корабля
Настало время перекрасить наш модифицированный флот


Для создания полноценного красивого тематического скина вам понадобится раскрасить все элементы корабля в каждой из перечисленных выше папок.
Я же подскажу вам как это сделать правильно, на примере корпуса моего "Мидвея".

Работать будем с файлами текстур *.dds

 

Необходимый софт:

  • NVIDIA Texture Tools Exporter - для сохранения изображений в формат DDS


    DDS для наших модов экспортируем со следующими параметрами:

    image.png

 

Вводные данные:

Чтобы покрасить корпус, я перехожу в папку ship и нахожу файлы *.dds:

Скрытый текст

image.png


Сразу же разбегаются глаза от их количества и не понятно за какой хвататься.

Давайте разбираться по порядку


Какие текстуры использует корабль:
Как правило, любая часть корабля использует 4 текстуры (но бывают и исключения).
Все они имеют расширение *.dds и практически одинаковое название, кроме окончания.

На скриншоте выше вы можете заметить, что текстура надстройки ASA015_Midway_1945_DeckHouse имеет 4 вариации: _a, _ao, _mg и _n.
Давайте остановимся на каждой подробно.

 

Итак, если файл текстуры оканчивается на:

  • _a.dds - это основная текстура корабля, то как он выглядит без камуфляжей. Обычно именно эту текстуру красят мододелы при создании скинов
  • _ao.dds - карта затенения. Чёрно-белая текстура при изменении которой можно настроить тени от рассеянного света на корабле.
  • _n.dds - карта нормалей. Используется для имитации неровностей поверхности на объекте. Например, на крейсере "Москва" табличка с названием корабля сделана именно при помощи этой текстуры, но на первый взгляд может показаться что она является 3D элементом.
  • _mg.dds - текстура, отвечающая за блеск, свечение и наложение камуфляжей. О том как правильно с ней работать мы поговорим дальше.

 

Определение принадлежности текстур по названию:

  • Файлы текстур, начинающиеся на С00... в большинстве своём будут одинаковыми для всех кораблей. Их можно даже не редактировать.
    • C005_Grid_2_alpha_a.dds - техническая текстура сетки
    • C002_Razlom... - текстуры в разломе, когда ваш корабль переламывается пополам при уничтожении.
  • Файлы текстур, имеющие в названии "Underwater", например ASA015_Midway_1945_Underwater_a.dds, являются текстурами днища корабля
    • Файлы текстур, имеющие в названии "DeckHouse", например ASA015_Midway_1945_DeckHouse_a.dds, являются текстурами надстроек корабля, а также палубы у авианосцев
      • Файлы текстур, имеющие в названии "Hull", например ASA015_Midway_1945_Hull_a.dds, являются текстурами корпуса корабля

       

      Наводим красоту:
      Например, я хочу разместить на надстройке авианосца "Мидвей" логотип игры "Мир кораблей"
      image.png

       

      Для этого, как мы уже выяснили выше, мне необходимо отредактировать текстуру, относящуюся к надстройке и оканчивающуюся на _a.dds

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

      Скрытый текст

      image.png

       

      Сохраняем и получаем вот такую красоту:

      image.png

       

      Казалось бы что задача выполнена, но есть нюанс. При применении любого камуфляжа наш логотип будет затираться т.к камо наложится поверх него
      image.png

       

      Для исправления этого недостатка нам приходит на помощь тот самый файлик _mg.dds (в моём случае это ASA015_Midway_1945_DeckHouse_mg.dds)

      Исправляем камуфляжи:
      Главной особенностью файла _mg.dds является то, что работать с ним необходимо и желательно поканально т.к каждый канал отвечает за определённые функции скина.
      Но, никто также не запрещает вам грубую работу кистью. Мы рассмотрим оба способа.

      Итак, открываем файлик в редакторе (у меня это фотошоп) и видим "ржавую текстуру с гламурно-розовыми нотками".

      Скрытый текст

      image.png

      • Всё что розовое - это те места, на которые будет накладываться камуфляж.
      • Всё что рыжее, следовательно, те места которые останутся не окрашенными.

      Наша задача, продублировать наше лого сюда и сделать его рыжим, чтобы игра понимала что в этом месте корабль красить не нужно

      Разбираем, как и говорили ранее, два подхода.


      С точки зрения грубой работы кистью:

      1. Копируем сюда наше лого и заливаем его таким-же рыжим цветом как и всё вокруг (можно использовать пипетку)
      2. Объединяем слои (обязательно) и сохраняем
      3. Получаем следующее:
        Скрытый текст

        ASA015_Midway_1945_DeckHouse_a.jpg

         

      С точки зрения работы с каналами:

      • Копируем наше лого отдельным слоем, выполняем его выделение по контуру
      • Открываем каналы изображения и оставляем видимым только синий
      • Заливаем всё что внутри нашего выделения чёрным цветом
        image.png
      • Возвращаем видимость всех каналов
      • Удаляем все лишние слои и сохраняем
      • Получаем следующее:
        Скрытый текст

        ASA015_Midway_1945_DeckHouse_a2.jpg

      В первом случае мы сделали всё более быстро, во втором же более качественно и с сохранением текстуры надстройки
      Заходим в игру и видим что теперь камуфляж не перекрывает наше лого и всё отлично видно:
      image.png  image.png

       

      Готово! На этом наведение красоты надстройки Мидвея - завершено!

       

      • Плюс 4
      • Круто 3
      • Скучно 1

      Рассказать о публикации


      Ссылка на публикацию
      3 971
      [GA]
      Разработчик, Коллекционер
      2 834 публикации
      23 411 боёв

      Свечение элементов скина
      Хотите чтобы ваш корабль сиял как полярная звезда?


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


      Делаем светящийся элемент:

      Итак. У нас есть Мидвей с логотипом Мира Кораблей на надстройке. Я хочу чтобы этот логотип светился.
      Важный момент - светиться он будет тем цветом, которым мы его нарисовали на основной текстуре _a.dds
       

      Подготовка:
      Для начала нам необходимо изменить шейдер, используемый нашей моделью. Если вы не знаете что такое шейдер, то это не страшно :-) главное это понимание где его переключить и на какой.

      1. При помощи Notepad++ открываем файл *.mfm, название которого совпадает с названием редактируемых нами текстур.
        Например, мы правили ASA015_Midway_1945_DeckHouse_a.dds и ASA015_Midway_1945_DeckHouse_mg.dds, следовательно, ищем и открываем ASA015_Midway_1945_DeckHouse.mfm
      2. В первых же строках ищем блок <fx> и меняем в нём PBS_ship.fx на PBS_ship_emissive.fx
        Также у вас в блоке может быть PBS_ship_skinned.fx, тогда заменять его следует на PBS_ship_emissive_skinned.fx
      3. Строкой ниже добавляем property блок emissivePower как в примере далее. Он отвечает за интенсивность свечения. Подбираем число по вкусу от 0 до 5
        <fx>shaders/std_effects/PBS_ship_emissive.fx</fx>
        <property> emissivePower
        	<Float>	2.10000	</Float>
        </property>	
      4. Сохраняем файл

       

      Добавление свечения:

      Возвращаемся к нашему файлу _mg.dds. Теперь он больше не использует логику "всё что синее - там камуфляж", а работает по принципу "всё что синее - то светится".

      Нам необходимо у этой текстуры полностью убрать синеву, а именно зачистить "синий" канал (закрасить всё что там есть чёрный цветом)
      В результате _mg текстура будет выглядеть примерно так:

      Скрытый текст

      image.png

      После этого мы должны в этом "синем" канале покрасить в белый цвет только те элементы текстуры корабля, которые должны светиться.
      Выглядеть это должно вот так:

      Скрытый текст

      image.png

      А полностью готовая _mg текстура вот так:

      Скрытый текст

      image.png

       

      P.S. Вы можете не использовать метод с каналами, а делать как вам удобно. Главное понять суть - то что не светится - рыжее, то что светится - синее.

       

      Сохраняем текстуру и проверяем в игре:

      image.png

       

      Готово! Эффект полярной звезды достигнут!

      • Плюс 3
      • Круто 2
      • Скучно 1

      Рассказать о публикации


      Ссылка на публикацию
      Гость
      Эта тема закрыта для публикации новых ответов.

      ×