Как создать свой скин в Unreal Tournament?

Как создать свой скин в Unreal Tournament?

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

Теория

Прежде всего надо понять, что такое скин, и чем он отличается от модели. Модель - трёхмерный объект, состоящий из полигонов. Базовые модели для UT - Male Commando, Male Soldier, Female Commando, Female Soldier, Boss. Скин же - то, что на модели нарисовано. Так как модели разные, то и скины для каждой модели разные. Для одной модели может быть несколько скинов. Например, для Male Soldier это Marine, Metal Guard, Raw Steel, Soldier, War Machine. У каждого скина может быть по нескольку лиц. Например, для Male Soldier/Soldier это Brock, Harlin, Johnson, Rankin. Также у большинства скинов предусмотрена возможность смены цветов.

Теперь о представлении скинов в UT на файловом уровне. Вся информация о конкретном скине в UT хранится в двух файлах - с расширением int (должен лежать в папке System) и с расширением utx (должен лежать в папке Textures). В этом пакете из двух файлов может храниться информация и о нескольких разных скинах для одной модели. Таким образом, задача создания собственного скина сводится к задаче создания 2 файлов.

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

  • Soldier - для Male Soldier
  • Commando - для Male Commando
  • SGirl - для Female Soldier
  • FCommando - для Female Commando
  • Boss - для Boss

Например, файлы скинов для Male Soldier носят названия SoldierSkins.int и SoldierSkins.utx.

Чтобы создать файлы, необходимо знать, какая конкретно информация в них хранится. Для простоты пока будем говорить о создании одного скина с одним лицом и без цвета.

Файл *.utx

Здесь находятся текстуры для скина. Попросту говоря, это развёртка скина, разрезанная на несколько частей. Этих частей вообще 5 (в скобках приведён необходимый размер в пикселях):

  • 1-ая: текстура для туловища (256x256)
  • 2-ая: текстура для ног (256x256)
  • 3-я: текстура для рук (256x256)
  • 4-ая: текстура для головы и кистей (256x256)
  • 5-ая: текстура, которая появляется в Chat Area при произнесении реплик во время игры (64x64)

Порядок имеет значение. Для создания скина нужно минимум 6 текстур. Почему не пять? Просто 4-ую текстуру придётся продублировать, так как она несёт информацию о лице скина.

Создавать с нуля текстуры к скину практически невозможно, так как текстура накладывается на модель по понятному только лишь разработчикам UT принципу. Чтобы в этом убедиться, достаточно просто открыть в UEditor какой-нибудь файл с текстурами к скину. Отсюда вывод - существенно проще и быстрее выдрать уже созданные текстуры к скинам и изменить их в любом графическом редакторе. Экспортируются текстуры с помощью команды File/Export браузера текстур UEditor'а. Импорт осуществляется командой File/Import. Текстура экспортируется в файл формата pcx с 256 цветами и импортируется из того же формата. Ввиду глючности UEditor рекомендую осуществлять экспорт и импорт из папки Textures.

Как называть текстуры? Название текстуры должно состоять из 4 букв и номера текстуры. 4 буквы - это внутреннее название скина. Например, если внутреннее название скина - ovld, то названиями текстур для 1, 2, 3 частей будут ovld1, ovld2, ovld3 соответственно. Первая текстура для 4 части будет носить имя ovld4.

Также необходимо выбрать внутреннее название лица. Его длина не может превышать 8 символов. Если внутреннее название лица over, то вторая текстура для 4 части будет называться ovld4over, а текстура для 5 части - ovld5over. Нужно отличать внутренние названия от внешних. Внутренние используются для именования текстур и прописываются в конфиге. Внешние - это те, которые видны непосредственно в Player Setup.

Файл *.int

Каждая строка в файле *.int начинается с "[Public]" или "Object font-size: 14px"> [Public] Object=(Name=SoldierOL.ovld1,Class=Texture,Description="OverLord") Object=(Name=SoldierOL.ovld2,Class=Texture) Object=(Name=SoldierOL.ovld3,Class=Texture) Object=(Name=SoldierOL.ovld4,Class=Texture) Object=(Name=SoldierOL.ovld4over,Class=Texture,Description="Lord") Object=(Name=SoldierOL.ovld5over,Class=Texture)

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

Как внести возможность смены цвета?

Очень просто! Для начала надо определиться, какие текстуры будут меняться при смене цвета команды. Обычно цвет меняют 1-ая и 2-ая текстуры. Необходимо учесть, что наличие возможности изменения всех цветов (красного, синего, жёлтого и зелёного) приведёт к заметному увеличению размера файла *.utx. А он и так не сильно мал. Поэтому я рекомендую остановиться на красном и синем цветах, как самых распространённых.

Теперь необходимо создать текстуры с изменённым цветом. Можно воспользоваться уже готовыми или сменить цвет своей базовой текстуры в графическом редакторе. Отличия от названия "бесцветной" текстуры заключаются в добавлении к нему 3 символов:

  • T_0 для красного цвета
  • T_1 для синего цвета
  • T_2 для зелёного цвета
  • T_3 для жёлтого цвета

Пусть созданы текстуры красного и синего цветов для 1-ой и 2-ой частей. Продолжая предыдущий пример, имена этих текстур будут ovld1T_0, ovld1T_1, ovld2T_0, ovld2T_1.

Внесём соответствующие изменения в int-файл. Теперь он выглядит так:

[Public] Object=(Name=SoldierOL.ovld1,Class=Texture,Description="OverLord") Object=(Name=SoldierOL.ovld2,Class=Texture) Object=(Name=SoldierOL.ovld3,Class=Texture) Object=(Name=SoldierOL.ovld4,Class=Texture) Object=(Name=SoldierOL.ovld4over,Class=Texture,Description="Lord") Object=(Name=SoldierOL.ovld5over,Class=Texture) Object=(Name=SoldierOL.ovld1T_0,Class=Texture) Object=(Name=SoldierOL.ovld1T_1,Class=Texture) Object=(Name=SoldierOL.ovld2T_0,Class=Texture) Object=(Name=SoldierOL.ovld2T_1,Class=Texture)

Как добавить возможность смены лица?

Добавить в utx-файл по паре текстур на каждое новое лицо. Например, внутреннее название нового лица revo, а внешнее - Drol. Тогда названия новых текстур будут ovld4revo и ovld5revo. Int-файл выглядит теперь так:

[Public] Object=(Name=SoldierOL.ovld1,Class=Texture,Description="OverLord") Object=(Name=SoldierOL.ovld2,Class=Texture) Object=(Name=SoldierOL.ovld3,Class=Texture) Object=(Name=SoldierOL.ovld4,Class=Texture) Object=(Name=SoldierOL.ovld4over,Class=Texture,Description="Lord") Object=(Name=SoldierOL.ovld4revo,Class=Texture,Description="Drol") Object=(Name=SoldierOL.ovld5over,Class=Texture) Object=(Name=SoldierOL.ovld5revo,Class=Texture) Object=(Name=SoldierOL.ovld1T_0,Class=Texture) Object=(Name=SoldierOL.ovld1T_1,Class=Texture) Object=(Name=SoldierOL.ovld2T_0,Class=Texture) Object=(Name=SoldierOL.ovld2T_1,Class=Texture)

Как хранить в одном пакете информацию о нескольких скинах для одной модели?

Процесс создания нескольких скинов в одном пакете ничем не отличается от процесса создания одного скина. Просто теперь в файле *.utx хранятся текстуры для всех скинов пакета, а в файл *.inf информация о новом скине дописывается в конец. Например, вы хотите добавить к уже созданному скину OverLord ещё один. Пусть его внутреннее название lamo, внешнее - SuperLamer, внутренние названия лиц super и repus, внешние - Lamer и Remal. Скин даёт возможность изменения цвета на красный и синий. Соответствующие текстуры добавляются в файл SoldierOL.utx, а файл SoldierOL.int теперь такой:

[Public] Object=(Name=SoldierOL.ovld1,Class=Texture,Description="OverLord") Object=(Name=SoldierOL.ovld2,Class=Texture) Object=(Name=SoldierOL.ovld3,Class=Texture) Object=(Name=SoldierOL.ovld4,Class=Texture) Object=(Name=SoldierOL.ovld4over,Class=Texture,Description="Lord") Object=(Name=SoldierOL.ovld4revo,Class=Texture,Description="Drol") Object=(Name=SoldierOL.ovld5over,Class=Texture) Object=(Name=SoldierOL.ovld5revo,Class=Texture) Object=(Name=SoldierOL.ovld1T_0,Class=Texture) Object=(Name=SoldierOL.ovld1T_1,Class=Texture) Object=(Name=SoldierOL.ovld2T_0,Class=Texture) Object=(Name=SoldierOL.ovld2T_1,Class=Texture) Object=(Name=SoldierOL.lamo1,Class=Texture,Description="SuperLamer") Object=(Name=SoldierOL.lamo2,Class=Texture) Object=(Name=SoldierOL.lamo3,Class=Texture) Object=(Name=SoldierOL.lamo4,Class=Texture) Object=(Name=SoldierOL.lamo4super,Class=Texture,Description="Lamer") Object=(Name=SoldierOL.lamo4repus,Class=Texture,Description="Remal") Object=(Name=SoldierOL.lamo5super,Class=Texture) Object=(Name=SoldierOL.lamo5repus,Class=Texture) Object=(Name=SoldierOL.lamo1T_0,Class=Texture) Object=(Name=SoldierOL.lamo1T_1,Class=Texture) Object=(Name=SoldierOL.lamo2T_0,Class=Texture) Object=(Name=SoldierOL.lamo2T_1,Class=Texture)

Об игре по сети с нестандартным скином

Чтобы ваш скин нормально смотрелся на компьютерах всех остальных игроков, а не представлялся им зелёной фигнёй, необходимо, чтобы нужные 2 файла лежали не только у вас на компьютере, но и на компьютере-сервере. Там их надо прописать в файл UnrealTournament.ini, а именно найти в этом файле (ближе к началу) строку [Engine.GameEngine]. Далее после последней строки ServerPackages="что-то там" написать новую строку ServerPackages=XXX, где XXX - имя ваших файлов без расширения.

Теперь вкладка [Engine.GameEngine] может представлять собой что-то типа

[Engine.GameEngine] . ServerPackages=SoldierSkins ServerPackages=CommandoSkins ServerPackages=FCommandoSkins ServerPackages=SGirlSkins ServerPackages=BossSkins ServerPackages=Botpack ServerPackages=MultiMesh ServerPackages=Relics ServerPackages=EpicCustomModels ServerPackages=SoldierOL

SoldierOL - название ваших файлов.

Заключение

А ведь создавать скины вручную не так-то просто, да? И тем с большей гордостью вы сможете сказать товарищу, уставившемуся на ваш новый скин: "Это я его сделал!"

📎📎📎📎📎📎📎📎📎📎