Красная армия — всех сильней! Вскрытие Red Faction
По сложившейся традиции, ни одна хитовая игра не проходит мимо нашей рубрики, если она — игра, — конечно, вообще поддается вскрытию. И Red Faction, несомненно, — один из таких хитов. Первая игра, в которой разрушению поддается практически все игровое окружение. Предлагаю вам разнести по кирпичику уже не мираж виртуальных внутренностей игры, а вполне реальные строчки конфигурационных файлов и иже с ними. Приступаем… Приборы и материалы Все основные файлы для редактирования игры покоятся в недрах *.vpp-архивов , нашедших пристанище прямо в игровой директории. К слову сказать, разработчики игрушки, компания Volition , очень любят использовать данный вид архивов в своих детищах (примером может послужить ролевик Summoner) с целью хранения в них ценной информации. Работать с *.vpp-файлами мы будем с помощью утилиты VPPBUILDER32 (берите ее с нашего диска ), позволяющей делать с ними практически все что угодно.
Пользоваться VPPBUILDER очень просто. Основные команды программы вызываются из меню Edit. Чтобы добавить в выбранный *.vpp-архив какой-либо файл, используйте команду Add. Для удаления файла из архива предусмотрена команда Remove , а для “выдирания” файла из архива — Extract. Если же вам нужно распаковать все содержимое архивного файла или полностью его удалить, перед вызовом соответствующей команды выделите разом все файлы, находящиеся в архиве, пользуясь услугами опции Select all. Теперь поговорим о самих архивах. Важное значение имеют архивные файлы audio.vpp , где припрятаны *.wav-файлы со звуковыми эффектами, и music.vpp , где хранятся звуковые файлы с музыкой. Обратите внимание на то, что все использующиеся в игре файлы, содержащие звуковые эффекты и речь, должны лежать в архиве audio.vpp, а файлы с музыкой — в music.vpp. Так что, если вы хотите использовать в игре звуковые файлы собственного производства, предварительно поместите их в соответствующий архив. В другом архиве — ui.vpp — при внимательном осмотре можно обнаружить картинки формата *.tga , предназначенные для оформления игровых менюшек. Обязательно загляните внутрь таких архивных файлов, как levels1.vpp , levels2.vpp , levels3.vpp , levelseb.vpp и levelsm.vpp , где можно встретить *.rfl-файлы , содержащие структуру игровых уровней. Любой из этих *.rfl-файлов может быть открыт в местном редакторе уровней RED , с тем чтобы подвергнуться редактированию или стать вашим образцом при создании карт. **__**Помимо файлов с уровнями, в этих архивах прячутся *.tbl-файлы (они корректируются в любом текстовом редакторе), где прописан текст реплик персонажей во время скриптовых сцен (этот текст вы можете лицезреть на экране в качестве субтитров), имеющих место быть в том или ином уровне (имя *.tbl-файла соответствует номеру уровня, к которому он относится). Текст каждого встречающегося здесь разговора заключается в кавычки и имеет свой порядковый номер (он располагается прямо над относящимися к нему репликами), рядом с которым указано имя связанного с репликой звукового файла. Вы можете изменить как текстовую, так и звуковую составляющую любого диалога, подвергнув редактированию его текст и подменив соответствующий ему звуковой файл. Что касается таких архивов, как maps_en.vpp , maps1.vpp , maps2.vpp , maps3.vpp и maps4.vpp , то они являются своеобразными хранилищами текстур. Последние имеют формат *.tga , так что вам не составит труда как следует рассмотреть их в любом уважающем себя графическом редакторе и даже немного поработать с ними. Большая же часть интересующих нас файлов помещается в архиве tables.vpp. К их числу относятся game.tbl , weapons.tbl , entity.tbl и endgame.tbl. Как легко заметить, все эти файлы имеют расширение *.tbl. Но это не суть важно — важно то, что для их редактирования достаточно самого что ни на есть обычного “Блокнота”. Обратите внимание на то, что каждая строка в любом из этих файлов, содержащая какой-либо параметр, начинается со знака доллара. Кроме того, у некоторых характеристик имеются вспомогательные параметры, которые располагаются под характеристикой, к которой они относятся, а в начале отводящимся им строк вместо знака доллара красуется плюс. Вот пример характеристики со вспомогательными параметрами: $Homing: true +Turn Time: 6 +View Cone: 120.0 +Scanning Range: 40.0 +Wakeup Time: 0.0 Общее Начнем разбор *.tbl-файлов с первого из них — game.tbl. Он содержит в себе основные игровые параметры, список которых приведен строкой ниже. Min Fall Damage Height — высота (в метрах), падая с которой, ваш герой теряет частичку своего здоровья. Max Fall Damage Height — высота (в метрах), падая с которой, ваш герой лишается жизни. Max Entity Jump Heigh t — максимальная высота (также в метрах), на которую может подняться какой бы то ни было субъект (в том числе и главный герой Паркер) во время совершения им прыжка. First Level Filename — этот параметр определяет, с какого уровня начинается игра. Здесь следует указывать название файла с данной картой (не забудьте про расширение *.rfl). Только учтите, что файл этот
должен находиться внутри одного из архивов с уровнями (напомню, что к их числу относятся levels1.vpp, levels2.vpp, levels3.vpp, levelseb.vpp и levelsm.vpp). Пример: l1s1.rfl. Lava Damage Per Second — вред, причиняемый герою лавой за одну секунду (измеряется в процентах здоровья). Если вы хотите, чтобы Паркер мог без риска для жизни прогуливаться по лаве, поставьте здесь “0”. Acid Damage Per Second — урон, наносимый здоровью Паркера кислотой за одну секунду. Main Menu Music Filename — музыкальное сопровождение меню. Здесь от вас требуется только указать имя файла с музыкой. Intro Movie Filename — стартовый ролик (укажите здесь имя нужного видеофайла). Замечание: используемый файл должен находится по адресу < Каталог игры>\data\movies и иметь расширение *.bik. Multi Damage Modifier — этот показатель определяет, во сколько раз увеличивается повреждение, производимое любым оружием, в многопользовательском режиме игры по сравнению с одиночным. Multi Player Acceleration — во сколько раз возрастает скорость игры в многопользовательском режиме игры по сравнению с синглплеером. Вооружение Теперь поговорим о другом *.tbl-файле — weapons.tbl , который играет роль хранилища характеристик различных видов вооружения. Файл можно условно разделить на части, каждая из которых выделена под определенный вид оружия (между двумя любыми частями располагается строчка, состоящая из длинного ряда прочерков). У каждого оружия имеются следующие параметры: Name — кодовое имя оружия, которое никогда не показывается во время игры. Display Name — название оружия, которое отображается на экране во время игры. Weapon Type — тип оружия. Возможны следующие варианты: explosive (оружие, использующее разрывные снаряды), close combat (оружие ближнего боя) semi-auto (полуавтоматическое оружие), heavy (тяжелое оружие). Weapon Icon — значок со схематическим изображения оружия. Укажите здесь название графического файла с данным значком (этот файл должен покоиться в недрах архива ui.vpp ). Damage Type — этот параметр определяет, чем стреляет данное оружие. Вот список возможных значений: bullet (стандартные пули, обладающие слабой убойной силой), armor piercing bullet (мощные пули, обладающие большой убойной силой и пробивающие броню насквозь), explosive (разрывные снаряды), fire (огонь), energy (лазер), electrical (электричество), acid (кислота), scalding (горячий пар). Max Ammo — максимальное количество патронов для данного оружия, помещающееся в широкие карманы Паркера. AI attack range — расстояние, на котором будет держаться от вас вооруженный
этим оружием враг. Clip Size — число патронов, помещающееся в обойму данного оружия. Clip Reload Time — время (в секундах), которое требуется на перезарядку оружия. Mass — масса оружия (в килограммах). Чем больше масса, тем медленнее будет передвигаться вооруженный этим оружием персонаж. Velocity — скорость полета снаряда (в метрах в секунду), выпущенного из ствола данного оружия в сиглплеере. Velocity Multi — скорость полета снаряда, выпущенного из ствола данного оружия в мультиплеере. Fire Wait — скорострельность оружия. Alt Fire Wait — скорострельность оружия при ведении альтернативной стрельбы. Start Delay — время (в секундах), отсчитываемое после нажатия персонажа на курок оружия, по истечении которого ствол начнет стрелять. Damage — повреждение, наносимое данным оружием в синглплеере. Damage Multi — урон, наносимый данным оружием в мультиплеере. Alt Damage — повреждение, производимое этим оружием при альтернативной стрельбе в синглплеере. Alt Damage Multi — повреждение, производимое оружием при ведении альтернативной стрельбы в мультиплеере. AI Damage Scale — эта характеристика определяет, во сколько раз возрастет или снизится (в зависимости от значения) повреждение, наносимое данным оружием, если оно окажется в руках одного из ваших врагов. Несложно догадаться, что при значении, меньшем единицы, урон уменьшается, а при большем единицы — увеличивается. Homing — является ли снаряд, выпущенный из ствола данного оружия, самонаводящимся (True — да, False — нет). Launch — звук стрельбы из данного оружия. Alt Launch — звук альтернативной стрельбы из этого оружия. Launch Fail — звук, раздающийся при спускании курка оружия, у которого закончились боеприпасы. Fly Sound — звук полета снаряда, выпущенного из данного оружия. Damage Radius — радиус повреждения, производимого оружием в синглплеере. Damage Radius Multi — радиус повреждения, производимого оружием в мультиплеере. Camera Shake — будет ли сотрясаться камера при стрельбе из данного оружия (True — да, False — нет). Обратите внимание на то, что данная характеристика имеет два вспомогательных параметра: Distance — сила тряски (чем выше, тем сильнее будет сотрясаться камера при стрельбе из этого оружия) и Time — продолжительность тряски (в секундах). Piercing — этот показатель определяет, может ли снаряд, выпущенный из ствола данного оружия, пробивать броню. Имеется вспомогательный параметр Piercing Power , отвечающий за то, насколько хорошо разрушает броню используемый оружием снаряд. Объекты и субъекты Настало время разобрать структуру следующего весьма значимого для нас файла из архива tables.vpp — entity.tbl. Здесь содержатся атрибуты и показатели важнейших игровых объектов/субъектов. Файл состоит из разделов (или частей, как вам больше нравится), имя
каждого из которых выделено двумя пунктирными линиями. Первый раздел зовется Humans — Main Characters (он посвящен главным действующим лицам игры), второй — Humans — Security (в данном разделе описываются характеристики охранников и оборонительных пушек) и третий — Humans — Mercs (эта часть выделена под характеристики наемников). Четвертый раздел, именуемый Robots -— Mining , посвящен роботам-шахтерам, Robots -— Combat — боевым роботам, Robots -— Misc — мирным роботам. Часть Creatures — Aggressive относится к агрессивным созданиям, населяющим Марс и так и норовящим напасть на вас, а раздел Creatures — Passive — к спокойным, пассивным тварям. Другая часть — Vehicles — содержит в себе характеристики транспортных средств, на которых вы можете прокатиться во время игры. Наконец, последний раздел игры отводится под мультиплеерные модели. Таким образом, к категории ваших врагов, управляемых компьютером, относятся все субъекты, описывающиеся в разделах Humans — Security, Humans — Mercs, Robots — Combat и Creatures — Aggressive. В каждом разделе имеется ряд подразделов, каждый из которых выделен под того или иного объекта/субъекта (между двумя любыми подразделами присутствует большая пунктирная линия). Как несложно догадаться, главный герой игры, шахтер Паркер, отнесен к первой части. Ему соответствуют три подраздела: miner1 , parker_suit и parker_sci. Различия между ними заключаются лишь в одежде Паркера — в первом случае он облачен в форму шахтера, во втором — в пиджак с брюками (иными словами, деловой вид) и в третьем — в одежду научного работника. В данном файле вы можете встретить следующие характеристики игровых объектов/субъектов: Name — кодовое имя объекта/субъекта. Лучше не трогать эту характеристику, она лишь дает вам понять, о ком именно идет речь в данном подразделе. Movemode — его вид передвижения. Полный список всех возможных значений для данной характеристики представлен в файле movemodes.tbl (каждое из них следует за надписью " name "), что находится в архиве tables.tbl. Mass — масса (в килограммах).
Бедняга, он даже не видит своего убийцы!
FOV — зоркость. Чем выше, тем дальше видит данный объект/субъект. Значение этого показателя имеет смысл менять только у ваших врагов, чтобы поднять или понизить их искусственный интеллект (подставив сюда ноль, вы делаете своих неприятелей полностью слепыми, что на практике выглядит очень даже прикольно). Envirosuit — максимальное “количество” брони, которое может носить на себе объект/субъект. Life — максимальное число жизней. Если вы хотите сделать Паркера непобедимым в бою, поставьте ему для этого показателя значение побольше. Max Vel — максимальная скорость передвижения (в метрах в секунду). Acceleration — ускорение. Max Rot Vel — максимальная скорость вращения (в метрах в секунду). Rot Acceleration — вращательное ускорение. Default Primary — основное оружие объекта/субъекта, которое он имеет с момента своего “рождения”, то есть по умолчанию. Default Secondary — дополнительное оружие объекта/субъекта, которое он имеет по умолчанию. Attack Style — стиль атаки объекта/субъекта. Может быть none (объект/субъект вообще не умеет атаковать), Evasive (в этом случае он будет параллельно с ведением атаки постоянно уворачиваться от атак со стороны соперников), Stand_Ground (он все время стоит на месте и не двигается, стреляя в вас лишь тогда, когда этого требует обстановка) или Direct (он постоянно преследует свою цель, не уделяя особого внимания обороне). Второй стиль атаки хорошо подходит любому маленькому роботу, тогда как для его большого и сильного собрата нет ничего лучше варианта Direct. Move Sound — звук, издаваемый объектом/субъектом при передвижении. JumpSnd — звук, издаваемый объектом/субъектом при совершении им прыжка. Low_Pain Sounds — звук, издаваемый объектом/субъектом при потере им небольшого числа жизней. Med_Pain Sounds — звук, издаваемый объектом/субъектом при потере им среднего числа жизней. High_Pain Sounds — звук, издаваемый объектом/субъектом при потере им большого числа жизней. DeathSnd — звук, издаваемый объектом/субъектом при потере им всех своих жизней. Тусовка на Марсе Нерассмотренным остался только один более-менее содержательный файл из архива tables.vpp, который называется endgame.tbl. Файл этот содержит текст финального диалога между главными персонажами в конце игры. Построен он по принципу *.tbl-файлов, входящих в состав архивов с уровнями, так что с его редактированием у вас не должно возникнуть никаких проблем. На что же прежде всего стоит обратить внимание при вскрытии? Во-первых, поскольку местный AI особо не блещет, не помешает его полностью перекроить путем замены значений соответствующих характеристик у ваших врагов в файле entity.tbl. Во-вторых, советую поэкспериментировать с редактированием оружия в файле weapons.tbl — в результате долгих опытов может получиться невиданный ранее образец. За сим разрешите откланяться. Удачного вам времяпрепровождения на Марсе!