
- •Структура данных игры
- •Примечание:
- •Примечание:
- •Боевая система и вооружение
- •Юниты и здания (ветка ebps)
- •Invulnerable — фактическое бессмертие юнита или здания. Внимание, такой юнит нельзя
- •Специфицеские параметры зданий
- •Модификаторы
- •Initial_delay_time — время подготовки к применению абилки. Range — дальность действия способности. Recharge_time — время перезарядки способности.
- •Боевые построения
- •Локализация мода
Примечание:
Информация об ошибках, обнаруженных игрой, пишется в файл warnings.log, ближе к концу файла. В начале идет техническая информация, которая нас не интересует, а ближе к концу лога пишется уже причина падения игры, или просто ошибки.
Если мод по каким-либо причинам не хочет запускаться, а игру запустить надо, можно вручную
изменить текущую модификацию в файле Local.ini в корневой папке игры.
Строка currentmoddc= указывает папку текущего мода.
Для нашего мода currentmoddc=example_mod (регистр букв не имеет значения).
4
Собственно распаковываются файлы в папку мода. В нашем случае это Example_Mod\Data и
далее по иерархии.
Игра использует два типа файлов: LUA и RGD. Поэтому все файлы продублированы в двух
форматах в случае установки официальных модтулзов (это будет наша рабочая версия :)). У
некоторых lua-файлов не будет.
LUA-файлы находятся в текстовом формате, а RGD-файлы — в компилированном виде. Это
означает, что lua можно редактировать текстовым редактором, а rgd — нет. Но работать игра
может только с rgd, что позволяет нам о lua забыть, ведь редактор как раз на rgd и рассчитан.
Однако ссылки в редакторе всегда идут на lua-файлы, даже если таковых не существует. В
редакторе ссылки должны быть именно на lua, хотя игра будет брать данные из rgd.
То есть работать мы будем с rgd-файлами. Они имеют точно такую же структуру как и архивы. При изменении исходного файла или создании нового в существующей структуре редактор
помечет их красным цветом.
В данном примере исходные данные скаута были отредактированы. Вдобавок, в моде существует
некий scout_marine_new.rgd, являющийся новым юнитом.
Заметьте, lua-файл скаута остался синим — так и должно быть, т. к. работаем мы с rgd.
Удалить добавленные или измененные файлы из редактора нельзя. Придется закрыть редактор, удалить их из соответствующей папки, а потом снова запустить редактор.
Эту операцию нельзя делать при открытом редакторе, ибо это вызовет ошибку (редактор знает, что файл был, а найти его не может).
Ниже приведено окно непосредственного редактирования. Как видно, файл иерархичен. Если есть ветка данных, то она имеет родительский объект, указанный в Reference. Изменения должны фиксироваться кнопкой Save внизу редактора. При переходе на более высокий уровень иерархии несохраненные данные теряются. Так что внимательней! :)
Примечание:
Можно существенно облегчить работу в редакторе, если грамотно использовать встроенные
функции копирования и вставки.
Можно копировать целые ветви между разными файлами, ибо редактор копирует не только
содержимое, но и структуру копируемой ветви.
Если есть несколько однотипных ветвей, можно копировать и вставлять информацию между ними
целиком. Если имеется ветвь weapon_01 и weapon_02, и мы хотим полностью скопировать
информацию из первой во вторую, то щелкаем правой кнопой по первой, выбираем Copy, а на
второй выбираем Paste. И вуаля — информация скопирована, при этом названия ветвей
сохранились!
Также имеется возможность удаления (Delete) и вставки на уровень ниже (Paste Into).
Не бойся экспериментировать!
5
6
Пожалуй, на этом с основными элементами интерфейса редактора закончим. Можно приступать к работе. А работы будет много :)
По большей части работать придется с юнитами и сквадами, а здесь есть несколько нюансов. Во-первых, что же такое сквад и чем он отличается от юнита?
Юнитом считается любая единица прописанная в ebps \ races \ название_расы \ troops. Это такая хреновина, имеющая собственные параметры, модельку и анимацию. Собственно из юнитов и состоят сквады (отряды). Сквадом называется файл, находящийся в sbps \ races \ название_расы. Сквад может состоять из одного юнита (например, командиры) или нескольких (любые отряды пехоты). Сквад имеет базовый юнит, на основе которого строится сквад. Более того, есть понятие сквад-лидера. Сквад-лидер — это тоже юнит, но совсем необязательно имеющий собственный сквад-файл (не является базовым юнитом для какого-либо сквада). Яркий пример — сержанты Космодесанта. Они являются лидерами отряда, но при этом отдельно от отряда не существуют. Сквад-лидеров может быть несколько видов — отряд Воинов Огня (FW) имеет на выбор ветеранов Шас'Уи либо защитных дронов. Причем можно как комбинировать разных сквад-лидеров, так и весь лимит заполнить одним типом лидера.
При этом, если жив хотя бы один базовый юнит или сквад-лидер, он может реинфорсить (пополнять) отряд и базовым юнитом, и лидером. Поэтому единица и называется сквадом. Здоровье, броня, вооружение, зрение — параметры юнита.
Лимит на количество, невидимость, возможность захватывать стратегические позиции, мораль — параметры сквада.
Я постараюсь построить изложение от простого к сложному так, чтобы новичок не пугался
страшных объемов информации, которую нужно переварить.
Для начала разберемся с простым редактированием параметров. Возьмем для примера скаутов
Космодесанта. Открываем редактор и добираемся до ветки ebps \ races \ space_marines \ troops, в
которой нас интересует файл scout_marine.rgd. Даблкликаем по файлу и смотрим на обилие
параметров.
Редактируем стоимость юнита и время постройки
Ветка cost_ext \ time_cost \ time_seconds позволяет изменить время постройки.
Важно помнить, что время постройки будет складываться. В отряде скаутов 2 юнита, каждый
строиться 6 секунд, следовательно, весь отряд построится за 12 секунд.
Ветка cost_ext \ time_cost \ cost \ power (requisition, population) изменяет стоимость в ресурсах.
Не забываем сохранить файл на каждом этапе.
Если сейчас запустить игру и выбрать свой мод в списке, можно опробовать нововведения.
Если мы все изменили на нули, теперь скауты строятся мгновенно и бесплатно. Но посмотрим на
кнопку реинфрса — почему-то за новых бойцов предлагают заплатить ресурсы, да еще и придется
ждать. Нестыковочка получается, да?
А все потому, что реинфорс — привилегия сквада, а не юнита.
Смело ползем в
sbps \ races \ space_marines \ space_marine_squad_scout.rgd \ squad_reinforce_ext, где
находим аналогичную ветку cost. Редактируем в соответствии с нашими запросами. Зануляем там
все, что уж мелочиться!
Теперь в игре все работает прекрасно — отряд бесплатный, реинфорс тоже.
7
Редактируем количество юнитов в скваде
В корневой ветке сквада ищем ветку squad_loadout_ext, где параметры unit_min и unit_max
изменяют начальный (сколько произведется) и конечный (максимальное число в скваде)
количественный состав подразделения.
Качественный же состав, то есть базовый юнит сквада, определяется параметром trooper_base \
type. Не спеши запихивать туда терминаторов, камрад — успеется :)
Следует обратить внимание, что ссылка стоит на юнитов из ebps.
Редактируем лимит на количество пехоты/техники, занимаемый сквадом
В корневой ветке сквада ищем ветку squad_cap_ext, в которой параметры squad_cap_usage и
support_cap_usage определяют лимит пехоты и техники соответственно.
Теперь все знают, как заспамить вражину бесконечными скаутами. На этом, скорее всего,
большинство злобных читеров, жаждущих абсолютной власти, отсеялось :)
Многие уже задумались, а не заспамит ли МЕНЯ железный болван? И я отвечу: заспамит так, что будешь меня обзывать гадкими словами.
Для этой ситуации нам пригодится свой юнит, о котором скрипты искусственного интеллекта ничего не знают, а, значит, и не смогут построить.
Создаем свой юнит на базе существующего
Ищем файл юнита в ebps и правой кнопкой крысы вызываем контекстное меню, третий пункт
которого Make a copy of this file решает все вопросы. Даем название типа scout_marine_my.rgd.
Я вообще рекомендую приписывать к названию некую удобоваримую комбинацию букв (навроде
ника), чтобы не путаться потом. Да и ссылки на этот файл удобней перекраивать на свой лад
будет.
Теперь в sbps ищем файл сквада скаутов и дублируем с новым именем. Здесь же меняем базовый
юнит с обычных скаутов на наших, читерских :)
Сейчас можно закрыть редактор и в папке мода по адресу:
Data\attrib\ebps\races\space_marines\troops\scout_marine.rgd находится старый файл скаута — его
нужно удалить, больше он не нужен. А рядом лежит наш родной.
Аналогичная операция производится в Data\attrib\sbps\races\space_marines.
Однако теперь мы не можем наш отряд построить, ибо негде.
Исправляем сие упущение в редакторе, найти нужно
ebps\races\space_marines\structures\space_marine_hq.rgd
Здесь в ветке spawner_ext\squad_table прописать наш сквад, главное опечатку не сделать.
Эстетическое отступление
В ebps у юнита есть параметр ui_ext\ui_index_hint. Он отвечает за позиционирование иконки
юнита. Если место занято, игра ищет следующее свободное место. Иногда в такиииие места, что
потом найти уже не может :)
Так что лучше вручную проконторолировать. Нумерация идет слева сверху, тремя строками по
четыре иконки (первая строка — 1, 2, 3, 4; вторая — 5, 6, 7, 8; третья — 9, 10, 11, 12).
Теперь гнусный комп не сможет их строить, а ты — легко.
ВНИМАНИЕ!
С этого момента я буду использовать следующую терминологию для удобства и скорости. Если я говорю «у юнита», то заползаем в ebps и там ищем файл юнита. Если я говорю «у сквада», то работаем в sbps. Иначе повествование затягивается без пользы.
8
Редактируем параметры перемещения юнита
За скорость отвечает ветка moving_ext у юнита, где полезными для нас будут три параметра:
rotation_rate — отвечает за скорость вращения юнита. У большинства пехотных юнитов
вращение мгновенное, толстый кнарлок у Тау топчется полчаса.
speed_max — скорость передвижения, тут все ясно.
turning_behavior_template — тип шасси, если так можно выразиться. Влияет на тип
перемешения.
Бывает infantry (пехота), squiggoth (монстры), hovercraft (воздушная подушка), default
(стандартный, у огромного количества юнитов), walker (шагающие боевые машины), tank (танки
и бэтры).
Влияет на скорость преодоления дифтеррейна (труднопроходимых участков типа воронок),
возможность использования укрытий.
Редактируем параметры здоровья и брони юнита
За здоровье отвечает важная ветка health_ext у юнита, где полезны следующие параметры:
can_be_repaired — может ли юнит быть отремонтирован. Как правило, технику ремонтируют, а
пехоту — нет.
hitpoints — тут понятно, чем больше, тем жирнее юнит.
regeneration_rate — скорость регенерации. Пехота обычно регенерирует, техника — нет.
За броню отвечает ветка type_ext.
Параметры:
type_armour — первичный тип брони юнита.
type_armour_2 — тип брони, используемый при апгрейде всей брони (у Тау, например).
Всего есть следующие типы брони:
tp_infantry_med, tp_infantry_high, tp_infantry_heavy_med, tp_infantry_heavy_high — пехота;
tp_vehicle_low, tp_vehicle_med, tp_vehicle_high — техника;
tp_monster_med, tp_monster_high — демоны;
tp_commander — командирская;
tp_building_low, tp_building_med, tp_building_high — здания.
Броня — исключительно важный параметр. Боевая система устроена так, что у каждого типа
оружия своя пробивная способность против каждого типа брони.
Можно ставить тысячи хитпоинтов для tp_infantry_med, но они все равно будут дохнуть как
мухи.
Именно так реализована различная эффективность оружия против разных юнитов.
Редактируем зрение юнита
За зрение отвечает ветка sight_ext.
Параметры:
sight_radius — дальность обзора юнита.
keen_sight_radius — дальность обнаружения невидимых юнитов.
Редактируем массу юнита
Влияет на подверженность разного рода раскидывающим спецатакам и взрывам.
За массу отвечает ветка special_attack_physics_ext.
Параметры:
mass — масса юнита. Чем тяжелее, тем лучше. Никак не влияет на скорость.
get_up_time — время, за которое юнит поднимается после падения.
9