Моддинг TOTAL WAR: ROME 2

Моддинг TOTAL WAR: ROME 2

Руководство и видео-тутор по набору инструментов Assembly Kit (моддинг Total War: Rome 2)

Руководство и видео-тутор по набору инструментов Assembly Kit (моддинг Total War: Rome 2)

Представляем вам руководство по набору инструментов Assembly Kit для Total War: Rome 2. Это базовое руководство по основным направлениям текущему набору инструментов (16.01.2014 г.) от CA. Оно даст вам краткое изложение того, как инструменты работают и основы последовательности выполняемых действий.

Кроме того пан HunterWolf записал большой видео-тутор где подробно разобрал что же всетаки на дали СА.

Установка Assembly Kit:

Перейдите в вашу «Библиотеку» Steam, в выпадающем меню выберите «Tools/Инструменты».
Прокрутите вниз к «Total War: Rome II - Assembly Kit», правой кнопкой мышки кликните по нему и установите.
Инструменты будут находиться ~ C:Program Files (x86)SteamSteamAppscommonTotal War Rome IIassembly_kit
Вы будете работать, главным образом, с двумя приложениями: TWeak и BOB.
BOB. -(BOB – означает «Build On One Button/Сборка Одной Кнопкой»
Исполняемые файлы находятся в папке: «Total War Rome IIassembly_kitbinaries» и называются:
TWeak.AssemblyKit - для редактирования, например, редактирования статов юнитов(отрядов, подразделений).
BOB.AssemblyKit - для создания .pack-файлов вашего мода.

Рабочий процесс:

Последовательность выполняемых действий может показаться сложной на первых порах, но они очень просты, как только вы поймете это. Для тех из вас, кто ранее, для мода, использовал PFM, много принципов очень похожих, но по некоторым методам противоположных.
С PFM вы обычно отбираете, какие файлы входят в ваш pack-файл, затем вы редактируете их, сохраняете pack-файл. С инструментами «Assembly Kit» вы редактируете файлы, которые вам понадобятся в программе TWeak, затем в программе BOB вы отбираете файлы для включения в ваш pack-файл.

Главная идея в том, что вы редактируете исходные данные с программой TWeak. Исходные данные, я имею в виду xml-файлы, которые содержат все игровые базы данных. Они затем превращаются в действующие(рабочие) данные. Эти действующие(рабочие) данные затем превращаются в pack-файлы посредством программы BOB.

Проще говоря: Первичные данныев†’Ваше редактирование ...в†’Затем вы экспортируете действующие данные в Вы настраиваете свой pack-файлв†’Теперь у вас имеется свой mod (.pack-файл)в†’Загружаете modв Стимв†’Ожидание славы в моддинге

Использование TWeak:

Запустив TWeak.AssemblyKit.exe, вы увидите крупный пустой серый экрана, с полосой меню наверху.

Только выпадающее меню «Tools/Инструменты» полезно для нас. Вы получите выбор DirectX для инструментов визуализации(изображения). Теперь вы увидите DAVE, а также вы увидите отличный от других редактор.

DAVE – это «DAtabase Visual Editor/Визуальный редактор баз данных»; инструмент, который чаще всего будет применяться. Этот инструмент, который позволит нам делать наиболее распространенные в моддинге работы - редактирование базы данных.

Выберите из выпадающего списка редактор DAVE, вас будет приветствовать сообщение, обращающееся с вопросом: будете ли вы подключаться к базе данных; это база данных (первичные данные), с которой вы будете работать, все сохраняется у вас на диске. Выберите «Yes/Да» для продолжения.

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

«Connection/Соединение» позволяет нам подключаться/отключиться к(от) баз данных.
«View/Вид», где мы имеем доступ к разным компонентам редактора DAVE, позволяющего нам соверщать различные типы редактирования.
«Export/Экспорт» позволяет нам экспортировать элемент базы данных из первичных данных в наши действующие данные.
«Extra Tasks/Дополнительные задачи» и «Options/Опции», в большой степени не нужные на этой стадии для нас, не обращайте внимания на них.

«View/Вид»в†’«Table Launcher/Лунчер таблиц»: откроет окно, которое позволит вам выбрать таблицу базы данных для редактирования.
«View/Вид»в†’«Query Launcher»: это снова откроет окно, что позволит вам выбрать таблицу базы данных для редактирования, но ваши опции здесь базируются на данных, которые будут сохранены в файле формата «.esf».
«View/Вид»в†’«Form Launche»: это позволяет вам иметь доступ к большинству вложенных инструментов внутри редактора DAVE, которые при помощи «GUI/графического интерфейса пользователя» легко редактировать таблицы базы данных, как например, редактор построек.

Теперь мы используем простой пример для иллюстрирования широкого использования этих инструментов, мы отредактируем статы юнитов(отрядов, подразделений) и создадим файлы mod, pack с этими изменениями. В этом примере мы заменим юниту преторианской гвардии Рима мораль на значение равное 99.

1. В программе TWeak откройте Table Launcher, найдите таблицу базы данных, которая содержит таблицу статов юнитов, это – land_units_tables. Дважды щелкните по таблице, чтобы открыть ее.

2. Теперь наша таблица открыта, вы видите хорошо знакомую среду UI базы данных. Прокрутите вниз до Rom_Praetorian_Guard, прокрутите полосу прокрутки через столбцы и отредактируйте его, мораль)до значения 99.

3. Теперь мы сделали наши изменения в этой таблице, нам потребуется применить их. В верхней части этого приложения нажмите на кнопку «Apply/Применить». Вы заметите, в самом низу программы полосы состояния(статуса), записи нашего изменения:


«17:15:18> Значение для записи «Rom_Praetorian_Guard» ({8da7b901-cb9a-4038-a287-3905a99f99b2}) в таблице «land_units» было изменено с «70» на «99».

4. Наши исходные данные сейчас будут обработаны, вы можете пойти проверить исходные данные сами и увидеть изменения в файле land_units.xml. Нам теперь необходимо экспортировать наши отредактированные изменения в рабочие данные.

5. Выберите в верхней части из выпадающего меню пункт «Export/Экспорт», затем выберите «Export Single Table(s)/Экспорт выбранной таблицы». Вы теперь получите новую форму. Это форма, где мы будем выбирать, какие таблицы мы используем.

6. Вы заметите удобное окно списка, которое содержит таблицы, что мы редактировали; отсюда вы сможете выбрать таблицы, которые вы редактировали; мы выберем (двойным щелчком) таблицу land_units. Теперь она появится в правой, большей части, окна списка. Затем нажать «Export/Экспорт» в правой нижней части этой формы для экспорта наших выбранных таблиц.

7. Программа BOB теперь экспортирует нашу таблицу из наших исходных данных xml-файлов, и помещает ее в наш рабочий комплект данных. Она сейчас, также, в бинарной форме(двоичном виде), готова к использованию в pack-файле. Наша работа в программе TWeak выполнена; поэтому теперь нам необходимо переключиться на программу BOB.

Использование BOB:

О нет, только не другой инструмент?! Не беспокойтесь, вы не поверите, как просто использовать программу BOB. Если вы создали mod, то на этом этапе вы тут будете находиться, в буквальном смысле, в 99% от завершения.
Откройте файл BOB.AssemblyKit.exe, вам встретятся три стобца. Один показывает нам наши исходные данные, другой показывает наши рабочие данные и еще один показывает наши – .packs-файлы.
Программа BOB является инструментом, который использует наши исходные данные и превращает их в рабочие данные (двоичные файлы), которые мы сможем затем вложить в наши packs-файлы. Это почти всегда выполняется посредством программы TWeak и самостоятельно выполняется программой BOB; тем не менее, она может быть выполнена вручную, однако, очень рекомендует делать это с помощью функции экспорта программы TWeak, я не буду объяснять это здесь, так как не имеет смысла. Функция экспорта программы TWeak намного более интуитивная, что позволит вам легко распознавать какие таблицы «db/базы данных» вам действительно нужны для экспорта, выделяя те, которые вы отредактировали.
В этом месте, если вы откроете программу BOB, вы обычно получите некоторые рабочие данные, которые вам понадобятся превратить в pack-файл. Программа BOB означает «Конструкция(форма, сборка) на одной кнопке»… и пока вам необходим больше, чем 1 щелчок. Но вы сразу узнаете(поймете), почему программа BOB – это точно соответствующий названию инструмент, как только вы поработаете с ней

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

8. На данный момент мы имеем в нашей рабочей папке «data/данные» таблицу land_units базы данных; следует обратить внимание в этот момент, что у нас также имеется файл локализации там тоже. Мы не делали это лично, но этот файл создается, когда мы экспортируем таблицу land_units, она просто содержит в себе файл локализации, содержащий в таблице названия юнита (Обратите внимание на название полей в таблице). Мы хотим поместить наши рабочие данные в .pack-файл. Мы хотим выложить файл (.pack-файл), поэтому переходим элементам управления и выбираем файл mod.pack.

9. Теперь у нас имеется выбранный файл, который мы хотим создать, мы нажимаем «Start/Старт(пуск, запуск)» в правой нижней части, чтобы предоставить программе BOB сделать свое дело - создать для нас наш mod pack-файл.

10. Теперь, при условии отсутствия ошибок, мы найдем в своей папке «Total War Rome IIassembly_kitretaildata» наш готовый файл mod.pack! Он содержит все рабочие данные, которые мы экспортировали из наших исходных данных, которые мы редактировали в программе TWeak.

P.S.: За помощь с переводом говорим спасибо gurvinek2005

 

Видео-тутор от пана HunterWolf

Редактирование (коддинг) анимации (моддинг Total War: Rome 2)

Редактирование анимации в Total War: Rome 2

Компиляция: используем ресурсы игры. Сам исходный код курсивом

В игре есть юнит "Критские лучники", которые не используют свой щит в рукопашной схватке. Это можно исправить.
Нам понадобиться PFM (пакфайлменеджер) и три файла из data_rome2.pack.
Открываем в PFM data_rome2.pack, находим файл animation_tables.txt(data_rome2.pack\animation\animation_tables\),
извлекаем animation_tables.txt(пкм по файлу Extract Selected) куда Вам удобно. Открываем animation_tables.txt любым текстовым редактором, находим блок анимации "rome_man_bow":

animation_table rome_man_bow
{
skeleton_type rome_man_game
skeleton_type_cinematic rome_man


fragment rome_man_unarmed_fragment
fragment rome_man_cinematic_fragment
fragment rome_man_sword_fragment
fragment rome_man_sword_matched_combat_fragment
fragment rome_man_bow_fragment
}


Мы видим , что блок состоит из нескольких строк:
animation_table rome_man_bow - название блока анимации(понадобится нам в таблице land_units: data_rome2.pack\db\land_units_tables\)
{ - начало блока
skeleton_type - тип скелета
skeleton_type_cinematic - предполагю-движение скелета, связанное с его типом
Эти две строки нам не понадобиться менять(пока).Далее:
fragment - из этих fragment-ов и состоит анимация(движение) юнита в игре, с ними и будем работать, точнее с третьим и четвёртым.
} - конец блока
В data_rome2.pack(как и в data.pack) открываем animation_fragments(data_rome2.pack\animations\animation_fragments\), где видим эти самые fragments. Т.е. строки "fragment rome_man_unarmed_fragment" и т.д и т.п. ссылаються именно на папку animation_fragments. Выбираем из "списка" то ,что нам нужно, а именно:rome_man_sword_shield_fragment(мечник со щитом) и rome_men_sword_shield_matched_combat_fragment(движение юнита в бою).
Создаём новый блок анимации в animation_tables.txt(добавляем), назовём его "animation_table rome_man_bow_shield":

animation_table rome_man_bow_shield
{
skeleton_type rome_man_game
skeleton_type_cinematic rome_man


fragment rome_man_unarmed_fragment
fragment rome_man_cinematic_fragment
fragment rome_man_sword_fragment
fragment rome_man_sword_matched_combat_fragment
fragment rome_man_bow_fragment
}

Но в этой анимации не предполагаеться использование щита, только лук или меч. Заменяем строку "rome_man_sword_fragment" на "rome_man_sword_shield_fragment", а "rome_man_sword_matched_combat" на "rome_men_sword_shield_matched_combat_fragment":


animation_table rome_man_bow_shield

{
skeleton_type rome_man_game
skeleton_type_cinematic rome_man


fragment rome_man_unarmed_fragment
fragment rome_man_cinematic_fragment
fragment rome_man_sword_shield_fragment
fragment rome_man_sword_shield_matched_combat_fragment
fragment rome_man_bow_fragment
}

Далее необходимо "присвоить" нашу новую анимацию выбранному юниту. При помощи всё того же PFM извлекаем из data_rome2.pack файл land_units_tables куда хотите. Создаём свой pack(мод). В PFM File>New или Ctr+N, по умолчанию он будет называться "Untitled.pack". В этот "pack" мы добавляем(пкм по Untitled.pack>Add>Directory...или Shift+Ins) нашу папку(diretory) animations с нашим animation_tables и папку(diretory) db с land_units_tables. Сохраняем наш pack (по умолчанию в папке data игры), называем как хочется (у меня-anim_bow_shield.pack). Открываем land_units_tables(конечно в PFM). Находим нашего юнита (критских лучников целых три: Aux_Gre_Cretan_Archers, Gre_Cretan_Archers и Mer_Gre_Cretan_Archers, но модель у них одна на всех)и в колонке man_animation заменяем rome_man_bow на нашу rome_man_bow_shield, сохраняем(Save) наш pack(мод). Запускаем с помощью модменеджера или прописываем user.script.txt и любуемся результатами труда.

 

Обсудить на форуме.

Как поменять иконки юнитов (моддинг Total War: Rome 2)

Как поменять иконки юнитов (моддинг Total War: Rome 2)

Обсудить на ФОРУМЕ!

Моддинг Total War: Rome 2 набирает обороты. И вот первый сичевой тутор по моддингу Рима 2 - замена иконок юнитов. Автор - пан Terabyte

Итак, запускаем PackFileManager и открываем файл, data.pack который лежит примерно тут:

C:\Program Files (x86)\Steam\steamapps\common\Total War Rome II\data

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

Видим такую вот картину:

 

Последовательно жмем «плюсики» на папках ui =>units, а затем нажимаем правой кнопкой мыши на папке units и выбираем пункт Extract=>Extract Selected. Указываем папку куда выгрузить иконки юнитов и немного ждем.

 

Следуем в папку с выгруженными иконками и находим в ней папку mask, мы будем менять иконки для юнита «Велиты» римской фракции.

Находим в данной папке файл с именем rom_velites_mask_1.png и отрываем его в графическом редакторе способном работать со слоями. В моем примере будет использован Adobe Photoshop.

Делаем фон в данном файле полностью прозрачным и сохраняем его с тем же именем.

Важно! Прозрачный фон желательно использовать, если сама иконка юнита не будет содержать белый цвет.

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

Находим rom_velites.png, открываем её в редакторе и заменяем своей иконкой:

Сохраняем полученный нами файл с тем же именем, и возвращаемся в программу PackFileManager.

Идем в пункт Options и снимаем галочку с фразы CA Packs Are Read Only…

 

 

В появившимся окне выбираем пункт: I’m not afraid, coward!

 

При помощи плюсиков идем последовательно ui =>units=>mask. Находим в нехилом списке файлик с именем rom_velites_mask_1.png и удаляем его из *.pack файла.

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

 

После этого добавляем на его место созданный нами файл маски:

Точно такие же действия проделываем с файлом rom_velites.png. Его пусть в пак файле ui =>units=>icons.

Сохраняем изменения в Pack File Manager, при этом он на какое-то время «подвиснет».

Запускаем игру и смотрим итог наших усилий…

 

Как собрать юнит из запчастей - моделей (моддинг Total War: Rome 2)

Как собрать юнит из запчастей - моделей Total War: Rome 2

ВНИМАНИЕ!!! Перед прочтением сжечь!

В тексте, для корректного отображения на сайте, в блоках текста кода символы заменены на { код } ! Соответственно для того чтобы это работал в игре должно быть наоборот.

 

Пока нам не доступно создание новых моделей, и импорт их в игру, мы можем использовать лишь те модели что есть, но мы может править текстуры, плюс Рим2 наделён рядом отличных особенностей, таких как подкраска вертексов, например можно не вставляя новых текстур подкрасить\перекрасить те что есть,  мы может так же добавлять рандомность различным элементам( плюмажем например) использую для одного шлема несколько видов, так же нам доступно нанесению с помощью "альфа маски" на элементы различных узоров, т.е нам не нужно делать щиты с различными узорами, мы можем накладывать с референсных текстур узоров рисунок сверху на исходные. Так же разнообразие среди вариаций и используемых моделей( т.е меш и текстура), рандомно появляющихся на одном юните, т.е отсутствуют поголовные клоны в отрядах.

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

 

В первую очередь скачиваем вот этот инструмент Pack File Manage теперь распаковываем его и запускаем .exe. У меня по умолчанию стоят для файлов .pack «открыть с помощью Pack File Manage» поэтому я просто открываю model_rome2.pack находящийся примерно тут:  C:\Program Files (x86)\Steam\SteamApps\common\Total War Rome II\data , вам же надо открыть его через меню файл – открыть. Вся структура файлов игра состоит из неких архивов «паков» которые в свою очередь внутри разбиты на директории «папки» всё как в Виндовсков проводнике, а уж в них находятся конкретные файлы в бинарном формате. Все фалы в этих паках связаны ссылками друг на друга, и черпают информацию из соседних или из своего же пака. Так как файлы у нас можно сказать зашифрованные(язык для машин, даже изображение не что иное как простой набор цифр) мы можем их просмотреть или с помощью встроенных инструментов Pack File Manage или сторонними редакторами, в самих папках все файлы как бы имеют один формат, а вот извлекая или просматривая мы их преобразовываем в форматы в которых нам будет удобно. Сейчас нас интересуют файлы которые в простонародье назвали бы скрипты)) , так что они у нас в текстовом формате, я буду открывать их с помощью встроенных инструментов : ПКМ(по файлу)-Open-Open sa text…  Один важный момент вверху программы откройте вкладку Options и снимите галку «CA Packs Are Read Only»(только для чтения), в появившимся окне выбираем пункт: I’m not afraid, coward! , это позволит нам перезаписать исходные файлы

Теперь мы видим следующую картину:

{gallery}tutors/model_1_TWR2/1{/gallery}

Мы видим структуру папок в которой у нас отобразились файлы в данном случаи это файлы юнитов, я так же как и автор исходного тутора выбрал  gre_hippeus_lancers.variantmeshdefinition открыл его и увидел следующие:

{gallery}tutors/model_1_TWR2/2{/gallery}

Теперь давайте поговорим о структуре файла. В первую очередь хочется отметить довольно интуитивно понятные записи всех паков, не всматриваетесь, как в код пока не освоились, а читайте как книгу, при переводе 80% смыла записи становится вполне понятна, так же как и название самих директорий(про директории загнул, порой хрен пойми, думаю и вас на компе есть паки «111111» «teyhfhf» в которых вполне себе лежат снимки с отпуска и скриншоты из игры). Вообще, если собрались модить(кодить) старайтесь сначала видеть в коде не что-то эфемерное не понятное, а всего лишь запись, как текст, даже сам синтаксис этого языка вполне понятен, сейчас разберём всю эту запись и вы поймёте что не всё так страшно:

 

Разберу запись одного юнита, возможно записи немного разнятся чего-то нет, что-то есть, но поняв принцип вы сможете сами разобраться в других

 

Важный момент - в тексте для корректного отображения на сайте в блоках текста кода символы > заменены на { и }

 

Курсивом в коде мои комментарии:

 

 

{VARIANT_MESH} Основной блок в который всё и внесено по этому юниту(внешний вид)Все слоты\блоки имеют структуру { - открытие   {/ - закрытие

{SLOT name="skin" } Слот Лицо\кожа, скорее всего там где нет используется какой то общий фракционный(расовый тип)

{VARIANT_MESH}

{SLOT name="hair" } Слот волосы

{VARIANT_MESH_REFERENCE definition="VariantMeshes/_VariantModels/man/skin/greek_game_skin.VariantMeshDefinition" /}  - Вот тут запись, о том какие волосы у этого юнита, как я упоминал все файлы ссылаются друг на друга, и тут мы видим ссылку на другой файл «файл где прописана сама «вещь\предмет» и её название, в общем то по виду такой же адрес как у нас в проводнике, и как я говорил что всё довольно понятно:  дословно написано референс т.е ссылка

{/SLOT}

{SLOT name="beards" /} Слот Борода\усы, как видим её нет, ни кто не мешает нам добавить запись

{SLOT name="helmets" } Слот шлем, ниже вы видите несколько записей, это позволяет юниту рандомно использовать все виды шлемов, скорее рандом рассчитан: тут 4 предмета значит, каждый будет у 1\4 юнитов. Но если вы скажем добавите две одинаковые вещи то шанс их появления среди 4 остальных уже будет 50%, если 3 одинаковые то соответственно у 75% юнитов будет эта вещь. Так же стоит упомянуть что тут ссылки в файле  только на саму вещь, не на модель.

{VARIANT_MESH_REFERENCE definition="VariantMeshes/_VariantModels/man/helmets/hellenic_thracians_basic.VariantMeshDefinition" /}

{VARIANT_MESH_REFERENCE definition="VariantMeshes/_VariantModels/man/helmets/hellenic_thracians_crests.VariantMeshDefinition" /}

{VARIANT_MESH_REFERENCE definition="VariantMeshes/_VariantModels/man/helmets/hellenic_attic.VariantMeshDefinition" /}

{VARIANT_MESH_REFERENCE definition="VariantMeshes/_VariantModels/man/helmets/hellenic_attic_crest.VariantMeshDefinition" /}

{VARIANT_MESH_REFERENCE definition="VariantMeshes/_VariantModels/man/helmets/hellenic_phyrgians_basic.VariantMeshDefinition" /}

{/SLOT}

{SLOT name="clothing" } Слот одежда, как мы видим этот юнит в плане одежды довольно инкубаторский

{VARIANT_MESH_REFERENCE definition="VariantMeshes/_VariantModels/man/armour/linothorax.VariantMeshDefinition" /}

{/SLOT}

{SLOT name="cloaks" /} Слот для плащей, нету -промокнет

{SLOT name="greaves" } Слот для обуви, тут используется 2 модели

{VARIANT_MESH_REFERENCE definition="VariantMeshes/_VariantModels/man/greaves/greaves.VariantMeshDefinition" /}

{VARIANT_MESH_REFERENCE definition="VariantMeshes/_VariantModels/man/greaves/graves_basic.VariantMeshDefinition" /}

{/SLOT}

{SLOT name="shield" attach_point="weapon_03" } Слот для щитов, тут есть небольшое уточнение это attach_point="weapon_03" . Смотреть уточнение 1. Как мы видим тут целых 4 вида щитов

{VARIANT_MESH_REFERENCE definition="VariantMeshes/_VariantModels/man/shield/hellenic_hoplon_painted_hoplite.VariantMeshDefinition" /}

{VARIANT_MESH_REFERENCE definition="VariantMeshes/_VariantModels/man/shield/hellenic_hoplon_painted_hoplite.VariantMeshDefinition" /}

{VARIANT_MESH_REFERENCE definition="VariantMeshes/_VariantModels/man/shield/hellenic_hoplon_painted_hoplite.VariantMeshDefinition" /}

{VARIANT_MESH_REFERENCE definition="VariantMeshes/_VariantModels/man/shield/hellenic_hoplon_hoplite.VariantMeshDefinition" /}

{/SLOT}

{SLOT name="weapon_1" attach_point="weapon_01" } Слот для 1-го оружия. Так же Уточнение 1

{VARIANT_MESH_REFERENCE definition="VariantMeshes/_VariantModels/man/weapons/short_spears.VariantMeshDefinition" /}

{/SLOT}

{SLOT name="weapon_2" /} Слот для 2-го оружия.

{SLOT name="weapon_3" /} Слот для3-го оружия.

{SLOT name="weapon_4" /} Слот для 4-го оружия.

{/VARIANT_MESH}

{/SLOT}

{/VARIANT_MESH} Все слоты и блоки закрываются

 

Уточнение 1

attach_point=  Как мы видим есть дополнительная запись, для оружия, она показывает нам куда оружие автоматически (как скажут Как мы видим есть дополнительная запись, для оружия, она показывает нам куда оружие автоматически (как скажут Тридешники приатачивается) привязывается к кости скелета. Для остального, шлемов например, достаточно того что он лежит в слоте шлем. А так как оружие держится и переносится по разному используются разные варианты для разных видов оружия. Но в начале давайте уточним один момент, равность записей(bone – это кость):

"weapon_1": bone_1

"weapon_2": bone_2

"shield": bone_3

"weapon_3": bone_4

"weapon_4": bone_5

 

Далее оружие» приатачивается» по такой схеме:

Меч--Weapon bone 2

Гладиус--Weapon bone 2

Копьё--Weapon bone 1

Дротик--Weapon bone 5

Щит--Weapon bone 3

Пика--Weapon bone 1

Серп--Weapon bone 1

Штандарт--Weapon bone 1

Лук--Weapon bone 4

Стрелы--Weapon bone 5

Праща--Weapon bone 1

Камни--Weapon bone 5

Rhomphaia или фракийского серп--Weapon bone 1

Дубина--Weapon bone 2

Кинжал--Weapon bone 2

Меч--Weapon bone 2

Гладиус--Weapon bone 2

Копьё--Weapon bone 1

Дротик--Weapon bone 1

Щит--Weapon bone 3

Пика--Weapon bone 1

Серп--Weapon bone 1

Штандарт--Weapon bone 1

Лук--Weapon bone 4

Стрелы--Weapon bone 5

Праща--Weapon bone 1

Камни--Weapon bone 5

Rhomphaia или фракийского серп--Weapon bone 1

Дубина--Weapon bone 2

Кинжал--Weapon bone 2

 

И так теперь мы разобрались с записью обмундирования\вида юнита, давайте перейдём к конкретным его вещам. Мы видим ч то в слоте одежда идёт ссылка на файл с одеждой linothorax.VariantMeshDefinition Я вырезал его часть, что бы не занимать место. Давайте откроем его(адрес вы видите):

{VARIANT_MESH}

{SLOT name="tunics" } Слот для всей модели в котором её вариации состоящие из разных мешей(полигональных сеток), т.е к тому разнообразию в слоте юнита  добавляется и это. В данном случаи вы видите слоты для армора одежды, но могут быть слоты и для других элементов:  щиток, туника, плащ, …. Так же у каждой модели есть и «подмодель» imposter_model это спрайты этой модели, Может почитать в интернете что такое понятие спрайт в компьютерной графике

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/tunics/hellenic_tunic_cut.rigid_model_v2"  imposter_model="VariantMeshes/_VariantModels/man/tunics/e3_tunic.rigid_model_v2" } Как видите тут несколько одинаковых записей, тут работает тот же принцип что и у слотов юнита, те каких записей больше тех мешей и больше. Так же у каждой части модели есть ещё отдельные варианты это субмеши тут их 4

{SLOT }

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/armour/linothorax_basic_01.rigid_model_v2"  imposter_model="VariantMeshes/_VariantModels/man/armour/carthaginian_linothorax_a.rigid_model_v2" /}

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/armour/linothorax_basic_02.rigid_model_v2"  imposter_model="VariantMeshes/_VariantModels/man/armour/carthaginian_linothorax_a.rigid_model_v2" /}

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/armour/linothorax_basic_03.rigid_model_v2"  imposter_model="VariantMeshes/_VariantModels/man/armour/carthaginian_linothorax_a.rigid_model_v2" /}

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/armour/linothorax_basic_04.rigid_model_v2"  imposter_model="VariantMeshes/_VariantModels/man/armour/carthaginian_linothorax_a.rigid_model_v2" /}

{/VARIANT_MESH}

{/SLOT}

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/tunics/italian_tunic1_cut.rigid_model_v2"  imposter_model="VariantMeshes/_VariantModels/man/tunics/e3_tunic.rigid_model_v2"  mask0="1"  mask1="0" }

{SLOT name="armour" }

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/armour/linothorax_basic_01.rigid_model_v2"  imposter_model="VariantMeshes/_VariantModels/man/armour/carthaginian_linothorax_a.rigid_model_v2" /}

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/armour/linothorax_basic_02.rigid_model_v2"  imposter_model="VariantMeshes/_VariantModels/man/armour/carthaginian_linothorax_a.rigid_model_v2" /}

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/armour/linothorax_basic_03.rigid_model_v2"  imposter_model="VariantMeshes/_VariantModels/man/armour/carthaginian_linothorax_a.rigid_model_v2" /}

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/armour/linothorax_basic_04.rigid_model_v2"  imposter_model="VariantMeshes/_VariantModels/man/armour/carthaginian_linothorax_a.rigid_model_v2" /}

{/SLOT}

{/VARIANT_MESH}

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/tunics/italian_tunic1_cut.rigid_model_v2"  imposter_model="VariantMeshes/_VariantModels/man/tunics/e3_tunic.rigid_model_v2"  mask0="2"  mask2="0" }

{SLOT name="armour" }

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/armour/linothorax_basic_01.rigid_model_v2"  imposter_model="VariantMeshes/_VariantModels/man/armour/carthaginian_linothorax_a.rigid_model_v2" /}

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/armour/linothorax_basic_02.rigid_model_v2"  imposter_model="VariantMeshes/_VariantModels/man/armour/carthaginian_linothorax_a.rigid_model_v2" /}

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/armour/linothorax_basic_03.rigid_model_v2"  imposter_model="VariantMeshes/_VariantModels/man/armour/carthaginian_linothorax_a.rigid_model_v2" /}

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/armour/linothorax_basic_04.rigid_model_v2"  imposter_model="VariantMeshes/_VariantModels/man/armour/carthaginian_linothorax_a.rigid_model_v2" /}

 

{/VARIANT_MESH}

{/SLOT}

{/VARIANT_MESH}

 

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

Так же обратите внимание на параметр у некоторых слотов "  mask0="1"  mask1="0" этот параметр позволяет накладывать маску: подкраску по вертексам меша, что делает возможным внести цветовое многообразие в меши. Тут так же действует система - чем больше таких мешей, тем больше будет их процент в игре. Сами маски используются следующим образом, первая будет применена к 60% мешей, вторая и третья к 20% на каждую. Цвета масок установлены для фракций т.е у каждой 3 варианта масок, редактировать их можно в файле: data_rome2.pack\db\faction_uniform_colours_tables\faction_uniform_colours, вы видите таблицу в которой первый столбик фракции и три варианты цвета, на каждый по три колонки - это цвета RGB что это можно прочесть http://ru.wikipedia.org/wiki/RGB

 

Теперь на примере другого файла шлема с гребнем, рассмотрим более детально его структуру:

 

{VARIANT_MESH}

{SLOT } Слот шлема

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/helmets/roman_montefortino.rigid_model_v2"  imposter_model="VariantMeshes/_VariantModels/man/helmets/roman_montefortino.rigid_model_v2" }Сам шлем

{SLOT probability ="0.8" attach_point="crest_centre" } Центральный гребень, 0.8 – вероятность появления(скорее всего относительно единицы), attach_point="crest_centre" – так же место(точка) куда приатачивает, а именно центр

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/crests/black_feather_03.rigid_model_v2" /} Сами используемые гребни

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/crests/black_feather_03.rigid_model_v2" /}

{/SLOT}

{SLOT /} Гребень с боку, его нет

{/VARIANT_MESH}

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/helmets/roman_montefortino2.rigid_model_v2"  imposter_model="VariantMeshes/_VariantModels/man/helmets/roman_montefortino.rigid_model_v2" }

{SLOT probability ="0.8" attach_point="crest_centre" }

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/crests/black_feather_03.rigid_model_v2" /}

{/SLOT}

{SLOT /}

{/VARIANT_MESH}

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/helmets/roman_montefortino3.rigid_model_v2"  imposter_model="VariantMeshes/_VariantModels/man/helmets/roman_montefortino.rigid_model_v2" }

{SLOT probability ="0.8" attach_point="crest_centre" }

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/crests/black_feather_03.rigid_model_v2" /}

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/crests/black_feather_03.rigid_model_v2" /}

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/crests/black_horsehair_split_01.rigid_model_v2" /}

{/SLOT}

{SLOT /}

{/VARIANT_MESH}

{/SLOT}

{/VARIANT_MESH}

 

Вы видите что тут тоже есть значительно рандомное разнообразие.

 

Теперь перейдём ещё к одному моменту это модели щитов:

 

hellenic_hoplon_painted_hoplite

{VARIANT_MESH}

{SLOT } Слот самого щита, далее его вариации

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/shield/hellenic_shield_hoplon_painted2.rigid_model_v2"  decal_diffuse="VariantMeshes/_VariantModels/man/patterns/hellenic/decal_diffuse"  decal_normal="VariantMeshes/_VariantModels/man/patterns/hellenic/decal_normal"  imposter_model="VariantMeshes/_VariantModels/man/shield/hellenic_shield_hoplon.rigid_model_v2" /} Тут  вы видите меш самого щита, а так дополнительные текстуры дифуза и нормали, он накладываются как маска сверху основной текстуры щита, имеют префикс decal – или наклейка, картинка… Это позволяет не делая новых текстур назначить любые гербы, царапины, какие то элементы…, т.е вы можете сделать, так что бы у вас в отряде у юнитов были щиты разной степени повреждения и изношенности. Также тут применяются и маски по вертексам, как и в примере туники. На деле, ссылка идёт не сам файл текстуры, а на файл в котором перечислены эти текстуры, в котором и есть записи о текстурах. В файле находится несколько текстур с разными орнаментами, т.е установив decal_ текстуру, вы выбираете не одну, а сразу столько её вариаций сколько прописано в файле decal_...

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/shield/hellenic_shield_hoplon_painted2.rigid_model_v2"  decal_diffuse="VariantMeshes/_VariantModels/man/patterns/hellenic/decal_diffuse"  decal_normal="VariantMeshes/_VariantModels/man/patterns/hellenic/decal_normal"  imposter_model="VariantMeshes/_VariantModels/man/shield/hellenic_shield_hoplon.rigid_model_v2" /}

{VARIANT_MESH model="VariantMeshes/_VariantModels/man/shield/hellenic_shield_hoplon_painted2.rigid_model_v2"  decal_diffuse="VariantMeshes/_VariantModels/man/patterns/hellenic/decal_diffuse"  decal_normal="VariantMeshes/_VariantModels/man/patterns/hellenic/decal_normal"  imposter_model="VariantMeshes/_VariantModels/man/shield/hellenic_shield_hoplon.rigid_model_v2"  mask1="2"  mask2="1" /}

{/SLOT}

{/VARIANT_MESH}

 

И так мы поняли как и что расположено и теперь можем взять одно и заменить на другое, учтите текстуры мы редактировать можем переписывая исходные, а меши нет. Текстуры можно редактировать довольно просто: Установите Фотошоп или Гимп или любую программу поддерживающею растровый формат .dds установите в свойствах файла .dds открывать по умолчанию с помощью неё и в Pack File Manage нажмите ПКМ(по файлу)-Open-Open External… потом сохраните изменения после редактирования в 2D-редакторе. Все текстуры перечислены в файле риг. модель, открыть и увидеть все приписанные текстуры можно с помощью любого HEX идитора.

Более подробно о ре-текстурировании в следующих сериях нашего модосериала.