Зомби c соседней улицы
Вскрываем и модифицируем Zombie Driver
Zombie Driver — весьма далек от совершенства (см. нашу рецензию на эту игру в позапрошлом номере журнала). Но только не для человека, который хочет научиться вскрывать и модифицировать игры. С этой точки зрения ZD — одна из лучших игр, вышедших за последние полгода. Без всяких знаний программирования, сложных трехмерных редакторов и множества других хитрых программ любой человек может посмотреть, как устроены внутренности игры, и узнать, какими способами их можно видоизменять.
Так что в рамках этой статьи мы будем рассматривать Zombie Driver не как посредственную аркаду, а как превосходный полигон для модотворчества.
Открыто, входите
![]() |
Текстуры в Zombie Driver представлены простыми изображениями форматов DDS и PNG, которые без проблем открывают почти все современные графические редакторы. |
Архивы игры представлены обычными ZIP-файлами, текстуры — изображениями форматов PNG и DDS, а аудиокомпозиции — OGG-файлами. Основная доля вкусностей приходится на увесистый архив Pak0.zip из директории \Packs. В нем хранятся все используемые в игре шрифты (\Fonts), текстуры и материалы (\Materials), трехмерные модели (\Meshes), системы частиц (\ParticleSystems) и скрипты (\Scripts). По соседству с каталогом \Packs располагаются еще две достойные внимания папки — \Audio и \Video. Первая включает в себя звуки и музыкальные композиции. Вторая содержит вступительный и заключительный ролики.
Перекройка игры сводится к замене оригинальных файлов модифицированными. Чтобы максимально упростить процесс импорта нового контента в Zombie Driver, разархивируйте все перечисленные выше папки в корень игры — запускаться от этого она не перестанет.
После этого загляните в директорию \Release и откройте «Блокнотом» конфигурационный файл resources.cfg. Отыщите в документе строку Multi=FileSystem:. ./,Zip:. ./Packs/Pak0.zip и замените ее следующей строкой: Multi= Zip:. ./Packs/Pak0.zip,FileSystem:. ./. С этого момента игра будет отдавать приоритет новым файлам из распакованных директорий, а не тем, что запечатаны в архив Pak0.zip.
Кстати, разархивировать все файлы из Pak0.zip необязательно. Если вы извлечете из пака лишь нужную вам группу файлов, сохраняя иерархию, то движок сперва считает незапакованные ресурсы, а потом подгрузит все недостающие из архива.
Игра с параметрами
![]() |
Экспериментируя с настройкой одних только характеристик зомби, можно превратить Zombie Driver в хардкорный экшен. |
Давайте попрактикуемся в создании несложных параметрических модификаций для игры — подправим характеристики монстров, оружия, авто. Начнем с транспортных средств. Переместитесь в папку \Scripts\Cars с Zombie Driver (будем считать, что вы уже распаковали архив Pak0.zip) и откройте текстовым редактором произвольный XML-файл — например, taxi.xml. Весь документ поделен на ряд секций и подсекций, заданных специфическими тегами <car></car>, <physics></physics>, <weapon_attachments></weapon_attachments> и т.д. В этих блоках, в свою очередь, находятся одиночные и парные теги-параметры, между которыми прописаны определенные цифровые значения, к примеру: <passengers_seets value="4" /> или <radius>0.3</radius>. Изменяя их, можно превратить обычное городское такси, скажем, в гоночный болид или в тяжеловесный «танк».
Тег mass из блока <chassis> определяет массу кузова и влияет на скорость автомобиля. Чем больше значение, тем меньше машина увязает в мертвых телах. Но при увеличении веса пропорционально снижается скорость автомобиля. И наоборот. Следующая интересная настройка — gravity — располагается в секции <chassis> и задает уровень гравитации по всем координатным осям. Нулевое и отрицательное значения свидетельствуют о наличии силы тяжести, а вот положительные — о частичном или полном отсутствии притяжения. Подрегулировав значение параметра torque_distribution, прописавшегося в секции <wheel> и отвечающего за распределение вращающего момента между колесами, вы можете ускорить или замедлить авто, не изменяя при этом массу кузова (обратите внимание, что секция <wheel> в документе далеко не единственная: число данных блоков равняется числу колес транспортного средства).
![]() |
На официальном сайте разработчиков любой желающий может скачать модификацию Darkness MOD — после этого можно пройти игру заново, но уже ночью. |
Интересных результатов можно добиться, модифицируя значения параметров resistance air и resistance ground, учитывающих сопротивление воздуха и земли. Располагаются эти характеристики в группе <thrusters>. Обратите внимание на параметры из категории <params> в конце документа — health value и passengers_seets value. Первый определяет прочность авто, второй задает число посадочных мест.
Следующий пункт назначения — каталог \Scripts\Weapons. Здесь расположены конфигурационные файлы со значениями основных параметров оружия:
maxSpeed value — максимально возможная скорость полета снаряда;
damage value — наносимый урон;
clipSize value — вместимость обоймы;
fireFreqInOneSecond — число выстрелов в секунду (скорострельность).
Если вы откроете «Блокнотом» любой XML-файл из папки \Scripts\Weapons, то увидите, что перечисленные параметры заключены в теги <level1>…</level1>, <level2>…</level2>, <level3>…</level3>. Первый блок содержит набор характеристик, которые применяются к базовому оружию, а вот второй и третий — атрибуты модернизированных стволов (в Zombie Driver предусмотрено два уровня апгрейда для каждого оружия). Когда закончите создание нового оружия, откройте конфигурационный файл \Scripts\GameRules и скорректируйте цены на боевые инструменты.
![]() | ![]() |
Примеры народного творчества. |
Вот мы и вышли на финишную прямую: от тестирования мода в игре нас отделяет всего один шаг, осталось лишь поколдовать над характеристиками зомби. Перейдите в директорию \Scripts\Zombies с Zombie Driver и откройте «Блокнотом» абсолютно любой приглянувшийся XML-файл с параметрами зомби (допустим BaseZombie.xml) — структура всех документов идентична. Разберем основные характеристики:
health value — здоровье мертвяка;
speed — минимальная и максимальная скорость перемещения зомби;
damage value — урон, наносимый монстром спасательной машине игрока;
attackFrequency value — частота атаки;
physicMass value — масса ожившего трупа;
maxRotate value — максимальный угол поворота;
points value — количество очков, начисляемое за уничтожение нежити;
carInterestDistance — минимальное и максимальное расстояние, на котором зомби начинают проявлять интерес к авто;
carSpeedToAttack — минимальная и максимальная скорость машины, провоцирующая врага на нападение:
attackTime1 value, attackTime2 value — продолжительность атаки.
Дистрибьюция модов
![]() |
Для правки основных игровых архивов и конфигурационных файлов сгодятся любые подручные архиваторы и текстовые редакторы. Вот что значит открытая структура. |
В заключение разговора несколько слов о том, в каком виде лучше всего распространять свои модификации. Разработчики Zombie Driver рекомендуют заключать измененные файлы в архивы, полностью сохраняя иерархическую структуру каталогов. Это значит, что если вы изменили, например, файл \Scripts\Car\taxi.xml, то должны включить в архив папку \Scripts, которая, в свою очередь, будет содержать каталог \Car с измененным конфигурационным файлом taxi.xml.
Сразу встает логичный вопрос — а как подсоединить к игре архив с модом? Для этого достаточно поместить свежеиспеченный ZIP-архив в каталог \Packs, открыть «Блокнотом» конфигурационный файл resources.cfg из директории \Release и заменить в настроечном документе строку, начинающуюся с параметра Multi, следующей строкой: Multi=FileSystem:. ./,Zip:. ./Packs/Pak0.zip,Zip:. ./Packs/my_mod.zip, где my_mod.zip — название ZIP-архива с вашей модификацией. В будущем создатели Zombie Driver обещают упразднить всю эту возню с настройками и добавить возможность выбора нужных модов прямо из главного меню.