+ Ответить в теме
Показано с 1 по 2 из 2

Тема: [GUIDE] - Как сделать новый юнит путем рескининга.

  1. #1

    [GUIDE] - Как сделать новый юнит путем рескининга.

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

    Итак, поехали!

    СОЗДАНИЕ НОВОГО ЮНИТА ПУТЕМ РЕСКИНИНГА.

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

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



    Как видите, юниты одинаковые, но "раскрашены" по разному.


    ВСТУПЛЕНИЕ: как это работает.

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

    Перекрашивать мы будем текстуру, а модельку просто скопируем.

    В целом, весь процесс делится на две части:
    1. Работа с графикой.
    2. Работа с XML.

    Нам понадобиться следующий софт:
    1. Графический редактор (ваш любимый)
    2. GrannyMaterialHacker - чудо утилитка от двух волшебников lemmy101 and CaptainBinky.
    3. Классический набор Civ5 SDK, что поставляется через Steam.

    Так же, думаю, будет не лишним тут же сказать что все Civ5 SDK требует кучу девелопмент-софта от макрософта и если у вас чего то не хватает, это придется скачивать. Вам будет писать чего не хватает.


    ЧАСТЬ ПЕРВАЯ: работа с графикой.

    Подготовка:

    1) Сiv5 SDK берется из Steam. Как это сделать - писать не буду, процесс примерно такой же как вы брали саму Civ, только платить второй раз не надо . SDK есть в разделе Tools. Ставим SDK

    2) GrannyMaterialHacker надо скачать и распаковать в директорию с Нексусом (конкретно вот сюда %папка_со_стимом%\steamapps\common\sid meier's civilization v sdk\Nexus\x86). Если вы распакуете ее еще куда то работать эта утилитка не будет, она жестко привязана к Нексусу.

    Что конкретно делает эта утилитка я так и не понял , я не график, но для наших задач это и не важно, главное что она работает. Возможно, она "перепрошивает" текстуру на модельку.


    3) У вас должны быть распакованны fpk файлы Civ5.

    Что бы сделать это, нужно:
    - запустить из SDK Nexus.
    - перейти в нем на одноименную закладку Nexus.
    - выбрать там Script Browser и найти скрипт под названием Extract PAK (*.fpk).
    - кнопочкой Run Script запустить его на выполнение.

    В папке с игрой, в ...\Steam\steamapps\common\sid meier's civilization v\Resource будет три папки, забитыми файлами до отказу. Это оно и есть.

    Мы готовы.


    Отсюда пойдет "перевод" гайда Деливератора и будут использоваться его картинки. Деливератор использовал Minuteman'a для образца.

    Рескининг:

    1) Какие файлы понадобятся.

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

    Картинка:


    Хотя sref файл, по моему, в данном случае все же лишний. Дело в том что игра распаковывает и загружает в память ВСЕ графические файлы и многие использует в разных модельках. Поэтому, если такой файл УЖЕ где то используется, например в другом юните, то можно просто ссылаться на него.

    - fxsxml файл - описание, какие файлы графики использует юнит.
    - gr2 файл - моделька юнита.
    - dds файл - текстура юнита.

    Где они лежат?

    В кратце:
    - fxsxml файл в ...sid meier's civilization v\Resource\Common
    - остальное в ...sid meier's civilization v\Resource\DX9

    Если вы знаете как называются файлы юнита, который вы будете использовать как исходный, то просто копируете их. Если же нет, то нужно будет их найти.

    Ищем:

    Нам нужно проследить по описаниям, какие файлы использует юнит.
    - Идем в ...Steam\steamapps\common\sid meier's civilization v\assets\Gameplay\XML\Units
    - открываем в текстовом редакторе файл CIV5Units.xml Это файл с описаниями юнитов.
    - Находим там тот юнит, моделька которого будет использоваться.
    - В его описании есть тег <UnitArtInfo>, его значение - ссылка на описание графики юнита.
    - Запоминаем эту ссылку..

    - Далее, идем в ...Steam\steamapps\common\sid meier's civilization v\Resource\Common
    - Ищем там файл civ5artdefines_unitmembers.xml, открываем его в текстовом редакторе.
    - Находим там описание юнита по ссылке, запомненной выше.
    - Ищем в этом описании тег <Granny>. Там будет ссылка на *.fxsxml файл.

    Например:
    Код:
      <UnitMemberArtInfo>
        <Type>ART_DEF_UNIT_MEMBER_U_AMERICAN_MINUTEMAN</Type>
        <fScale>0.14</fScale>
        <Granny>Assets/Units/U_American_Minuteman/U_American_Minuteman.fxsxml</Granny>
    
    ...
    
       </UnitMemberArtInfo>
    - Запоминаем название файла.
    - В папке ...Steam\steamapps\common\sid meier's civilization v\Resource\Common ищем этот fxsxml файл.
    - Находим и копируем его в нашу папку MyNewUnit.

    Важно: Что бы два раза не вставать, туда же и отсюда же копируем и эти два файла:
    civ5artdefines_unitmembers.xml
    civ5artdefines_units.xml
    Они нам пригодятся позже.

    - Открываем этот наш скопированный *.fxsxml файл. Внутри описание графики юнита.

    Вам нужно две вещи: название основной текстуры (dds файл) и название меш (модельки) юнита (gr2 файл).

    - Файлы текстур описаны в теге <Texture file>. Их может быть несколько, основная текстура, как правило, содержит в себе буквы _DIFF.dds (например: u_american_minuteman_diff.dds). Если ничего такого нет, то придется думать и перебирать файлы в графическом редакторе, что бы понять какой основной.
    - Файлы модельки описаны в теге <Mesh>.
    - Идем в \Steam\steamapps\common\sid meier's civilization v\Resource\DX9 и ищем там файлы меша и текстуры из тегов выше.
    - Кoпируем их в нашу папку MyNewUnit.

    - fxsxml файл переименовываем в название нашего нового юнита. Например redcoat.fxsxml

    Итого у нас должны быть файлы всех типов, что на картинке выше (кроме sref файла).

    2) Перекраска текстуры.

    Перекраска текстуры производиться в любом графическом редакторе, который умеет работать с dds файлами. Некоторым, возможно, понадобиться доставить dds плагин.

    Работу с графикой я описывать не буду. В кратце: открываем dds файл, берем кисточку, и красим .

    В своем примере Деливератор перекрашивает синий камзол Минутмена в красный. Он использует Paint.Net. Обратите внимание, на картинке (слева) показаны параметры при сохранении перекрашенного файла обратно в dds. Их и надо использовать.


    Деливератор сохраняет файл как redcoat_diff.dds

    Перекрасили и сохранили в ту же папку откуда взяли. Название даете сразу новое! Это все тоже важно.

    3) Утилита GrannyMaterialHacker.

    Здесь мы и создадим те самые "свои" графические файлы для нашего юнита.

    - Идем в папку с Нексусом (через Проводник) куда вы распаковывали GrannyMaterialHacker и запускаем его.
    - В строках Source GR2 и My GR2 указываем наш исходный gr2 файл из папки MyNewUnit. В обоих строках один и тот же файл.
    - Кликаем по окошкам под Souce GR2 находим там файл с основной текстурой. На пути внимание обращать не надо, только на название.



    - Как нашли, кликаем на нем два раза, откроется еще одно окошко.
    - Указываем там наш перекрашенный dds файл.



    - Жмем кнопку "HACKIFY!".

    - В папке MyNewUnit будет создан файл, подписанный как _new (например, исходный файл вашей модельки u_american_minuteman.gr2, а будет создан u_american_minuteman_new.gr2). Впрочем, программа об этом вам сообщит.
    - Этот новый _new файл переименовываем (через Проводник) в название вашего юнита (в redcoat.gr2).

    Теперь это файл вашей модельки.

    Осталось прописать его и файл текстуры в fxsxml файле, что бы это все заработало.

    - Открываем ваш redcoat.fxsxml файл из папки MyNewUnit
    - В тегах <Mesh> и <Texture> производим необходимые изменения. Сохраняем.

    Например:

    Код:
    <Asset>
        <Mesh file="redcoat.gr2"/>
    ...
        <Texture file="redcoat_diff.dds"/>
    ...
    </Asset>
    Все, все файлы готовы!

    4) Проверка в Нексусе.

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

    - Запускаем Нексус.
    - Переходим на вкладку Assest View.
    - Открываем там наш redcoat.fxsxml файл и смотрим на модельку.
    - Если не нравиться как получилась текстура, пункты 2 и 3 повторяем по новой.


    У Деливератора получилось не плохо



    Конец графической части.
    продвинь это сообщение в соцсеть:  

  2. #2


    ЧАСТЬ ВТОРАЯ: работа с XML.

    Запускаем ModBuddy. Создаем или открываем проект.

    1) Перенос файлов в проект.

    Кликаем правой кнопкой мыши по названию проекта, жмем Add -> Existing Item и перемещаемся в нашу папку MyNewUnit.

    Там выбираем

    наши файлы с графикой:
    - redcoat_diff.dds
    - redcoat.gr2

    с описанием графики:
    - redcoat.fxsxml

    а так же
    - civ5artdefines_unitmembers.xml
    - civ5artdefines_units.xml

    Картинка от Деливератора:

    civ5artdefines_units.xml тут нет, но он нужен для создания нового юнита.


    2) "Собираем" юнит.

    Как вы помните, юниты в Civ5 это несколько объектов ака отряд. "Сборка" этого отряда происходит в двух файлах: civ5artdefines_unitmembers.xml и civ5artdefines_units.xml.

    Сперва редактируем civ5artdefines_unitmembers.xml. Тут описано как выглядит юнит и как он стреляет (или не стреляет).

    - Открываем его в ModBuddy.
    - Находим описание исходного юнита.
    - Копируем его.
    - Перемещаемся в конец файла, становимся перед тегом </UnitMemberArtInfos> и вставляем туда описание.
    - Редактируем его, изменяя название и указывая нужный fxsxml файл.

    Получится может вот так:

    Код:
      <UnitMemberArtInfo>
        <Type>ART_DEF_UNIT_MEMBER_REDCOAT</Type> <!--поменять-->
        <fScale>0.14</fScale>
        <Granny>redcoat.fxsxml</Granny> <!--поменять-->
        <Combat>
          <Defaults>ART_DEF_TEMPLATE_SOLDIER</Defaults>
          <bHasShortRangedAttack>1</bHasShortRangedAttack>
          <bReformBeforeCombat>1</bReformBeforeCombat>
          <Weapon>
            <WeaponTypeTag>BULLET</WeaponTypeTag>
            <WeaponTypeSoundOverrideTag>BULLET</WeaponTypeSoundOverrideTag>
          </Weapon>
        </Combat>
        <MaterialTypeTag>CLOTH</MaterialTypeTag>
        <MaterialTypeSoundOverrideTag>FLESH</MaterialTypeSoundOverrideTag>
      </UnitMemberArtInfo>
    
    </UnitMemberArtInfos> <!--должно быть в самой последней строчке файла-->
    Аналогично редактируем и civ5artdefines_units.xml. В нем мы как раз и собираем юнит в отряд.

    Может получиться:
    Код:
      <UnitArtInfo>
        <Type>ART_DEF_UNIT_REDCOAT</Type>  <!--поменять-->
        <Formation>HonorableGunpowder</Formation>
        <DamageStates>1</DamageStates>
        <UnitMemberArt>
          <MemberType>ART_DEF_UNIT_MEMBER_REDCOAT</MemberType> <!--ссылка на описание юнита из предыдущего файла-->
          <MemberCount>14</MemberCount>
        </UnitMemberArt>
      </UnitArtInfo>
    
    </UnitArtInfos> <!--должно быть в самой последней строчке файла-->
    Юнит собран.

    3) Прописываем графику юниту.

    Нам осталось "сказать" нашему юниту где теперь его графика. Как вы помните из первой части в описании каждого юнита есть тег <UnitArtInfo> - это оно и есть, сюда надо вписать ссылку на его новую, отрескиненную графику.

    Как создать XML описание юнита (т.е. сам юнит) в этом гайде не рассказано. Предполагается что вы уже знаете это. Как минимум скопируйте все что найдете из описания исходного юнита в файле Civ5Units.xml и подправьте необходимые значения.

    Открываем описание вашего юнита и в теге <UnitArtInfo> вписываем ссылку на тег из civ5artdefines_units.xml файла.

    Т.е.

    Код:
            <Row>
                <Class>UNITCLASS_MUSKETMAN</Class>
                <Type>UNIT_REDCOAT</Type>
         ...
                <UnitArtInfo>ART_DEF_UNIT_REDCOAT</UnitArtInfo> <!--название тега из civ5artdefines_units.xml-->
         ...
           </Row>
    Юнит готов его можно подавать на стол.

    4) Импорт в VFS.

    Осталось импортировать все наши файлы в VFS. Без этой штуки ничего работать не будет .

    Импортируем:

    - все *.gr2
    - все *.fxsxml
    - все *.dds
    - civ5artdefines_units.xml
    - civ5artdefines_unitmembers.xml

    Что бы импортировать файл, выберите его в Solution Explorer и в окошке Prorerties переменной Import into VFS поставьте значение True. Все импортируется.


    а это уже картинка от меня.


    5) Финальный штрих.

    В Civ5 вся графика грузиться сразу. Если что то из графики меняется, то графическую систему нужно перегрузить. Для этого нужно поставить галочку в "Reload Unit System"



    ВСЕ!


    КОНЕЦ: ну вот и все готово!

    Собираем проект, запускаем игру, запускаем мод. Юнит должен быть с новой графикой.







    ПОСЛЕСЛОВИЕ.

    - Автор, почему я вижу копейщиков вместо моей графики?
    - Это значит что где то есть ошибка. Учитывая что графику (меш) мы не трогали, то скорей всего ошибка либо xml, либо не выставлено true для импорта в VFS, либо галочка в "reload unit system".


    БОНУС: как поменять иконку юниту можно почитать здесь.
    продвинь это сообщение в соцсеть:  
    Последний раз редактировалось oooo4; 05.02.2011 в 10:43.

+ Ответить в теме

Похожие темы

  1. [GUIDE] - Как сделать/изменить иконку юнита.
    от oooo4 в разделе Модная Цивилизация
    Ответов: 10
    Новое: 06.02.2016, 19:35
  2. Guide: ladder CTON
    от OT4E в разделе Civ4 - Стратегия игры
    Ответов: 41
    Новое: 18.07.2011, 18:11
  3. Guide: пособие коттеджиста
    от OT4E в разделе Civ4 - Стратегия игры
    Ответов: 14
    Новое: 20.04.2009, 17:27
  4. Как победить военным путем?
    от Nosferatu в разделе Civ4 - Игровые вопросы
    Ответов: 39
    Новое: 09.10.2007, 15:04
  5. как сделать юнит?
    от _Grey_ в разделе Civ3 - Модостроение
    Ответов: 13
    Новое: 30.07.2007, 01:34

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
Рейтинг@Mail.ru

free counters