Новое оружие Quake 4
Quake 4 во многом оправдал ожидания игроков, но далеко не все в игре сделано так, как хотелось бы, например — оружие. Cо времен второй части оно практически не изменилось (то ли дело третья часть…). Разработчики логично решили, что раз народу нравится, незачем что-то менять: принцип «тех же щей, да погуще влей». Если вас тоже не устраивает оружие Quake 4, вы попали по адресу. Сегодня полностью переделаем здешний арсенал.
Приготовления
Создавать новое оружие мы будем на базе уже имеющегося. Но единственное, что мы оставим без изменений, — это модель ствола. Хотя и визуальный ряд вы при желании можете подправить в QE Radiant (изучение которого, впрочем, может занять не одну неделю реального времени). А вот скин, «начинку» исходного орудия убийства мы преобразуем основательно. Поэтому новая пушка будет напоминать оригинал лишь внешне (да и то не полностью).
Начнем с «внутренностей». Файлы с боевыми характеристиками оружия находятся в архиве pak001.pk4. Этот файл, равно как и другие pk 4 -архивы игры, лежит в папке < Каталог игры>\q4base. Все они, несмотря на необычное расширение, являются обычными zip -файлами. Работать с ними может любой архиватор.
Что касается архива pak001.pk4 , то он вобрал в себя множество файлов (часть из них рассортирована по каталогам). Нас прежде всего интересуют те из них, что несут в себе какие-либо игровые параметры. Такие файлы собраны в директории \def. Они поддаются правке в любом текстовом редакторе (в том числе и в стандартном « Блокноте »).
За вооружение отвечает подкаталог \weapons : он содержит одиннадцать файлов с расширением def , каждый из которых соответствует определенному виду оружия (какому именно, понятно из названия). Все местные файлы построены по одной и той же схеме: каждый состоит из ряда тематических блоков (разделов), которые, в свою очередь, хранят в себе игровые параметры. Названия и значения характеристик взяты в кавычки (первые указаны левее). Содержимое раздела заключено в фигурные скобки (имя блока находится строкой выше открывающейся скобки). Блок может включать подразделы (оформляются так же, как и разделы) — они объединяют в себе наиболее схожие по назначению атрибуты.
В работе нам могут понадобиться следующие разделы: entityDef weapon_ X (содержит базовые боевые атрибуты ствола), model weapon_ X_ view (посвящен модели и анимации оружия), entityDef projectile_ X (характеристики снаряда, которым стреляет пушка), entityDef damage_ X (задает урон, наносимый снарядом). Во всех перечисленных вариантах X — это название оружия, которое полностью совпадает с именем редактируемого файла. Обратите внимание на то, что в файлах разных видов вооружения количество блоков может быть различным. Это зависит от типа и навороченности ствола.
Пушки и снаряды
Первый из перечисленных выше разделов «оружейных» файлов является самым содержательным. Он несет в себе множество разнообразных параметров. Ознакомимся с теми из них, что могут пригодиться нам при добавлении в игру нового оружия.
weaponname — название ствола.
size — размер орудия убийства.
model_ view — модель пушки, которую мы видим в руках главного героя.
model_ world — модель оружия, которую мы видим, когда ствол лежит без дела.
chargeTime — время, уходящее на «зарядку» (этот атрибут есть только у бластера). Как и все настройки, связанные со временем, измеряется в секундах.
fireRate — скорострельность. Обратите внимание, что чем выше указанное здесь число, тем скорострельность ниже.
def_ projectile — боеприпасы, используемые данным оружием. Так же должен называться один из разделов файла (правда, в наименовании блока имеется еще и сочетание entityDef ), который содержит характеристики этого снаряда.
def_altprojectile — альтернативные боеприпасы (если оружие вообще может стрелять разными патронами). Например, в случае с бластером это «накопленный» заряд.
ammoType — тип патронов, используемый орудием убийства.
clipSize — максимальное число патронов в обойме.
recoilTime — продолжительность действия отдачи от стрельбы.
recoilAngles — сила отдачи. zoomFov — максимальное приближение (зум), которое дает прицел ствола. Этот показатель имеется только у автомата (machine gun) и railgun’а.
zoomTime — скорость «зумирования».
Теперь предлагаем вашему вниманию ключевые атрибуты из блока entityDef projectile_ X :
velocity — скорость полета снаряда (задается по трем осям координат: X, Y, Z).
impact_ gib — этот параметр определяет, разрывает ли снаряд плоть жертвы ( 1 — да, 0 — нет). Хотите много мяса и крови? Тогда укажите здесь единицу для всех орудий убийства.
fx _ fly — эффект полета пули.
fx _ impact_* — эффект, воспроизводимый при контакте снаряда с той или иной поверхностью (ее название указано вместо звездочки).
Электрошок берсерка
Теперь, когда мы изучили теорию, самое время переходить к практике — разработке нового оружия. Мы зададим для исходных пушек способы атаки, которыми создатели наделили врагов главного героя. Вы сможете атаковать монстров их же оружием. Начнем с простого — превратим бластер в электрошок. Это мощное оружие ближнего боя с большим (по сравнению с кастетом) радиусом поражения.
Первым делом откройте в «Блокноте» файл, отвечающий за возможности бластера — blaster.def (напомню, что «оружейные» файлы располагаются в каталоге \def\weapons архива pak001.pk4 ). Отыщите раздел entityDef weapon_blaster. Снимите в нем комментарий с параметра def_projectile , удалив из начала содержащей его строки символы //. После этого игра перестанет игнорировать данную строку. В значение того же атрибута поместите сочетание " projectile_ berserker_ energyBurst " (оно обязательно должно быть заключено в кавычки-“лапки”). Тот же параметр пропишите в характеристике def_altprojectile , дабы отобрать у игрока возможность стрелять из электрошока накопленным зарядом бластера. Иначе мы получим сильное оружие на все случаи жизни — пострадает игровой баланс.
Все это позволит заменить снаряд, которым стреляет бластер, на мощную вспышку энергии. Этот вид атаки мы позаимствовали у монстра под названием berserker. Следующий шаг — копирование соответствующих этому оружию разделов из файла monster_berserker.def , лежащего в директории \def\ai того же архива, в редактируемый файл. Речь идет о блоках entityDef damage_ berserker_ energyBurst и entityDef projectile_ berserker_ energyBurst (следуют друг за другом). Поместите их в буфер обмена — от названия до закрывающейся скобки — и вставьте между двумя любыми разделами файла blaster.def. Проще всего скопировать их в конец файла. Теперь главный герой обучен сильнейшей атаке berserker’а. Однако необходимо также адаптировать ее под игрока.
Для этого обратитесь к первому из новых разделов. Присвойте в нем атрибуту damage (определяет урон, наносимый снарядом) значение 75. В результате первый вид оружия станет причинять жертвам ущерб, значительно больший, чем прежде. Это компенсирует невысокую дальнобойность электрошока. Затем загляните в блок entityDef weapon_blaster. Повысьте значение характеристики fireRate до отметки .2 , чтобы оружие не получилось слишком уж скорострельным.
Полировка стволов
Начинка нового орудия убийства готова. Настало время поработать кистью, дабы видоизменить скин бластера. Для этого подрисуем к нему кое-какие детали. Но прежде немного о том, как работать с графическими файлами игры. Они рассредоточены по многочисленным pk 4 -архивам. Что касается текстур оружия, то они припрятаны разработчиками в директорию \models\weapons архива pak008.pk4. В ней вы обнаружите одиннадцать подкаталогов, каждый из которых наполнен текстурами определенного вида вооружения. В данном случае нас интересует первый из них — \blaster.
В каждом из этих каталогов, помимо всего прочего, имеется ряд графических файлов форматов tga и dds (в этих двух форматах записаны все игровые текстуры, не только оружейные). Если первые можно править в том же Photoshop , то с dds придется немного повозиться. Их нужно сначала перевести в tga -формат, а уж потом редактировать. Делается это с помощью набора утилит DXT Tools (устанавливайте его с нашего диска ) следующим образом.
Скопируйте интересующий вас dds -файл в директорию, в которую вы установили DXT Tools. Запустите оттуда файл readdxt.exe с параметром: readdxt <имя .dds-файла> (например, readdxt bp_lo_d.dds ). В результате этого в программной директории появится файл test.tga с нужной вам картинкой. Сразу же присвойте ей имя, которое она имела до конвертирования. Теперь можете смело перерисовать ее в любимом графическом редакторе. После завершения правки перекодируйте измененный рисунок обратно в формат dds , запустив файл nvdxt.exe с параметром nvdxt <имя . tga -файла > (например, nvdxt bp_lo_d. tga ). После этого вам останется только вернуть полученный файл на свое прежнее место — в соответствующий архив.
Возвращаемся к нашему барану, то есть бластеру: в данном случае мы сможем обойтись без помощи DXT Tools , так как нужные нам файлы представлены в формате tga. Речь идет о файлах bp_lo_d.tga и w_bp_d.tga. Обратите внимание на то, что оба они несут в себе «шкурку» одного и того же орудия убийства, но заключают в себе разные, хотя и похожие изображения. Дело в том, что первый файл содержит высокодетализированную текстуру (задействуется при самом высоком качестве графики — значении Ultra Quality настройки Video Quality ), а второй — его аналог более низкого качества (сюда относятся все остальные значения параметра Video Quality ). Подкорректируйте в графическом редакторе тот из них, который соответствует уровню графики, на котором вы играете. В идеале, конечно, изменить оба вида скина, чтобы оружие выглядело одинаково при любых графических настройках.
При перерисовке скина вполне допустимо ограничиться незначительными изменениями. Главное здесь — как-то пометить орудие убийства, показать, что оно отличается от оригинального. Можно подрисовать какие-то детали или нанести на ствол надписи. В случае с бластером лично я поместил на него логотип «Мании», номер модели оружия и предупреждение об опасности (см. картинки).
Осталось только присвоить электрошоку подходящее название. Делается это правкой файлов english_code.lang и english_guis.lang (сойдет обычный «Блокнот») из папки \strings архива zpak_english.pk4. Оба хранят в себе игровой текст. В первом из них найдите строку:
“#str_107400” “Blaster”
Замените в ней слово Blaster на Electroshock.
То же самое проделайте со следующими тремя строчками файла english _ guis . lang :
“#str_200104” “Blaster/Gauntlet”
“#str_200949” “Blaster”
“#str_200966” “Blaster (SP)/Gauntlet (MP)”
Теперь первое оружие будет именоваться в игре электрошоком (Electroshock). Обобщая, можно сказать, что это в меру эффективное (прежде всего в силу высокого урона) и уникальное в своем роде средство атаки, ведь в игре нет ни одного орудия ближнего боя (не считая мультиплеерного gauntlet).
Кислотная пушка
Еще одно оружие, которое мы сегодня сделаем, — это кислотная пушка. Кое-какие ее характеристики мы позаимствуем из файла с описанием одного из монстров. Однако сам монстр этим видом атаки в финальной версии игры не пользуется. Зато им сможет воспользоваться главный герой.
Кислотную пушку мы поставим на место шотгана. Откройте в текстовом редакторе соответствующий файл shotgun.def (вы найдете его в папке \def\weapons , архив pak001.pk4 ). Добавьте в блок entityDef weapon_shotgun следующую строчку:
“def_projectile” “projectile_acid_drip”
Затем скопируйте в конец файла shotgun.def разделы entityDef damage_acid_drip и entityDef projectile_acid_drip из файла monster_fatty.def , который находится в каталоге \def\ai того же архива и содержит параметры монстра-толстяка. После всех этих операций оружие начнет стрелять кислотой. Однако на данный момент данная пушка совершенно не приспособлена к бою: она наносит слишком маленький урон и к тому же страдает до неприличия малой дальнобойностью. Чтобы исправить все это, обратитесь к новоявленным блокам файла шотгана. В первом из них замените исходное значение атрибута damag e числом 100.
Во втором разделе исправьте значения параметров speed (скорость полета снаряда) и gravity (гравитация полета снаряда) на 800 и 1 соответственно. Теперь снаряд, которым стреляет пушка, будет лететь на большее расстояние. Но большой дальнобойности от этого вида вооружения все же не добиться: пушка использует специфический тип патронов — капли кислоты. Новое оружие во многом напоминает биовинтовку (bio-rifle) из Unreal Tournament.
Теперь нас интересует блок entityDef weapon_shotgun. Нам нужно уменьшить в нем значения показателей fireRat e и clipSize — до .6 и 6. Настало время сделать огонь более эффектным. Для этого подредактируйте файлы acid_ drip_ impact. fx и acid_drip_proj.fx из каталога ** *effects* *levels* putra в архиве pak001.pk4. В первом из них отыщите следующие строки (они расположены в различных разделах файла):
material “gfx/effects/fluids_drips/brown_splash_line”
material “gfx/effects/fluids_drips/brown_bubble”
material “gfx/effects/fluids_drips/brown_bubble_half”
В верхней строчке исправьте слово brown на green , в средней — словосочетание brown_bubble на bubble_green , в нижней — brown_bubble_half на bubble_green_half.
Что касается файла acid_drip_proj.fx , то здесь вас интересует строка:
material “gfx/effects/fluids_drips/drop_additive_sideways”
В ней сочетание drop_ additive_ sideways необходимо заменить на bubble_green. Теперь в том месте, куда вы выстрелили из пушки, будут оставаться капли кислоты.
Следующий этап в создании оружия — проработка его внешнего вида. Высокодетализированный скин ружья содержится в файле sgv2_lo_d.tga , недетализированный — в w_sg_d.tga. Оба файла лежат в директории \models\weapons\shotgun в архиве pak008.pk4. Подкорректируйте немного ту «шкурку», которая подходит под выбранное вами качество графики. В своем моде я украсил пушку номером ее модели, названием любимого журнала и пятнами кислоты (см. картинки).
Переименуем шотган. Отыщите в файле english_code.lang из каталога \strings архива zpak_english.pk4 следующую строку:
“#str_107410” " Shotgun"
Замените в ней слово Shotgun на словосочетание Acid Gun. Такому же преобразованию нужно подвергнуть приведенную ниже строчку файла english_guis.lang (находится там же, где и файл english_code.lang ):
“#str_200105” " Shotgun"
В итоге мы получили хорошее и весьма оригинальное оружие. Оно обладает средней скорострельностью, небольшой дальностью стрельбы (по сравнению с огнестрельным оружием) и малой обоймой, зато сила атаки — на очень высоком уровне.
* * *
Мы добавили в игру два самобытных вида оружия, разнообразив при этом уже порядком «приевшийся» арсенал главгероя. Но два новых вида вооружения — далеко не предел. Более того, настоятельно рекомендую не ограничиваться только ими, а смастерить еще пару-тройку стволов. Это не составит для вас большого труда, ведь вы знакомы с назначением всех основных боевых параметров. А главное — у вас есть наглядные примеры. Вам нужно только придумать новый вид оружия.