Угонщик в Москве. Новая игра на движке Grand Theft Auto 3
Разработчики сделали игру GTA3 с воображаемыми городами и машинами. Идеала не бывает. Игра полна мелких недостатков и недоработок, которые портят общее впечатление от хита. Кому-то… Кому-то не портят. Один из ведущих недостатков — невозможность покопаться в игровых внутренностях. Давайте обойдем эту проблему и создадим свой собственный мод или даже новую игру. Свой сюжет, свой город, свои машины, свой игровой баланс. Я, например, обязательно перенесу действие игры в Россию, в Москву. Разработчики, конечно, чуть-чуть облегчили мою задачу, так как в игре уже есть автомат Калашникова (АК 47). Но и не более того. Станем на время виртуальными хирургами. Марлевую повязку на лицо. Анестезию пациенту. Готовим инструменты. Для проведения вскрытия нам потребуются: текстовый редактор, просмотрщик графических файлов, GTA3ResHack , IMGExtractor/IMGPacker , AudioEditor , GXT_Editor (эти утилиты с легкостью забирайте с нашего компакта или в Сети по адресу
Теперь всем станет ясно, что самолет российский!
http://gta3.mm2.gamigo.de ). Операция предстоит длительная и сложная. Разработчики постарались и очень надежно упрятали ресурсы. Будет много криков, крови… Прогулка по улицам Liberty City Прежде чем начинать оперативное вмешательство, давайте проведем общий осмотр пациента. Естественно, мы идем в основную папку игры. Там наше внимание привлекает подкаталог \movies. В нем находятся три больших ролика (один — со списком разработчиков, второй — с логотипами компаний, третий — со списком разработчиков на немецком), которые можно посмотреть при помощи любого проигрывателя видео (подойдет и Windows Media Player ). Естественно, их можно заменить на свои. Подкаталог \skins содержит в себе bmp -файлы, представляющие собой шкурки, которые может надевать главный герой. Больше первичный осмотр результатов не дал. Ассистент! GXT_Editor , пожалуйста! Моя твоя не понимай Пользоваться утилитой GXT_Editor просто. Открываете любой gxt - файл (таковые находятся в поддиректории \Text ), и перед вами предстает набор строчек текста, используемых игрой. Их легко редактировать, щелкнув по любой 2 раза. Когда мы делаем мод со своим сюжетом, естественно, мы должны
Похоже на московские улицы?
поменять текст. Даже если вы не собираетесь делать полноценную модификацию, просто переименуйте названия машин на свои, родные. Пускай в игре ездят “Жигули”, которые обгоняют “Ладу”. А если у вас есть терпение и время, то можете перевести игру на какой-нибудь язык. Например, на корейский… Ассистент! Не спать на рабочем месте! Приготовьте мне AudioEditor и много-много тампонов… Что слушают настоящие угонщики Надеюсь, AudioEditor готов. Теперь из подпапки \Audio копируем два файла — sfx.raw и sfx.sdt (это архивы со сложным внутренним устройством) — в ту папку, где установлен AudioEditor (на нашем компакте он поставляется с исходниками на Delphi). После этого запускаем audext.exe. И ждем… Процесс распаковки занимает значительное время. После того как программа завершила работу, мы отправляемся в ту директорию, куда копировали файлы. Там должно появиться очень большое количество wav -файлов. Что-то порядка трех тысяч. Ну-с, послушаем звуки. Шумы, крики, разговоры и прочее. Но разве в Москве все прохожие говорят по-английски? Запасаемся микрофоном и программой для записи звука. Только имена распакованных файлов не меняйте. И не забывайте, что это должны быть несжатые 16-битные pcm -файлы с 1 каналом. Иначе игра не будет их проигрывать. Чтобы слышать результаты
А вот и ФБР проявляет интерес к нам.
своего труда в игре, файлы необходимо поместить назад в архивы. Запускаем файл audimp.exe. Ждем… В результате получаем два файла, которые необходимо водворить в папку \Audio из корневого каталога игры. Пока операция проходит по плану, и ничего особо интересного не обнаруживается. Переходим к следующему этапу вскрытия. GTAResHack! Пейзажи за окном Запускаем GTA3ResHack.exe. Утилита используется в основном для работы с txd -файлам (местный формат графики). Кратко опишу принципы работы с этой программой. Загружаете файл для работы. Слева находится справочное окошко по загруженному файлу. Справа — картинки, находящиеся внутри файла. По картинкам выдается подробнейшая информация — разрешение, размер, глубина цвета. Снизу отображается текущая картинка. Все картинки можно заменить. В папке \txd множество txd -файлов. Все они содержат картинки, которые являются заставками в игре между миссиями. Особого внимания заслуживает подкаталог \models. Там лежит графика моделек. Файл frontend.txd содержит эмблемы радиоканалов, generic.txd — различные текстуры дорог, газонов, а также текстуру с долларами. Очень интересным по содержанию является hud.txd — иконки оружия, иконки, отображаемые на радаре, и прочее. В menu.txd
лежат графические файлы для оформления менюшек. В \models\Generic лежит файл Player.bmp, который является в игре шкуркой по умолчанию. Устанавливаем “Фотошоп” и рисуем графику для новой игры. Или можно просто полазить по Сети — сайтов с бесплатными наборами текстур предостаточно. Интерьерчики Готовим IMGExtractor/IMGPacker. Этот инструмент предназначен для работы с img -файлами, которые являются архивами. Запускаем IMGExtractor.exe. Выбрав img -файл для распаковки, жмем на кнопку Extract и ждем. В той папке, где был img -файл, образуется директория с таким же именем, как и у файла. В этой директории будут лежать распакованные данные. Первым подопытным кроликом станет \models\txd.img. После его распаковки образуется множество txd -шек. Как с ними работать, вы уже знаете. Все файлы содержат игровые текстуры. Среди распакованных файлов присутствуют: police.txd — текстуры для полицейских машин, airplane.txd — для самолета, airport.txd — для аэропорта и так далее. Снова активируем Photoshop (или Paint Shop Pro — кому как нравится) и начинаем работать кисточкой. Перерисовываем. Аэропорт, чтобы выглядел как Шереметьево, самолет DoDo , чтобы выглядел как наш “Ил”. Не забываем и про машины. Перерисованные текстуры засовываем назад
в txd -шки. Теперь все измененные файлы нужно поместить в img -архив. Загружаем в память IMGPacker.exe. Указываем ту директорию, в которой хранятся файлы, предназначенные для архивации, указываем, в какой архив сохранять, и кликаем по кнопке Pack. Теперь объектом нашего пристального внимания станет файл \models\gta3.img. Здесь тоже большое количество файлов. Среди них встречаются уже хорошо известные нам txd -файлы. Текстуры для прохожих на улице, полицейских, медработников, старушек, мафиози. А теперь попрошу подготовить “Блокнот”. Орудия убийства В “Блокнот” для подробного изучения заносим файл \data\weapon.dat. В этом файле все находящееся за знаком " # " — комментарии. В файле мы видим ровные столбцы числ и букв. A (WeaponName) — название оружия. B (Fire type) — тип оружия. Для существующего вооружения менять не стоит. F (Amount of Ammunition) — количество патронов, которое получаем, когда герой берет оружие. G (Damage) — повреждения, наносимые оружием. Численно значение повреждения показывает, сколько жизни или брони отнимается при попадании. H (Speed) — скорость. Можно сделать оружие с большой
“Игроманию” читают везде. Даже в Liberty City.
убойностью, но малым количеством патронов и скоростью. Вооружаем мафию этим оружием. Играть становится значительно интереснее. J (Life span) — как долго детонирует заряд. Данный параметр относится к гранатам и “коктейлю Молотова”. Дальше идут параметры (их 10), отвечающие за внешний вид оружия (какие модели использовать, какую анимацию проигрывать и прочее). Если делаете действительно серьезный мод, то они подлежат редактированию. А также в файле присутствуют флаги. Только хочу вас предостеречь: в файле существуют столбцы X, Y — они пустые. Сами ничего здесь не пишите. Эти столбцы зарезервированы для следующих версий игры. Средства передвижения Опять активируем “Блокнот”. Загружаем файл \data\carcolors.dat. Он содержит информацию о раскраске машин. Все находящееся за знаком " ; " является комментарием и игнорируется игрой. В файле идет техническое определение
цветов. В самом конце файла идет как раз необходимая информация. Напротив внутреннего (то, которое использует игра) имени через запятую перечисляются цифры, обозначающие цвета, используемые для раскрашивания машин.ambulan, 1,3 ; скорая помощь — цвета белый и красный police, 0,1 ; полиция — цвета черный и белый. 0 — черный. 1 — белый. 2 — голубой. 3 — ярко-красный. 4 — темно-голубой. 5 — фиолетовый. 6 — желтый. 7 — ярко-голубой. 8 — светло-голубой. 9 — светло-серый. Цвета с 10 до 20 — различные оттенки красного, цвета с 21 по 29 — оттенки оранжевого, с 30 по 39 — желтого, 40 по 49 — зеленого, с 50 по 60 — синего, с 60 по 69 — фиолетового, с 70 по 79 — серого. Машины теперь можно раскрасить по-новому. На танке к небесам Загружаем в “Блокнот” для редактирования файл \data\handling.cfg. Сюда разработчики положили технические характеристики всех машин в игре. В этом файле, как и в предыдущем, все, что следует за знаком " ; ", является комментарием. В handling.cfg все параметры идут по столбцам, которые именованы буквами латинского алфавита. Давайте подробно рассмотрим каждый столбец. A (Vehicle Identifier) — внутриигровое название машины. Длина имени не может превышать 14 знаков. B (fMass) — параметр обозначает массу средства передвижения в килограммах. Машины, согласно правилам, могут весить от 1 кг до 50 000 кг. Изменяя этот параметр, можно добиться весьма и весьма интересных эффектов.
Например, если масса поставлена на максимальную, машина становится чем-то вроде танка. Она едет, снося все столбы на пути и разбрасывая в стороны другие тачки. А вот когда ставишь массу 50 кг, машину может легко сдвинуть с места даже главный персонаж, просто толкая ее сзади. С (Dimensions x) — столбец сообщает игре о ширине транспортного средства, которая измеряется в метрах. Смотрите не переборщите с экспериментами. Может изменяться от 0 до 20 метров. При изменении этого параметра визуальных перемен в модели не замечается, но на самом деле они происходят. D (Dimensions y) — обозначает длину транспортного средства. Здесь все аналогично C (Dimensions x). E (Dimensions z) — высота машин. Также все аналогично C. F (CentreOfMass.x) — отклонение центра тяжести от общего центра машины по оси X (по ширине транспортного средства). Выражается в метрах и изменяется от -10 до 10 метров. Перенос центра тяжести на небольшие значения заставляет машину постоянно отклоняться в тот бок, куда перенесен центр. Если поставить экстремальные значения, то при любом соприкосновении машины с чем-либо она начинает прыгать из стороны в сторону. Оптимальное значение — 0. G (CentreOfMass.y) — отклонение центра тяжести от общего центра по оси Y (по длине машины). Здесь все так же, как и в F **
Перекрасить машину теперь можно одним нажатием клавиши.
(CentreOfMass.x)**.H (CentOfMass.z)— отклонение центра тяжести от общего центра по оси Z (по высоте машины). Измеряется в метрах и лежит в диапазоне от -10 до 10. При выставлении больших отрицательных значений машина начинает сильно подпрыгивать вверх от любого соприкосновения. Оптимальное значение лежит в диапазоне от -1 до 1.I (nPercentSubmerged)— насколько сильно машина погружается в воду. Измеряется в процентах. У всех машин этот параметр стоит в районе 70-90. Но можно заставить кары плавать по поверхности.J (fTractionMultiplier)— умножитель для сцепления колес с поверхностью земли. Изменяется от -2 до 2. Если ставить 0, то машина вообще не едет, просто при нажатии на газ колеса начинают бешено вращаться. А вот если выставить отрицательное значение, то при любом соприкосновении с чем-либо машина начинает носиться по улице и отскакивать от столбов и домов, как теннисный мячик от ракетки.K (fTractionLoss)— показатель сцепления колес с землей. Изменяется от 0 до 1. При 0 сцепления с землей не будет вообще.L (fTractionBias)— если стоит 0, то передние колеса не имеют сцепления, если 1, то задние. Также можно использовать дробные значения.M (TransmissionData.nNumberOfGears) — число передач у машины. Изменяется от 1 до 5. Но можно поставить и большие значения. Например,
10 — странный эффект… теперь колеса находятся над землей, и в машину попасть невозможно. N (TransmissionData.fMaxVelocity) — максимальная скорость, которой может достигнуть машина. Измеряется в километрах в час. Опытным путем было установлено, что параметр может изменяться от 5 км/ч до 300 км/ч. Параметр рекомендуется для обязательного редактирования. Какой русский не любит быстрой езды. O (TransmissionData.fEngineAcceleration) — “разгоняемость” машины в игре. Измеряется в миллисекундах в квадрате и может принимать значения от 0 до “сколько надо”. Чем больше выставленное значение, тем быстрее машина достигает максимальной скорости. Если выставить 0, то машина, будучи остановленной, больше не поедет. Попробуйте поставить значения вроде 90,0 и получите экстремальную езду. P (TransmissionData.nDriveType) — параметр показывает, какие колеса ведущие у машины, и может быть равен 4 (ведущие колеса — все 4), F (ведущие — передние колеса), R (ведущие — задние колеса). Параметр очень сильно влияет на поведение машины на дороге. Рекомендуется для проведения экспериментов. Q (TransmissionData.nEngineType) — тип двигателя у машины. Он может быть трех видов: бензиновый §, дизельный (D), электрический (E). Я менял этот параметр у многих машин. Особых изменений не заметно. Разве что звук мотора меняется. R **
На поле танки грохотали… Да-да!! Танки тоже можно научить летать! Причем летают они не хуже DoDo.
(fBrakeDeceleration) **— насколько быстро тормозит транспортное средство. При установке параметра на 0 работает только ручной тормоз. А вот при установке больших значений машина останавливается мгновенно.S (fBrakeBias)— какими колесами будет тормозить тачка. Может меняться от -1 до 1. Если устанавливается на 0, то транспорт тормозит исключительно задними колесами, 1 — передними, 0,5 — одновременно передними и задними. А вот если запишете отрицательное значение, то вместо торможения получите разгон.T (bABS)— непонятный параметр. Принимает значения 0 и 1. На поведение игры не влияет. У всех машин он выставлен на ноль.U (fSteeringLock)— на сколько градусов влево/вправо могут поворачиваться колеса. Может быть любым, но рекомендуется диапазон от -90 до 90 градусов. Если ставить 0, то машина вообще не сможет повернуть. Изменяя этот параметр, можно получить совершенно новую физику поведения “болидов” на дорогах.V (fSuspensionForceLevel) — как высоко подпрыгивает
Город с высоты таксиного полета.
машина на буграх. При установке значения 0 машина вообще не прыгает. А вот если ставить значения вроде 50, машина будет то и дело норовить выполнить сальто-мортале. Оптимальные значения 0,5-2. W (fSuspensionDampingLevel) — жесткость подвески. Изменяется в пределах диапазона 0-1. X (fSeatOffsetDistance) — насколько далеко от общего центра машины находится ручка дверцы. Измеряется в метрах и может быть от -10 до 10. Если установить большие значения, главному герою придется отойти на значительное расстояние, прежде чем он сможет открыть дверку и выпихнуть из машины ее владельца. Y (fCollisionDamageMultiplier) — множитель повреждений машины. Меняется от 0 до 5. Ставим 5 и получаем, что тачка просто распадается на детали от малейшего повреждения, норовит взорваться от столкновения с ближайшим столбом. Ставим 0 — и получаем танк в чистом виде. Z (nMonetaryValue) — стоимость транспортного средства в игре. Измеряется в американских долларах. Далее следуют несколько маловажных столбиков, а также столбец с флагами. Описывать я их не стану. Они не сильно влияют на тачки и их поведение. Поэкспериментируйте с ними сами. Теперь можно создавать свои машины в игре, а также модифицировать существующие до неузнаваемости. В моем моде такси выглядит и ездит как ВАЗ 2101. Стремление к идеалу Оперативное вмешательство проведено успешно. Теперь вы полностью подготовлены для создания тотальной модификации. А возможно… возможно, и новой игры. Отрезайте, пришивайте, создавайте новое оружие и новые машины, меняйте оригинальные средства уничтожения и передвижения. Переводите игру на другие языки. Перерисовывайте текстуры и заново озвучивайте GTA. Быть может, вы создадите идеальную игру.