King's Bounty: Dark Side

King's Bounty: Dark Side

39 ratings
Моддинг King's Bounty Darkside. Часть 1. Создание и редактирование юнитов.
By CbIHoK
Серия гайдов по самому подробному описанию моддинга игры King's Bounty Тёмная Сторона. Гайды созданы автором глобального проекта "Saturation Mod" и будут охватывать практически все аспекты игры, которые вообще можно модифицировать. Данная информация будет интересна в первую очередь тем пользователям, кто хочет заняться моддингом самостоятельно, а также тем людям, кому любопытно внутреннее устройство игры. Большинство методов, описанных в данном руководстве - будут применимы и к другим частям King's Bounty.
2
7
2
   
Award
Favorite
Favorited
Unfavorite
Вступление
Доброго времени суток, уважаемые игроки. На связи Molder, также известный как CbIHoK, автор глобального проекта "Saturation Mod" для King's Bounty Темная Сторона. Идея подобных гайдов возникла на основе огромного количества информации, накопленной в ходе нескольких лет работы над этой замечательной игрой. С помощью этих руководств вы сможете самостоятельно заняться игровым моддингом юнитов, артефактов, навыков, медалей и прочего, с некоторыми ограничениями. От себя скажу, что по моему мнению - подобными фактами стоит делиться со всеми желающими, поэтому начнём.

Вашему вниманию представляется серия подробных гайдов по различным способам моддинга игры King's Bounty: Darkside, причем все эти способы также будут работать и в других частях данной франшизы с небольшими изменениями и частными исключениями. Обратите внимание, что для моддинга лучше всего подходит официальная версия Steam. На других версиях успех не гарантируется.

Сегодняшний гайд будет посвящен вопросам, которые интересуют многих:
Как создавать и редактировать юнитов в King's Bounty? Какие навыки и программы для этого нужны? Сколько времени все это занимает?

Список необходимых программ для моддинга юнитов
Итак, вы решили сделать нового юнита для своего мода, или просто хотите попробовать из любопытства, при этом у вас есть некоторое представление о том, чем будет являться новый юнит. Первое, чем стоит запастись - это программами для моддинга юнита, список здесь невелик:
  1. Notepad, он же стандартный блокнот, понадобится для работы с файлами .txt, .atom, .lua
  2. WinRaR для считывания, распаковывания, редактирования и поиска файлов из архивов формата .kfs
  3. Hex Editor или аналогичная программа для считывания файлов .bma в шестнадцатиричном формате
  4. XnView или аналогичная программа для работы с файлами изображений .png, .dds
  5. PhotoShop или GIMP для расширенной работы с файлами изображений .png, .dds


Рекомендуемые программы для основ моддинга.
Важные игровые архивы для работы
Теперь немного о внутреннем устройстве игры и необходимых для нас игровых файлах. Большую часть необходимых файлов можно найти в архивах data.kfs , ses.kfs, а также loc_ses.kfs.

Архив data.kfs содержит различные визуальные файлы для игры - частицы, эффекты, некоторые атомы юнитов, объектов и прочего.
Находится по адресу папка игры/data/data.kfs

Местоположение архивов ses.kfs и loc_ses.kfs

Архив ses.kfs содержит различные файлы для работы игры - скрипты юнитов, квестов, героев, локаций.
Находится по адресу папка игры/sessions/darkside/ses.kfs

Обратите внимание - в целом, игре все равно, где именно хранятся файлы из архивов data и ses, однако лучше соблюдать установленный алгоритм распределения файлов. При желании и для удобства архивы можно распаковать, только вот обратно их придется запаковывать с помощью добавления в существующий архив формата .kfs, а не делать его с нуля.

И последний архив, он же loc_ses.kfs. По умолчанию этот архив содержит весь текст игры на русском языке, и смешивать его с другими архивами, а также распаковывать - крайне не рекомендуется.
Находится по адресу папка игры/sessions/darkside/loc_ses.kfs

Местоположение архивов ses.kfs и loc_ses.kfs
Основные форматы файлов юнитов
Далее о самих файлах. В игре King's Bounty используются следующие форматы, связанные с юнитами:
  1. Файлы .atom, они же файлы атомов. Являются особым текстовым шаблоном для юнита или объекта, при этом содержат информацию о большинстве его характеристик. Именно здесь находится широчайшее поле для возможных изменений существа в численном выражении. Редактируются данные файлы обычным Блокнотом и сохраняются в нём же, содержатся в архивах data.kfs и ses.kfs.
  2. Файлы .bma, они же файлы анимированных моделей. В качестве отдельных элементов анимации используется дополнительный формат .bsa для подвижных моделей и .bms для статичных объектов. На данный момент не существует ни одного способа адекватно редактировать данные файлы для интеграции их в игру, так что использовать можно только уже существующие модели, копируя их из архива папка игры/data/models.kfs. Это самая важная причина, по которой для создания новых существ в King's Bounty приходится перекрашивать существующих юнитов. Несмотря на то, что полностью открыть данные файлы проблематично, их можно незначительно редактировать с помощью программы Hex Editor.
  3. Файлы .lua, содержащие в себе скрипты для работы игры. Открываются и редактируются блокнотом, но из-за невероятного количества возможностей данный формат будет рассматриваться в последующих гайдах. Данные файлы содержатся в архиве ses.kfs.
  4. Файлы .dds, т.е. файлы текстур в графическом формате, определяют внешний вид существа. Редактируются с помощью XnView и GIMP, создавать новые можно, однако игра вряд ли адекватно их воспримет в плане оболочки моделей. Этот тип файлов вы можете найти в архивах папка игры/data/textures.kfs и папка игры/data/textures_game.kfs
  5. Файлы .cms, они же файлы физических границ объекта. Отвечают за столкновение или проходимость объектов и юнитов на глобальной карте. Любой объект должен иметь подобный файл, иначе с ним нельзя будет взаимодействовать. Данный формат открывать и редактировать нет необходимости, достаточно копировать уже существующие файлы с нужным вам размером объекта.
  6. Файлы .png, изображение юнита в окне интерфейса героя, а также картинки талантов, заклинаний и прочего. Создаются и редактируются любыми удобными для вас графическими редакторами, лично мне достаточно XnView и GIMP.
Обязательные файлы для создания юнита
После того, как вы немного ознакомились с файлами игры, приступим к построению списка необходимых и дополнительных файлов для создания нового юнита в King's Bounty Darkside.
  1. Модель юнита в формате .bma с новой текстурой существа.
    Пример: footman_new.bma
  2. Текстура юнита в формате .dds. Можно копировать и редактировать существующую. Пример: footnew.dds
  3. Портрет юнита .png для иконки в окне героя и на глобальной карте.
    Пример: footman_new.png
  4. Атом юнита на арене в формате .atom.
    Пример: footman_new.atom
  5. Атом армии юнита на глобальной карте в формате .atom.
    Пример: army_footman_new.atom
  6. Файл столкновения для юнита в формате .cms, копируем существующий.
    Пример: collision_footman_new.cms
  7. Множественные изменения в файле loc_ses.kfs, нужно будет прописать название и описание юнита.
Дополнительные файлы для создания юнита
  • Текстурная маска .dds, используется для блестящих доспехов. Можно менять только
    у готовых моделей, изначально обладающих маской.
    Пример: footman_mask_spec.dds
  • Файл маски .vmsp, используется для параметров маски и модели. Работает только у
    готовых моделей, открывается Блокнотом.
    Пример: footman.vmsp
  • Файл textures.sub - особый файл игры, отвечающий за наличие альфа-канала у
    любой модели. Открывается Блокнотом. Необходим для удаления части текстур модели,
    находится в папка игры/data/declarations.kfs.
  • Файлы .pt, .ptb и .atom - различные частицы и визуальные эффекты для юнита. Можно создавать новые копированием или менять готовые, открывать достаточно лишь атомы.
    Пример: attack_footman_bright.ptb
  • Многочисленные файлы с форматом .lua и .txt, тема отдельного гайда или даже
    нескольких гайдов.

Далее рассмотрим каждый обязательный файл и работу с ним поподробнее.
Пункт 1. Настройка модели существа
Первое, что нам необходимо - это базовая модель юнита, то есть то существо, что мы будем перекрашивать. Здесь вы ограничены разве что моделями в наличии и своей фантазией. В качестве модели можно брать любой юнит, участвующий в бою. Нельзя брать объекты или нпс - у них не будет соответствующих анимаций. Допустим, вы решили добавить людям нового лучника, используя обычного Лучника людей как шаблон. Мы знаем, что в игре он зовётся Лучник, но не знаем, как этот юнит называется в файлах игры, а ведь нам нужно местоположение его модели. Для этого идём в архив loc_ses.kfs и находим там файл rus_units.lng, через поиск ищем в нем "Лучник". Название после cpn_ и cpsn_ - это и есть системное имя юнита, в данном случае это будет bowman.

Экран архива loc_ses.kfs, где мы находим файл rus_units.lng


Поиск системного имени юнита по файлу rus_units.lng

Теперь найдём атом Лучника и определим его модель. Для этого воспользуемся поиском "bowman.atom" в архивах data.kfs и ses.kfs, для удобства можете сортировать файлы по имени. В данном случае наш файл окажется в архиве data. Открывает файл bowman.atom с помощью блокнота и видим следующее:


Определение модели юнита по файлу атома юнита. В данном случае нужная нам модель будет bowman.bma

Здесь нас интересует начало файла, где мы видим, что модель лучника называется bowman.bma. Данное название вовсе не обязательно совпадает со стандартным системным именем юнита.

Идём по адресу: папка игры/data/models.kfs, ищем в архиве файл bowman.bma. На данном этапе обязательно сделайте резервную копию архива и распакуйте его в другом месте, чтобы достать сам файл отдельно. Пусть ваш новый юнит будет называться bowman_new, соответственно, его модель будет называться bowman_new.bma (копия файла bowman.bma). Открываем файл bowman_new.bma (предварительно скопированный) с помощью программы Hex Editor, и с помощью поиска в данной программе вводим ".dds". На экране мы увидим следующий текст в шестандцатиричном формате:


Среди всех этих цифр и букв мы ищем название нужной нам текстуры. В данном случае она называется bowman_diff.dds

Первый файл в формате .dds обычно заканчивается на _diff и является обычной текстурой существа. Последующие файлы уже связаны с блестящими элементами текстурной маски, пока что нам это не нужно.
Пункт 2. Создание и редактирование текстуры существа
Итак, текстура Лучника называется bowman_diff, а наша модель называется bowman_new.bma. Как же нам открыть или изменить эту текстуру? Идём в архив "папка игры/data/textures.kfs", копируем и распаковываем в другом месте, достаём файл bowman_diff.dds и открываем его с помощью XnView, увидев страшную картину, которую мы и будем пытаться перекрасить:


Стандартная текстура Лучника в программе XnView

Для удобства редактирования файла текстуры советую пользоваться не только XnView, но и программами вроде Photoshop или GIMP, в них больше возможностей для обработки изображения. Однако формат .dds ими не всегда поддерживается, поэтому можно использовать XnView как преобразователь .dds в .png и обратно, качество от этого не пострадает.

После того, как вы перекрасите текстуру для своего нового юнита, нам необходимо, чтобы игра считывала именно нашу текстуру, а не старую. Для этого необходимо открыть наш новый файл модели bowman_new.bma в Hex Editor и изменить любую букву в названии текстуры.
!Внимание! Можно лишь заменять буквы, но нельзя дописывать новые - модели от этого ломаются в игре. Вместо bowman_diff.dds сделаем bowmanndiff.dds, сохраняем файл в Hex Editor. Теперь у нас есть две модели с одинаковым скелетом и анимациями, но разные по цвету.

Лично я не занимался перекраской юнита "Лучник", но покажу разницу в текстурах для некоторых юнитов из своего мода:

Текстура Послушницы из оригинала и перекрашенная Оккультистка

Текстура Чоши из оригинала и перекрашенный Василиск

Текстура Жрицы Крови из Оригинала и перекрашенная Морская Колдунья



Пункт 3. Создание портрета существа
Так как текстура готова, нам нужен портрет нового существа. Он должен иметь размеры 120 на 153 пикселя формата .png, причем название его должно совпадать с его системным именем. В нашем случае это будет bowman_new.png. Обычно для создания подобного делают скриншот юнита в игре, после чего редактируют фон по желанию. Также возможно использовать стандартный редактор Перекрёстков миров для этой цели, однако сначала придется переносить туда новые текстуры. Все это вопросы вкуса - главное, чтобы у существа была хоть какая-то картинка, близкая по стилю игре King's Bounty и обладающая фоном, свойственным данной расе. Для редактирования фона я советую использовать Photoshop и GIMP.

Примеры подобных картинок существ, текстуры которых вы могли наблюдать выше:



Портрет юнита в игре для Послушницы и Оккультистки



Портрет юнита в игре для Чоши и Василиска



Портрет юнита в игре для Жрицы Крови и Морской Колдуньи
Пункт 4. Создание файла атома существа
У нашего существа есть модель, текстура и портрет, но до сих пор нет каких-либо характеристик. Для создания атома существа возьмем готовый файл bowman.atom, скопируем и переименуем копию в bowman_new.atom. Как видите, системное имя продолжает повторяться, и для удобства стоит продолжать это делать всегда.

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


4.1. Структура файла атома юнита

Файл атома существа, часть 1


Вкладка main.

class - показывает класс существа, в данном случае это chesspiece (юнит). Еще бывают классы throwable (снаряд), hollow (частица), pawn (объект) и boss (босс).

model - указывает имя модели существа, мы должны переименовать её в bowman_new.bma.

spawnscale - модификатор размера текущей модели. Можно прописать больше или меньше 1, но тогда анимации юнита будут выглядеть нестандартно. Рекомендуется диапазон от 0.9 до 1.1.

blend - непрозрачность модели от 0 до 1. Можно использовать для призраков и ледяных существ, при этом 0 - полная прозрачность и невидимость модели.

cullcat - параметр актуальности юнита. У всех рабочих существ всегда равен 0.


Вкладка arena_params.

features_label - указание на строчку, связывающую наш юнит с конкретным описанием в архиве loc_ses.kfs.

features_hint - указывает шаблоны для текста в формате заголовок/описание при наведении мышки, это также прописывается в loc_ses.kfs. Пока что мы оставим описания на самый конец гайда.

Далее идут достаточно понятные характеристики существа на английском, остановлюсь лишь на самых неочевидных (которые не все есть в данном файле, но присутствуют в других юнитах).

movetype - тип передвижения юнита по арене. Стандартом является 0, т.е. перемещение пешком. Можно еще задать парение (1), полет (2) и фантомное парение (-2).

hitback - ответные удары. Не отвечает (0), отвечает лишь однажды (1), отвечает всегда (2).

hitbackprotect - враг отвечает на атаку (0) и враг не отвечает атаку (1).

realdeath - остаётся тело существа на арене после гибели всего отряда (0) или же не остаётся (1).

features - особенности юнита для внутриигрового кода. Используются для определения возможности каста заклинаний, эффектов и прочего.

ondamage - то, что происходит после гибели отряда данного существа, например - статуя тролля.

posthitmaster - то, что происходит после того, как данный юнит нанёс урон (или сделал конкретное действие). Например - Отравление, Оглушение, Страх.

posthitslave - то, что происходит, когда данный юнит получил урон (или с ним сделали конкретное действие). например - дополнительный ход Палачей, шипы Бронтора, разложение Гниющих Зомби.

each_turn_script - то, что происходит, когда данный юнит начинает свой ход. Например - Регенерация или Очищение.

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

resistances - сопротивляемости каждому типу урона. Всего в Тёмной стороне 6 типов урона, и если какой-то из них не указан в атоме, то в игре он будет равен 0%.

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

group 1,1 - означает, что это первая базовая атака, в данном случае ближний бой.

group 1,2 - означает базовую атаку при каком-то условии, что рядом нет врагов.

custom_params - особые числовые или текстовые значения, которые будут считываться скриптом для данной атаки. Используется для универсальных скриптов разных существ - например, чтобы прописать разный шанс Отравления после атаки.

class - тип атаки. Существует базовая атака в ближнем бою moveattack, стрелковая атака с неограниченной дальностью throw, заклинание spell и все остальные атаки scripted. В зависимости от класса атаки способность будет запрашивать разное количество информации. Так, moveattack работает по умолчанию, throw нужно прописывать дальность, снаряд, штрафы и прочее, для классов spell и scripted нужно указывать функцию и условия скрипта.
4.2. Структура файла атома юнита

Файл атома существа, часть 2

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

dontusenearenemy - запрет на использование рядом с врагом, для талантов это нужно писать принудительно.

reload - количество ходов до следующего использования данного таланта. Учитывает текущий раунд, так что "Перезарядке 1" соответствует reload=2.

moves - количество зарядов данной атаки в начале боя.

endmove - завершать ли ход при использовании данной способности. 0 означает продолжение, 1 - завершение хода.

hinthead - заголовок для наименования таланта, высвечивается при наведении курсора. Прописывается далее в loc_ses.kfs.

hint - подробное описание таланта при наведении курсора на иконку таланта. Также прописывается в loc_ses.kfs.

script_attack - вызываемая функция при использовании данного таланта. Тема будущих гайдов из-за своей обширности.

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

features - особенности существ, на которых подействует данная способность.

nfeatures - особенности существ, на которых не подействует данная способность.

picture_small - маленькое изображение таланта на панели юнита. Имеет размер 26 на 26 пикселей в традиционной золотой рамке. Должно быть в файлах игры лишь в одной форме.

picture - файлы в формате .png для отображения на нижней панели в бою. Должны иметь размер 43 на 44 пикселя и обязаны присутствовать в файлах игры в четырёх формах: _normal (стандартный вид), _disabled (на перезарядке или недоступно), _onmouse (наведение мышки) и _onpress (при нажатии). Новые картинки вы должны искать или создавать сами, если же вы хотите использовать существующие - то вам придётся искать их названия в атомах юнитов, либо их можно достать из архива interface_textures.kfs, там они содержатся в больших файлах tex1, tex2, tex3 и tex4.
4.3 Структура файла атома юнита

Файл атома существа, часть 3

use_rune1,2,3 - прописанные Руны для викингов в Darkside. Обязательно должны быть в таком виде у каждого юнита, даже если он не является викингом.

arena_bonuses - бонусы или штрафы от определенных типов арен. Например - бонусы защиты на лавовых аренах для демонов. На каждом типе может быть только один бонус или штраф.

script_data - переменные, записанные в данном существе на начало боя. Например, здесь прописывается Боевой Дух людей или параметр уклонения юнита.


Вкладка scripts.

scenario - не трогаем, у всех оставляем стандартное значение.

idle - не трогаем, у всех оставляем стандартное значение.

after_move - скрипт после завершения хода юнита нажатием "Защиты", по умолчанию растёт Защита из строчки defenseup. Например, здесь прописано впадание медведей в спячку.


Вкладка animations.

Здесь, как следует из названия - прописаны различные анимации в формате 25:50, где 25 - число кадров в секунду, 50 - количество кадров для данной анимации. Также можно прописывать последовательность анимаций для более длительных действий. Эти строчки понадобятся вам, если вы захотите ускорить или замедлить конкретное существо. Желательно здесь ничего особо не менять, но учитывать названия анимаций в дальнейшем.
4.4 Структура файла атома юнита

Файл атома существа, часть 4

Анимации, записанные с приставкой "@" - означают настройки камеры и прозрачности для эпичных моментов в бою. Данную настройку изменять не обязательно.

Вкладка editor.

Стандартные настройки юнита для редактора, трогать не рекомендуется.
4.5 Структура файла атома юнита

Файл атома существа, часть 5

Вкладка attachments.

trans - означает позицию частицы относительно модели юнита, измеряется в трёхмерных координатах x, y, z и трёх координатах поворота. Последнее число означает размер частицы.

animation - на какой анимации будет воспроизводится данный эффект или частица. Если не указано, то будет воспроизводится на юните всегда.

frame - кадры начала и прекращения отображения частицы через дробь.

file - имя файлы частицы, обычно в формате .ptb.

fadetime - кадр затухания анимации или звука по номеру кадра в анимации.

Данные файлы отвечают за прикрепление к юниту частиц, эффектов, звуков и даже других моделей. Список очень отличается от юнита к юниту. Именно здесь можно сделать постоянное демоническое пламя, как у Церберов, или добавить эффекты магии, как у посоха Волхвов. Каждую частицу можно привязывать к отдельной анимации, то же самое и со звуками. Частицы и файлы звуков желательно брать готовые, уже существующие в игре. Из-за сложности определения координат привязки рекомендуется использовать стандартный редактор карт для Перекрёстков Миров.
4.6 Структура файла атома юнита

Файл атома существа, часть 6

Здесь указаны названия анимаций для данной модели юнита. Менять здесь что-то не рекомендуется.

Итак, теперь, когда вы знакомы с файлом .atom, вы уже можете создать свой bowman_new.atom. Разумеется, для начала я советую изменять лишь числа и пока что не лезть в скрипты. Также в качестве заготовки для описаний следует изменить cpi_bowman_feat на cpi_bowman_new_feat. В любом случае, у вас уже будет юнит с новой текстурой и своими характеристиками, отличными от оригинала.
Пункт 5. Создание атома армии существа
В данном разделе мы создадим атом юнита на глобальной карте, чтобы он мог существовать, как армия. Ищем файл army_bowman.atom в data.kfs и копируем его, называя army_bowman_new.atom. достаточно открыть файл блокнотом и поменять модель на bowman_new.bma. Из остальных настроек - можно поиграть со скоростью ходьбы, бега и поворота юнита, все настройки ниже являются стандартными, поэтому их изменения нежелательны.


Внешний вид файла армии юнита
Пункт 6. Создание файла столкновения для существа на глобальной карте
Заходим в архив models.kfs, достаём из него файл collision_bowman.cms, копируем и переименовываем в collision_bowman_new.cms.
!ВНимание! Без этого файла вы не сможете напасть на данный юнит на глобальной карте.
Пункт 7. Описание особенностей и талантов существа
Осталось прописать текст, связанный с вашим существом. Для начала разберёмся со строкой "Особенности" существа. Открываем архив loc_ses.kfs и ищем там файл rus_units_features.lng, видим внутри него следующее:


Внешний вид файла rus_units_features.lng

Здесь достаточно добавить строчку "cpi_bowman_new_feat=Светлый, Стрелок, Боевой Дух.", которая будет соответствовать новому описанию особенностей юнита. Если вы хотите посмотреть или изменить то, что будет высвечиваться при наведении курсора на особенность, например, "Боевой Дух", то в этом же файле вы можете найти следующее:


Заголовок и описание для конкретной особенности юнита

Как и во всех остальных местах, header отвечает за слова в заголовке, hint отвечает за конкретное описание. Автоматически игра описания особенностей и талантов не изменяет, так что всегда надо прописать header/hint в юните, потом добавить слово через запятую в cpi_bowman_new_feat, а в конце добавить текст, который будет соответствовать вашему header и hint.

Аналогично в юните прописываются названия и описания талантов: в атоме будут их англоязычные названия ссылки, вроде special_dragon_arrow_head, сами же тексты талантов нужно искать в rus_units_specials.lng. Единственная разница будет в том, что у талантов будет еще строчка, отвечающая за цвет заголовка, например "special_phoenix_tears_head=^special_tC^[Good]".
Промежуточные итоги
Итак, подведём промежуточные итоги. Всего у нас должно быть готово 7 обязательных файлов:
  1. Модель bowman_new.bma с изменённым на один символ названием текстуры внутри.
  2. Текстура bowmanndiff.dds, перекрашенная на ваше усмотрение.
  3. Портрет bowman_new.png.
  4. Атом bowman_new.atom с изменёнными на ваше усмотрение характеристиками.
  5. Атом army_bowman_new.atom для глобальной карты.
  6. Файл collision_bowman_new.cms для взаимодействия на глобальной карте.
  7. Название и описание в loc_ses.kfs, а именно в rus_units.lng, rus_units_features.lng, rus_units_specials.lng.

Для того, чтобы соблюдать установленный порядок, поместим файлы в игру следующим образом: bowman_new.atom и army_bowman_new.atom добавим в ses.kfs, все остальные файлы поместим в data.kfs. Если вы уже распаковывали данные архивы, то файлы нужно поместить в одноимённые папки. Архив loc_ses.kfs лишь подвергается изменениям и не распаковывается.

Осталось лишь протестировать существо в игре. Для этого можно попробовать дать игроку отряд данного типа в начале игры: ищем в ses.kfs (предварительно делаем резервные копии) файл hero.txt, видим следующую картину:


Файл героя на старте игры

Заменяем, например, hyena на bowman_new и сохраняем файл. Начинаем новую игру за Воина и смотрим новое существо у себя в войске. Также существа появятся в продаже и в армиях врага, но тут есть много нюансов, которые будут описаны в следующих гайдах.

!Внимание! Если вы сделаете ошибку в названии или не до конца пропишете юнита в игре - при начале партии у вас будет обязательный вылет игры, пока вы всё не поправите. Обязательно делайте резервную копию оригинальной игры до работы с модами.

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

Если ваш юнит изначально обладал файлом маски (это видно по наличию не одной, а нескольких текстур .dds в файле .bma, который мы смотрим в Hex Editor), то вы можете изменить расположение блестящих частей и тип их отражений. Для этого действуем аналогично схеме создания новой текстуры, только редактируем файлы наподобие footman_mask_spec.dds, а сам тип свечения выбираем из готовых, обычно они называются cubenv_silver.dds или cubenv_gold.dds. Помним про возможность только замены букв в названиях при редактировании файла .bma.


Информационный файл текстурной маски.
Некоторые параметры маски текстуры можно изменять в файле .vmsp, правда, есть подозрение, что игра не всегда реагирует на изменения в этом файле. Название файла должно содержать системное имя юнита. В целом, можно не затрагивать данный файл.


Список юнитов с альфа-каналом.
По адресу папка игры/data/declarations.kfs вы можете найти файл textures.sub, который отвечает за наличие альфа-канала (т.е. визуально пустого места) в конкретной текстуре. Это относится к таким существам, как Грифоны (из-за перьев), Энты (листья на ветках) и прочих существах, у которых текстуры ложатся на неправильную форму. Чтобы наша текстура могла иметь пустые места - мы должны прописать её в данный файл новой строкой:


Список текстур в игре, альфа-канал у который равен единице (присутствует)


Добавление визуальных эффектов и частиц к модели юнита.
Вы можете добавлять различные визуальные эффекты для анимаций или действий юнита с помощью редактирования вкладки attachments в атоме каждого конкретного юнита, формат частиц будет .pt, .ptb и даже .atom. К сожалению, записано там все в не самом понятном формате, плюс выбор частиц огромен - их в игре не менее тысячи штук. На данном этапе советуется копировать эффекты от одних юнитов другим и экспериментировать, подробнее будет описано в следующих гайдах. Сами эксперименты советуется проводить в редакторе карт для Перекрёстков Миров.


Игровые скрипты и конфигурационные файлы.
На данном этапе советую заняться банальным копированием способностей от одних существ другим, именно с этого всё и начинается. Например, попробуйте взять Ядовитую стрелу у Скелета-лучника (файл archer.atom) и дать её нашему новому bowman_new.atom. Чтобы скопировать способность, достаточно добавить её полную вкладку (на скриншоте ниже) и прописать её через запятую в attacks. Учтите, что максимальное количество активных талантов не может быть больше трёх, так что ваша способность появится у существа только в том случае, если будет свободное место для таланта. Что касается конкретно bowman_new, вы можете заменить dragon на poison. В итоге на данное существо не будет корректно действовать заклинание "Стрелы Дракона", зато появится три таланта на выбор изначально.


Копирование способности у Скелета-лучника. Также необходимо скопировать название атаки из attacks

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

На этом все, до встречи в следующих гайдах. С вами был Molder aka CbIHoK.