статья
Все цвета Far Cry, часть 1
Джек Карвер превосходно владеет искусством рукопашного боя, а при необходимости может даже огреть соперника по голове прикладом ствола. Ракетница способна стрелять тремя ракетами за раз (почти как в UT), а мачете имеет четыре разновидности атаки. Враги практически не уступают в разумности живым игрокам, а лодки и машины ездят на запредельных скоростях. Несложно догадаться, что в оригинальном Far Cry ничего такого нет. Но, потратив всего час-полтора своего времени, всего этого несложно добиться, изменяя скриптовые файлы игры.

   Основы основ
    В игровой директории отыщите подкаталог \FCData, заполненный файлами с загадочным на первый взгляд расширением pak. Последние на деле представляют собой обычные zip-архивы, работать с которым может любой современный архиватор. Все архивы хранят в себе множество файлов, многие из которых содержат немало полезного.
    Архив Sounds.pak содержит звуковые файлы формата wav. Архив имеет в себе директорию \Sounds, которая в свою очередь подразделяется на множество подкаталогов: \Ambient — содержит шум, производимый окружающей средой, \animals — звуковые эффекты, издаваемые животными, \birds и \missionbirds — пение и чириканье птиц, \building — производимые строениями звуки, \bullets — звон гильз, \doors — скрип дверей, \explosions — взрывы, \items — звуки, раздающиеся при использовании игроком различных предметов, \jungle — фоновый шум в джунглях, \Menu — звуковое оформление меню, \mutants — звуки, издаваемые мутантами, \objectimpact — звуковые эффекты, которые вы слышите при контакте (например, при падении) различных объектов с той или иной поверхностью, \player — звуки, издаваемые вашим персонажем, \radiovoices и \mission_objectives — речь с подсказками Дойля, которая передается вам по рации, \Vehicle — звуковые эффекты, связанные с транспортными средствами, \Weapons — звуки, производимые различными видами оружия. Думаю, вы уже поняли, что все эти файлы легко редактируются в стандартной Windows’овской “Звукозаписи” и благополучно заменяются на любые другие звуки.
    Продолжая звуковую тему, заглянем в архив Music.pak и обнаружим там используемые в игре музыкальные композиции, распределенные по подкаталогам в зависимости от территориальной принадлежности (проще говоря, уровня, в котором играет мелодия). Основная масса здешних файлов имеет формат wav, так что перезаписать их или заменить другими вам не составит никакого труда. Здесь же расположена музыка в формате ogg (эти треки вы можете прослушивать в Winamp версии 3.0 или выше). Для ее преобразования в более привычные звуковые форматы — mp3 или wav используется программа dBpowerAMP (имеется на нашем CD- или DVD-диске), о которой мы неоднократно писали во “Вскрытии” (в частности, работа с программой подробно описывалась в статье “На грани реальности”, которую вы найдете в номере 7 за 2004 год).
    Познакомимся с архивом Textures.pak, несущим в себе используемые в игре текстуры и интерфейсные картинки. В архиве находится папка \Textures, содержащая следующие подкаталоги: \Animated — здесь хранятся анимированные текстуры, \CheckPoints — небольшие скриншоты из различных уровней, красующиеся на экране при выборе сохраненной игры, \Credits — титры и фоновые картинки для них, \Decal — текстуры для поврежденных поверхностей и объектов, \hud — рисунки для HUD’а (экрана героя), \lang_English — графическое отображение игровых шрифтов, \lights — текстуры для источников освещения, \signs — различные предупреждающие знаки и надписи, \Skys — небесные текстуры, \Terrain — текстуры для земли. В директории \Textures лежит также немало графических файлов с текстурами стен и поверхностей из различного материала. Некоторые из этих файлов находятся в папках \common и \defaults, а некоторые — вообще не принадлежат ни одному подкаталогу.
    Имеющиеся во всех перечисленных папках картинки представлены файлами трех форматов: jpg, tga и dds. Если с первыми двумя типами все достаточно просто (такие файлы можно преобразовывать в современных графических редакторах типа Photoshop), то для работы с третьим требуется специальная программа — набор утилит DXT Tools (обращайтесь за ним к нашему CD- или DVD-диску), позволяющий вам превращать картинку формата dds в более привычный tga-файл.
    Чтобы перевести рисунок из формата dds в tga, зайдите в директорию, куда вы установили DXT Tools, и запустите файл readdxt.exe с параметром: readdxt <имя dds-файла> (например, readdxt C:\Textures\concrete.dds), вследствие чего в программной директории появится файл test.tga с нужной вам картинкой. Последнюю вы можете перерисовать в любимом графическом редакторе. Обратное действие (конвертирование tga-файла в формат dds) осуществляется путем запуска файла nvdxt.exe с параметром: nvdxt <имя tga-файла> (например, nvdxt test.tga). Далее вам останется только вернуть полученному файлу то имя, которое он имел до перекодировки в tga-формат, и положить в архив, откуда вы его извлекли.
    Далее у нас по курсу — архив Objects.pak с файлами моделей. В архиве располагается директория \Objects, состоящая из следующих подкаталогов: \Buildings — строения, \characters — игровые персонажи, \Indoor — предметы, составляющие убранство помещений, \Natural — растения, деревья и прочие природные богатства, \Outdoor — объекты искусственного происхождения, украшающие открытые пространства, \Pickups — “призы” (полезные вещички, которые вы можете найти и использовать в игре), \Vehicles — транспортные средства, \Weapons — различные виды вооружения. Каждая из этих папок также делится на подкаталоги (которые, кстати, тоже могут быть подвергнуты дальнейшему делению), в которых содержатся файлы, относящиеся к тому или иному объекту или субъекту. Файлы эти могут быть трех форматов: cgf — модельные файлы, caf — анимационные файлы, dds — скины объекта/субъекта. Последние, как вы уже, наверное, поняли, можно легко подкорректировать в графическом редакторе при содействии DXT Tools.
    Редактируя содержащиеся в архивах Sounds.pak и Music.pak звуковые файлы, вы можете полностью изменить звуковое оформление и музыкальное сопровождение игры. Особенно советую обратить внимание на музыку. Играйте же под любимую музыку, поместив ее в архив Music.pak!
    Кроме того, не упустите возможность видоизменить игровые карты, перерисовывая текстуры и скины различных предметов. Особое внимание лучше уделить “шкуркам” оружия, транспортных средств и игровых персонажей. Это в совокупности с правкой lua-файлов из архива Scripts.pak (впрочем, о нем чуть позже) поможет вам населить игровой мир новыми действующими лицами, вооруженными невиданными ранее видами вооружения и разъезжающими на новоявленных средствах передвижения.
    В дополнение неплохо бы переоформить на свой вкус экран героя. Основной файл, который вам при этом пригодится, — это hud.dds, находящийся в папке \Textures\hud архива Textures.pak. Проделайте все это, и игра фактически примет новый облик.

    Со щитом — или?
    Обратимся к архиву Scripts.pak, который под завязку набит разнообразными игровыми скриптами (все они находятся внутри папки \Scripts), представленными файлами с расширением lua и распределенными по многочисленным подкаталогам. Среди последних нам в первую очередь пригодятся две директории: \Ai — скрипты для AI (искусственного интеллекта ваших компьютерных врагов) и \Default — основные игровые скрипты.
    Помимо непосредственно самих скриптов lua-файлы полны всевозможных игровых параметров, которые и представляют для нас первостепенный интерес. Мы не будем углубляться в дебри редактирования скриптов, а остановимся на различных настройках. Те же, кому этого недостаточно, могут самостоятельно заняться правкой скриптов.
    Пару слов о структуре lua-файлов. Каждый такой файл состоит из множества разделов (или по-другому — блоков) и подразделов. Один из представленных в файле разделов — основной. В некоторых случаях ему предшествует серия комментариев — такие строки начинаются с символов “--” и игрой не учитываются, а лишь помогают вам разобраться с назначением и содержимым файла.
    Основной блок носит то же имя, что и сам файл, и хранит в себе различные настройки. Устроен главный раздел файла следующим образом: N = {...}, где N — название блока, а на месте многоточия содержатся либо параметры (имя каждого параметра отделяется от его значения знаком равенства, а между строками с самими атрибутами ставятся запятые), либо подразделы. Последние оформляются так же, как и основной раздел, и, в свою очередь, также могут иметь в себе атрибуты и более мелкие блоки. После же главного блока файла, как правило, следуют сами скрипты.
    Итак, первой нашей жертвой станет файл GameRules.lua из директории \Default. Файл этот невелик и посвящен основам игры. В основном разделе — GameRules — вы найдете блок InitialPlayerProperties, в котором находятся лишь два параметра — health и armor. Первый из них определяет “количество” здоровья, с которым вы начинаете игру в каждой миссии, а второй — стартовое число единиц брони (минимальное значение этих параметров — 0; максимальное — 255, соответствует 100 процентам).
    Кроме того, в блоке GameRules находится ряд важнейших параметров, задающих уязвимость игровых персонажей при поражении различных участков их тела. Перед вами первая троица характеристик данного вида.
    ai_to_player_damage — умножитель урона, наносимого игроку компьютерными врагами.
    player_to_ai_damage — умножитель повреждения, наносимого врагам игроком.
    ai_to_ai_damage — то же самое для случая, когда один враг атакует другого (это всегда происходит неумышленно) или когда ваша напарница — журналистка Валери — сражается с неприятелями.
    Значения всех трех показателей выглядят следующим образом: { N1, N2, N3, N4, N5, N6 }, где N1 соответствует попаданию в голову, N2 — попаданию в сердце, N3 — в тело, N4 — руку, N5 — ногу, N6 — повреждению от взрыва. Изменение этих чисел поможет вам в значительной мере перекроить систему повреждений как для самого игрока, так и для его противников.
    Далее в том же разделе GameRules вы встретите следующие параметры.
    Arm2BodyDamage — умножитель урона от удара рукой.
    Leg2BodyDamage — умножитель ущерба от удара ногой. Увеличьте значения этой и предыдущей характеристик, и ваши соперники значительно прибавят в искусстве рукопашного боя.
    god_mode_count — режим бога. 1 — включен, nil — нет.
    Наибольший интерес в файле GameRules.lua для нас представляют настройки ai_to_player_damage, player_to_ai_damage и ai_to_ai_damage. В связи с этим хочется обратить ваше внимание на то, насколько нереалистична игровая система повреждений. Для игрока почему-то попадания в сердце, голову и тело одинаково болезненны, и их умножители равны единице. Правдоподобнее было бы поставить в случае с сердцем (напомню, что за эту зону отвечает второе число в значении параметра ai_to_player_damage) значительно больший коэффициент — по меньшей мере 5, ведь, сами понимаете, выжить раненному в сердце человеку практически невозможно. Для головы (первое число) могу предложить умножитель пониже, но никак не меньше 3. Ну а коэффициент для тела в этом случае лучше оставить без изменений.
    Что касается характеристики player_to_ai_damage, то и здесь можно увидеть некоторую неточность. Речь идет о том, что умножитель попадания в голову явно завышен и равен 10, в то время как поражение сердца оценивается в пять раз менее болезненным. Где же реалистичность?
    Кроме того, заметно, что значения всех трех параметров кардинально отличаются друг от друга. Лично я считаю более логичным поставить всех персонажей в равное положение, задав им предложенную выше схему.
    Редактируя эти три показателя, нетрудно управлять сложностью игрового процесса, повышая значения атрибута ai_to_player_damage и уменьшая числа, соответствующие характеристикам player_to_ai_damage и ai_to_ai_damage. С этой же целью — изменение сложности — вы можете подправить значения атрибутов health и armor. Существенно уменьшите эти числа, и начинать прохождение каждого уровня станет куда проблематичнее.

    Компьютерный разум
    Следующая наша цель — каталог \Entities, располагается который, как и разобранный выше файл GameRules.lua, в папке \Default. В директории \Entities вы обнаружите большое число всяческих подкаталогов, изучением которых мы и займемся.
    Начнем с папки \Ai, в которую разработчики припрятали файлы с параметрами искусственного интеллекта игровых персонажей. Базовый файл с основополагающими характеристиками AI зовется BasicAI.lua. Перед вами — четыре основных параметра, которые могут нам так или иначе пригодиться при создании мода.
    isBlinded — слепота врагов. При значении 1 ваши противники сродни слепым котятам, неспособным толком оказать сопротивление игроку. Рекомендую разок-другой взглянуть на это. Презабавное зрелище, скажу я вам! При 0 враги находятся в нормальном состоянии.
    Energy — начальное “количество” энергии у AI.
    MaxEnergy — максимальное “количество” энергии. Чем выше указанные здесь и в значении предыдущего атрибута числа, тем дольше смогут проявлять активность ваши компьютерные соперники (это будет проявляться, в частности, в том, что они смогут в течение более длительного времени передвигаться на высоких скоростях).
    EnergyChanged — показатель определяет, может ли энергия врагов пополняться со временем. 1 — да, nil — нет.

    Асы сечи
    Перейдем к разбору остальных файлов из директории \Ai. Файлы, имена которых начинаются со слова Merc, соответствуют искусственному интеллекту врагов-наемников; те же, что имеют приставку Mutant, — мутантам. При этом и из тех, и из других нам будут полезны только файлы с окончанием _x в названии — именно они несут в себе столь нужные нам настройки. Файлы cargochopper.lua, gunship.lua, HeliCommon.lua посвящены средствам передвижения, управляемым только компьютером: в первом случае — грузовому вертолету, во втором — кораблю и в третьем — обычному вертолету. Что касается файлов Pig_x.lua, Shark_x.lua, Worm_x.lua, то они отводятся под атрибуты соответственно свиньи, акулы и червя. Наконец файл NPC_x.lua содержит характеристики NPC (в том числе и вашей помощницы Валери). Все перечисленные файлы сходны по набору хранящихся в них настроек. Более того, многие из них наличествуют во всех этих файлах. А теперь — подробнее об основных параметрах.
    Большинство настроек объединено в разделы. Однако существует три атрибута, не включенных ни в один из блоков.
    NoFallDamage — иммунитет к падениям с большой высоты (1 — имеется, 0 — нет). Как правило, присутствует у мутантов.
    GrenadeType — тип гранат, которыми вооружен персонаж. Число же гранат задается в отдельном блоке — Ammo — атрибутами Grenades и HandGrenades (к этому разделу мы еще вернемся).
    MeleeHitType — тип рукопашной атаки, используемый героем.
    В блоке PropertiesInstance располагаются следующие показатели.
    aicharacter_character — тип AI, а соответственно и поведения субъекта.
    specialInfo — описание. Как правило, отсутствует.
    soundrange — максимальное расстояние, на котором персонаж способен услышать шаги игрока. Обратите внимание на то, что все игровые атрибуты, определяющие расстояние между какими-либо объектами/субъектами (или высоту чего-либо), измеряются в метрах.
    sightrange — максимальное расстояние, на котором герой способен увидеть игрока. Повысьте значения этого и предыдущего параметра у ваших врагов, и попытка спрятаться от последних или тем более застать их врасплох неожиданным нападением будет заранее обречена на неудачу.
    bGunReady — готовность к стрельбе. Если здесь стоит 1, этот враг, едва завидев вас, будет стрелять не мешкая, при значении же 0 он будет секунду-другую готовиться к выстрелу.
    fileHelmetModel — модель шлема персонажа. Здесь, а также при ссылке на модельные файлы в любом другом lua-файле, вам нужно указать путь cgf-файла (а также его имя) с данной моделью внутри архива Objects.pak. Например: “Objects\characters\mercenaries\accessories\helmet_white.cgf”.
    bHelmetOnStart — наличие шлема (1 — имеется, 0 — нет).
    bHasLight — подсветка у персонажа (1 — имеется, 0 — нет). Если вы поставите сюда единицу, то значительно облегчите себе поиск врагов (или любых других типов персонажей — в зависимости от файла).
    В разделе Properties любого вашего соперника наличествуют важнейшие для редактирования показатели. Вот их список.
    accuracy — меткость врага. Значение этого и следующего показателя должно находиться в промежутке от 0 до 1.
    aggression — агрессивность. При нуле персонаж полностью пассивен, а при единице, наоборот, проявляет невероятную агрессию и способен буквально разорвать своих оппонентов на части. Этот параметр является важнейшим регулятором поведения ваших врагов.
    AnimPack — тип анимации персонажа. Для большинства врагов значение параметра выглядит как “Basic”.
    attackrange — зона атаки, которую может охватить этот неприятель, или, иными словами, дальность стрельбы.
    back_speed — общая скорость, с которой персонаж пятится. Параметр принимает дробные значения (при этом целая часть числа отделяется от дробной точкой). Следует сказать, что этот и все остальные игровые параметры, определяющие скорость или быстроту чего-либо, измеряются в метрах в секунду.
    bDumbRockets — данный показатель определяет, слышит ли персонаж рев приближающейся ракеты, пущенной вами (1 — нет, 0 — да). Если вы хороший игрок, будет не лишним поставить этому параметру единицу для всех ваших врагов — в этом случае у них появятся шансы увернуться от ваших ракет.
    bHasArmor — этой характеристикой задается, имеется ли у врага броня. Для этой и пяти следующих характеристик: 1 — да, 0 — нет.
    bAwareOfPlayerTargeting — параметр определяет, будет ли оппонент уходить в сторону, когда вы в него целитесь, дабы попытаться увернуться от вашего выстрела.
    bShootSmartRocketsForward — умение стрелять.
    bSleepOnSpawn — пассивность героя после “рождения”. Если поставить сюда единицу, указанный противник, даже еще не увидев вас, будет предпринимать какие-то действия (скажем, исследовать местность на наличие игрока или просто ходить взад-вперед), а не просто стоять. Советую поставить 1 всем персонажам, после чего их поведение будет выглядеть более естественным и осмысленным.
    bTrackable — данная характеристика определяет, оставляет ли враг за собой следы, по которым вы можете его затем выследить.
    commrange — максимальное расстояние, на котором может располагаться подкрепление, которое в состоянии вызвать данный оппонент (если, конечно, ему есть, кого вызывать).
    cohesion — степень сотрудничества героя со своими напарниками. Враги с высоким значением параметра (выше 5) стараются держаться вместе и атаковать неприятелей всей группой, те же, что имеют здесь число пониже, предпочитают действовать по одиночке.
    dropArmor — броня, которую роняет убитый враг и которую вы можете затем подобрать. Здесь требуется указать число единиц брони, которое вы при этом получите. Если персонаж не носит брони или не теряет ее при смерти, здесь стоит ноль.
    equipDropPack — оружие, которое роняет поверженный враг. Если он не вооружен (или просто ничего не теряет), здесь прописывается значение “none”, “0” или просто пустые кавычки. То же — в случае со следующим параметром.
    equipEquipment — вооружение врага. Здесь вы должны указать краткое название оружия. Приведу наименования основных орудий убийства: shotgun — ружье, M4 — штурмовая винтовка M4, M249 — пулемет M249, Falcon — пистолет Falcon .357, Mp5 — автомат MP5, RL — ракетница, OICW — автоматическая винтовка OICW, SniperRifle — снайперская винтовка, P90 — автомат P90, AG36 — автоматическая винтовка AG36. В файлах мутантов вы можете также обнаружить еще два значения данного атрибута — MutantMG и MutantShotgun, соответствующих слегка модифицированным (мутантским) версиям стандартных орудий убийства: в первом случае — пулемета, во втором — шотгана. Чтобы присвоить персонажу несколько видов вооружения, перечислите их названия через запятую.
    eye_height — поле зрения соперника по вертикали.
    fDamageMultiplier — умножитель урона, наносимого данным врагом. Важный атрибут, определяющий силу субъекта.
    fileModel — модель врага.
    fMeleeDamage — сила атаки при использовании оружия ближнего боя (равна количеству отнятых за один удар “жизней” у соперника данного персонажа).
    fMeleeDistance — расстояние, на котором вас может достать неприятель, используя оружие ближнего боя.
    forward_speed — общая скорость передвижения субъекта.
    fPersistence — выносливость. Противники, наделенные этой полезной способностью, не теряют своих атакующих качеств, даже будучи тяжело раненными.
    horizontal_fov — поле зрения соперника по горизонтали.
    max_health — здоровье.
    ReinforcePoint — местность, где располагается подкрепление, которое может вызвать этот соперник, находясь от нее не дальше, чем указано в параметре commrange. Разработчики игры используют здесь только два значения: camp_reinforce — близлежащий лагерь врагов, none — отсутствие возможности призывать на помощь своих сотоварищей.
    responsiveness — быстрота реагирования врагом на ваши действия. Противник с высоким значением этого показателя способен, в частности, уворачиваться от ракет, пущенных в него с порядочного расстояния, и моментально менять свое месторасположение, если вы кидаете туда гранату.
    SoundPack — тип голоса.
    Далее следует ряд характеристик, присущих лишь наемникам.
    bHasShield — наличие щита у наемника (1 — есть, 0 — нет).
    bInvulnerable — неуязвимость. Этой способностью не наделен ни один враг в игре. Поставив же некоторым видам неприятелей “единицу”, вы можете значительно усложнить прохождение игры.
    bSmartMelee — умение драться руками или ногами (1 — имеется, 0 — нет).
    Следующие два параметра присутствуют только в файлах мутантов.
    bSingleMeleeKillAI — возможность убийства этим врагом игрока с первого удара (параметр наличествует только в файлах мутантов). В финальной версии игры ни одна тварь не наделена этой способностью. Опытные мастера игры в Far Cry, прошедшие игру на самом высоком уровне сложности, вполне могут поставить сюда единичку для некоторых монстров, тем самым существенно усложнив игру.
    fJumpAngle — угол прыжка мутанта.
    gravity_multiplier — умножитель гравитации для данного соперника.
    Наряду с блоками PropertiesInstance и Properties в любом lua-файле, посвященном тому или иному персонажу, имеется раздел PhysParams, наполненный физическими параметрами субъекта. Нас способны заинтересовать лишь два из них — mass (вес персонажа) и height (рост). От веса героя, в частности, зависит его прыгучесть.
    Далее в большинстве подобных файлов следует блок DeadBodyParams, насыщенный атрибутами трупа данного персонажа, а за ним — раздел Ammo. В последнем же находится ряд атрибутов, каждый из которых задает количество патронов (или гранат), которое герой имеет к тому или иному оружию: Pistol — патроны к пистолету, Assault — патроны к винтовкам и автоматам, Sniper — к снайперской винтовке, Minigun — пулемету, Shotgun — ружью, MortarShells — снаряды для мортиры, Grenades — гранаты, HandGrenades — ручные гранаты, Rocket — ракеты для ракетницы.

    Скорость — не новость
    В подразделе AniRefSpeeds блока Properties вы найдете показатели, определяющие скорость передвижения персонажа в различных состояниях и положениях. Вот так выглядит список параметров.
    CrouchBack — скорость, с которой герой пятится в приседе (для краткости будем называть далее каждый параметр по положению или состоянию, для которого он определяет быстроту передвижения противника).
    CrouchFwd — передвижение врага в приседе.
    CrouchSide — движение вбок в приседе (стрейф на корточках).
    RunFwd — обычный бег.
    RunBack — враг пятится на бегу. У наемников указанное здесь число, как правило, равно значению предыдущего атрибута, что несколько нелогично: ведь не может же человек также быстро пятиться на бегу, как и бежать вперед. Так что рекомендую немного понизить значение этого атрибута у врагов-людей.
    RunSide — бег вбок (стрейф на бегу).
    WalkBack — персонаж пятится.
    WalkFwd — обычная ходьба.
    WalkRelaxedBack — персонаж пятится, находясь в расслабленном состоянии (расслабленное состояние — медленный шаг, которым ходят враги до того, как заметят главного героя).
    WalkRelaxedFwd — обычная ходьба в расслабленном состоянии.
    WalkRelaxedSide — ходьба вбок (стрейф) в расслабленном состоянии.
    WalkSide — ходьба вбок (обычный стрейф).
    У некоторых неприятелей значения характеристик WalkFwd, WalkFwd, WalkSide и соответствующих им параметров приседа равны, что представляется мне несколько нелогичным. Поступаем с параметрами так же, как с показателем RunBack.
    Заключительный подраздел — speed_scales — схож по своему назначению с предыдущим и хранит в себе параметры, которые являются умножителями быстроты передвижения неприятеля для различных его состояний и положений.
    crouch — умножитель скорости передвижения в приседе.
    prone — умножитель скорости передвижения ползком.
    rrun — то же самое для бега в расслабленном состоянии.
    run — для бега.
    rwalk — для ходьбы в расслабленном состоянии.

    Враг на колесах
    В файлах, соответствующих транспортным средствам (а это, напомню, — cargochopper.lua, gunship.lua и HeliCommon.lua), помимо большинства перечисленных выше характеристик вы найдете следующие настройки.
    ExplosionEffect — эффект взрыва для данного средства передвижения.
    passengerLimit — максимальное число пассажиров, которое может перевозить транспортное средство.
    damage — урон, наносимый одним выстрелом из пушки данного вида транспорта.
    bExploded — показатель определяет, будет ли это средство передвижения взрываться при потере всех “жизней” (1 — да, 0 — нет).
    explosionImpulse — сила толчка при взрыве транспортного средства.
    dropDelay — задержка перед высадкой транспортом десантников. Здесь нужно сказать, что все параметры, связанные со временем, измеряются в секундах.
    Следующие пять атрибутов присутствуют только в файлах вертолетов — cargochopper.lua и HeliCommon.lua.
    troopersNumber — количество парашютистов, находящихся на борту вертолета.
    rotorSpeed — начальная скорость вращения несущего винта вертолета.
    rotorSpeedMax — максимальная скорость вращения несущего винта.
    rotorSpeedUp — ускорение вращения несущего винта.
    В разделе Properties всех трех транспортных средств имеется следующий набор параметров.
    fStartDelay — время, которое транспортное средство остается пассивным после того, как в его поле зрения попадет игрок.
    bIgnoreCollisions — данный атрибут определяет, будет ли этот вид транспорта получать повреждение при столкновении с каким-либо тяжелым объектом (1 — да, 0 — нет).
    fDmgScaleBullet — умножитель урона от пуль, наносимого данному средству передвижения.
    fDmgScaleExplosion — умножитель повреждения от взрывов, получаемого этим видом транспорта.
    max_damageattack — максимальный урон, получив который, транспортное средство будет пытаться скрыться от игрока.
    fileGunModel — модель пушки, которой оборудовано средство передвижения.
    fAttackDistanse — максимальное расстояние, на котором средство передвижения может начать стрельбу по игроку.
    Далее перечислены характеристики, которыми наделены только вертолеты.
    fFlightAltitude — высота полета, которой старается придерживаться вертолет.
    fFlightAltitudeMin — минимальная высота, на которой может летать вертолет.
    fAttackAltitude — максимальная высота, на которой вертолет может начать стрельбу по игроку.
    fBendRadius — радиус вокруг вертолета, на котором деревья будут сгибаться под действием потока воздуха, который создает летящий на низкой высоте вертолет. Значение должно находиться в промежутке от 0 до 50.
    fBendForce — сила эффекта сгибания деревьев (должна быть больше 0, но меньше 1). При нуле эффект вообще отсутствует. Можно слегка поднять для повышения зрелищности полета.
    dropAltitude — высота, на которой вертолет высаживает парашютистов.
    В блоке Properties вы также найдете подразделы GunnerParams и ExplosionParams. В первом из них собраны характеристики пушки, которой оборудован данный вид транспорта (они знакомы нам по lua-файлам игровых персонажей), тогда как во втором находятся параметры взрыва транспортного средства:
    nDamage — ущерб от взрыва.
    fRadiusMin — минимальный радиус взрыва.
    fRadiusMax — максимальный радиус взрыва.
    fRadius — обычный радиус. Обратите внимание на то, что в предрелизной версии игры все три средства передвижения имели гораздо больший диапазон возможной величины взрыва. Это отражено в расположенных напротив каждого из этих параметров комментариев со старыми значениями. По-моему, весьма любопытно посмотреть на то, как взрывались вертолеты и корабль ранее — к тому же старый вариант выглядит куда эффектней.
    Создайте себе действительно достойных соперников — метких, быстрых, энергичных, здоровых, сильных, всеслышащих и всевидящих. Окутайте врагов в плотную броню, выдайте им мощное оружие и побольше патронов. Не забудьте также поднять скорость и силу атаки вражеских транспортных средств. В результате вы получите противников, мало чем уступающих живым игрокам. Воевать с такими компьютерными врагами куда сложнее, но и намного увлекательнее.
    Чтобы дополнительно усилить врагов, рекомендуется вооружить их несколькими стволами (в оригинале ни один из неприятелей не имеет в своем распоряжении более одного орудия убийства), а также вручить им оружие ближнего боя (например, мачете), “расширяя” значение характеристики equipEquipment. Теперь у ваших противников появится свобода в выборе вооружения, чем они непременно воспользуются в трудной ситуации. Кроме того, вы можете здорово модифицировать (в том числе и улучшить) оружие врагов, о чем мы поговорим в следующей статье, посвященной вскрытию игры.

    * * *
    Мы переозвучили игру, перерисовали интерфейс, научились заменять оригинальную музыку любыми композициями (по секрету — игра отлично идет под Rhapsody). Подправив некоторые скриптовые параметры, мы получили умных, дьявольски хитрых, коварных и до самых коренных зубов вооруженных врагов. Играть стало сложнее. Обратите самое пристальное внимание на то, что совсем не обязательно последовательно изменять параметры так, как описано в материале. Можно выбрать только несколько и изменить геймплей незначительно. Например, повысить меткость врагов и увеличить радиус взрыва. На это потребуется от силы 5 минут, а играть станет значительно интересней. В следующей статье, посвященной вскрытию Far Cry, которая будет опубликована в одном из ближайших номеров “Мании”, мы полностью переделаем оружие, подправим характеристики различных игровых объектов (и даже создадим новые) и... научим различные виды оружия стрелять так, как они никогда не стреляли...


«Статья "Все цвета Far Cry"

публикуется с разрешения редакции журнала «Игромания». Автор: Андрей Верещагин».