Биошоковая терапия: новое оружие в BioShock
Ученые подводного города Rapture изобрели новые виды боеприпасов. Среди них — резиновые пули и пули с заморозкой, в буквальном смысле останавливающие врагов.
Наконечники новых стрел к арбалету пропитаны бактериальными спорами, которые при попадании в кровь жертвы заражают ее смертельной болезнью. Под воздействием других арбалетных снарядов броня противников рассыпается, словно карточный домик на ветру.
Все эти боеприпасы разработчики изначально собирались добавить в игру, но потом отказались от них (возможно, на некоторые просто не хватило времени). Так что нам придется добавить их в BioShock самостоятельно.
Смертельное оружие
Основной инструмент для модифицирования игры — обычный «Блокнот» или любой другой текстовый редактор. Рабочим материалом послужит файл ConfigINI.IBF из директории <Каталог игры>\Content. Он состоит из нескольких разделов, нас интересуют только те, что относятся к оружию. Они располагаются почти в самом начале файла, сразу за комментарием WEAPONS.INI TABLE OF CONTENTS. «Оружейный» блок состоит из восьми модулей: PLAYER WEAPONS & AMMO — параметры конкретных видов оружия игрока, MONSTER WEAPONS & AMMO — параметры оружия монстров, STIMULI SETS — характеристики различных видов урона, DAMAGE RESISTANCE SETS — параметры защиты от попаданий, Weapon Bases — базовые характеристики вооружения, Ammunition Bases & Hierarchy — основные характеристики патронов, Projectile Data & Hierarchy — параметры снарядов, WEAPON UPGRADE DATA — апгрейды.
Каждый модуль состоит из множества разделов, названия которых выделены фигурными скобками. Остановимся пока на начальном модуле — PLAYER WEAPONS & AMMO. В нем каждому виду оружия (которых, напомним, в игре семь плюс фотокамера) соответствует четыре соседних блока (исключение составляет гаечный ключ, ему отводится всего два раздела). Первый, именуемый ShockGame.X, содержит общие параметры, а еще три с названиями вида ShockGame.XYAmmo — характеристики боеприпасов (X — название оружия, Y — боеприпаса). На месте X могут стоять следующие наименования: Wrench — гаечный ключ, Pistol — пистолет, ShotGun — ружье, Crossbow — арбалет, GrenadeLauncher — гранатомет, ChemicalThrower — химическая пушка, MachineGun — пулемет, ResearchCamera — фотокамера.
Общее
Познакомимся поближе с разделом ShockGame.X. При создании нового оружия нам пригодятся следующие показатели:
WeaponModel — модель оружия;
FriendlyName — название пушки, отображаемое в игре;
AvailableAmmoTypes — вид патронов, которыми стреляет оружие. Поскольку в оригинале у каждого образца (кроме первого) их три, то и параметров с таким именем соответственно тоже три (плюс некоторые могут быть закомментированы);
Новое оружие — это, конечно, хорошо, но иногда достаточно и обычного разводного ключа. |
DefaultAmmoSelection — вид боеприпасов, который используется по умолчанию;
BaseMagazineSize — вместимость магазина. Этот и три следующих показателя могут улучшаться при апгрейде оружия;
BaseAccuracy — точность стрельбы;
BaseReloadRate — продолжительность перезарядки;
BaseFireRate — скорострельность. Чем ниже значение, тем скорость стрельбы выше;
OnFiredEffects — эффект, появляющийся при стрельбе;
UpgradeStatName — доступный апгрейд. В качестве значения (строится по принципу: XUpgrade_Y, где X — название пушки, а Y — улучшаемый параметр) здесь указывается название раздела (модуль WEAPON UPGRADE DATA), характеризующего это улучшение. Если для данного вида оружия есть несколько апгрейдов, то и атрибутов будет больше одного;
CanBeZoomed — имеет ли оружие прицел с зумом (true — да, false — нет);
ZoomedFOVAngle — угол обзора при использовании зума. Этот параметр активируется только при значении true у параметра XUpgrade_Y;
ZoomLevels — величина приближения. Сколько таких отметок у прицела, столько и атрибутов с названием ZoomLevels;
ZoomSpeed — быстрота зумирования;
bHideWhileUnequipped — прятать ли пушку, когда у игрока к ней нет патронов (true — да, false — нет).
Снаряды
Теперь разберем блок ShockGame.XY. Обратите внимание, что у некоторых видов оружия таких разделов больше трех, вот только все «лишние» закомментированы. В каждом блоке вы обнаружите следующие характеристики патронов:
FriendlyName — название боеприпаса, которое используется в игре;
Description — описание зарядов;
VisualAmmoModel — модель патронов;
DamageStimuliSetName — наносимый урон. Здесь указывается название соответствующего раздела (из модуля STIMULI SETS), в котором задаются виды и величина повреждения;
NumRoundsUsedPerShot — количество патронов, которое расходуется за один выстрел;
Electro Bolt прекрасно подходит для атаки из-за угла. |
NumBurstShots — сколько раз ствол стреляет после нажатия на спусковой крючок;
MaximumStackSize — максимальное количество патронов данного типа, которое вы можете одновременно носить с собой;
AttackRange — дальность атаки (используется только для арбалета);
CreditValue — стоимость боекомплекта.
Следующие три атрибута прописаны лишь для арбалета и гранатомета:
ProjectileClass — класс снаряда (смотрите одноименный раздел модуля Projectile Data & Hierarchy);
InitialVelocity — стартовая скорость полета снаряда;
NumProjectilesToFire — число снарядов, которыми одновременно стреляет оружие.
Следующие пять характеристик относятся только к гранатомету:
FuseTime — скорость детонации;
InnerDamageRadius — внутренний радиус взрыва (зона повышенного урона);
OuterDamageRadius — внешний радиус взрыва;
ExplodeOnImpact — взрывается ли самостоятельно снаряд при контакте с какой-либо поверхностью (true — да, false — нет);
TimeToArm — время (в секундах), которое тратится на переключение на указанный вид боеприпасов.
Разделы вида XStimuliSet (где X — тип снаряда), на которые ссылается параметр DamageStimuliSetName, располагают следующими характеристиками снаряда. Первая из них является составной: Stimulus=(Type=STIMULUS_X,Amount=Y,Chance=Z). X — тип воздействия, оказываемого снарядом на жертву, Y — величина этого воздействия (это либо урон, либо продолжительность действия) и Z — шанс, что оно подействует на жертву (1.0 — стопроцентный). Этот атрибут может повторяться, поскольку и жертвы бывают разные, и воздействий может быть сразу несколько.
На месте X могут быть следующие сочетания: AIGenericPiercing (общий урон), AIArmorPiercing (разрушение брони), AIAntiPersonnel (ущерб здоровью), AIBludgeoning (погружение в состояние грогги, т.е. одномоментное резкое ухудшение состояния), AIHeat (жар), AICold (холод), AIElectric (электричество), AIExplosive (взрыв) и AIFalling (падение). Все они задают воздействие снаряда на ваших врагов. Есть у этих девяти вариантов и аналоги без приставки AI — они определяют негативное влияние на игрока. Наконец, существует шесть специфичных видов повреждения, воздействующих и на игрока, и на неприятелей. Это Shocked (шок), Frozen (заморозка), Burning (горение), Diseased (болезнь), Berserk (бешенство), LatentBerserk (скрытое бешенство). Показатель Y в данном случае определяет продолжительность этого влияния, то бишь пребывания жертвы в указанном состоянии.
Еще четыре важных характеристики из блока типа XStimuliSet:
MomentumScale — импульс, который получает жертва. Изменяется от 0 до 10.0f;
DamageType — тип повреждения от снаряда. Explosive — взрыв, Ranged — огнестрельное ранение, Melee — травма от удара;
DamageStrength — обобщенный ущерб. Light — маленький, Medium — средний, Heavy — большой.
Мультиракетница
С теорией мы разобрались — изменяя описанные выше характеристики, вы можете сделать оружие с самыми различными характеристиками. Переходим к практике — переделаем гранатомет в мощную мультиракетницу. Она будет стрелять, во-первых, простой одинарной ракетой, во-вторых, тремя ракетами сразу и, в-третьих, убийственным ядерным снарядом.
Отправляемся в раздел ShockGame.GrenadeLauncher и меняем его содержимое следующим образом. Переименуем оружие, исправив значение атрибута FriendlyName на Rocket Launcher или «Ракетница«, если у вас русская версия игры. Урежем вдвое обойму, присвоив характеристике BaseMagazineSize число 3. Кроме того, сделаем оружие более медленным в обращении, задав настройкам BaseReloadRate и BaseFireRate значение 2.0.
Ракета
Значительно усилить обычный пистолет совсем несложно. Достаточно поправить с десяток характеристик. |
Теперь переходим к «патронным» разделам. В первом из них (ShockGame.GrenadeLauncher_FragGrenade) нужно проделать следующие преобразования. Параметру FriendlyName определяем в значение словосочетание Simple rocket (в русской версии «Простая ракета«). Желательно также подобрать снаряду новое описание, подкорректировав текст, расположенный напротив показателя Description.
Рядом с параметром ProjectileClass значение Frag замените на RPG, в результате чего оружие станет стрелять ракетами. Скорость их полета (InitialVelocity) следует установить равной 1500. Радиус взрыва лучше уменьшить, придав показателям InnerDamageRadius и OuterDamageRadius значения 450 и 550. Параметрам MaximumStackSize и CreditValue лучше всего подойдут числа 10 и 15. Наконец, атрибуту ExplodeOnImpact ставим значение True.
Далее поработаем над блоком FragGrenadeStimuliSet. Удалим все его содержимое за исключением заголовка: [FragGrenadeStimuliSet]; итого получается девять строк. На их место мы поставим новые из блока RPGStimuliSet (название раздела опять же не трогаем), параметры же отредактируем следующим образом: в первой строке (FragGrenadeStimuliSet) число 400 исправим на 300, во второй — 75 на 50, в третьей — 60 на 45.
Тройной выстрел
Что касается второго типа патронов, тройной ракеты, то здесь изменения будут не столь масштабными. Обратимся к разделу ShockGame.GrenadeLauncher_RPG и присвоим в нем следующим характеристикам указанные значения: FriendlyName=Triple rocket (в русской версии «Тройная ракета«); InitialVelocity=750; NumBurstShots=3; NumProjectilesToFire=3; FuseTime=40; InnerDamageRadius=350; OuterDamageRadius=500; MaximumStackSize=15; NumRoundsUsedPerShot=3; CreditValue=25.
Теперь отыщите блок RPGStimuliSet. В первой его строке число 400 заменяем на 230, во второй — 75 на 40, в третьей — 60 на 35. Параметру MomentumScale поставим значение 6.0f. Получившийся тип патронов хорош в сражениях сразу с несколькими противниками. Просто запустите тройную ракету в толпу.
Ядерная боеголовка
А теперь изготовим самое мощное оружие. В раздел ShockGame.GrenadeLauncher_StickyGrenade внесите следующие изменения: FriendlyName=Nuclear Rocket (в русской версии «Ядерная ракета«); ProjectileClass=Class’ShockDesignerClasses.RPGgrenadeProjectile’; InitialVelocity=500; FuseTime=1000; InnerDamageRadius=1000; OuterDamageRadius=1400; ExplodeOnImpact=True; TimeToArm=3; MaximumStackSize=2; CreditValue=30.
Перейдите к блоку StickyProxStimuliSet. Подмените его содержимое строками из раздела RPGStimuliSet, как мы делали это в случае с блоком FragGrenadeStimuliSet. Подредактируйте обновленные строчки раздела StickyProxStimuliSet, которых отныне восемь (не считая заглавной). В первой из них значение 400 измените на 600, во второй — 75 на 100, в третьей — 60 на 90, в четвертой — 1.0 на 3.0, а 0.01 на 0.5. Значение параметра MomentumScale увеличьте до 10.0f.
Ядерная боеголовка, которую мы только что соорудили, является незаменимым оружием для зачистки помещений: радиус взрыва — несколько десятков метров. Причем земля после разрыва снаряда покрывается пламенем, которое горит еще три секунды, поджаривая врагов. Только будьте аккуратны: один неточный выстрел — и на тот свет отправитесь вы сами.
* * *
Мы создали с нуля только один вид оружия — мультиракетницу. Но это вовсе не значит, что стоит останавливаться на достигнутом. Изменяя характеристики, перечисленные в самом начале материала, несложно создавать новые виды вооружения в массовом масштабе. Вот только не забывайте о балансе. Разрабатывая ракетницу, мы внимательно следили, чтобы она гармонично дополняла геймплей, а не превращала прохождение игры в безумный забег читера. Если будете усиливать какое-то оружие, то не забывайте, например, уменьшать число патронов к нему.
А. Верещагин
источник: http://www.igromania.ru/Articles/12915/Bioshokovaya_terapiya_Novoe_oruzhie_v_BioShock.htm
Свежие комментарии