в данной статье расматривается как можно изменить ум врага и сложность игры
Игра базируется на движке Source, том самом, на котором сделан Half-Life 2. Поэтому неудивительно, что в обеих играх главные игровые настройки прописаны в одних и тех же конфигурационных файлах (тех, что с расширением cfg). Первым делом мы обратимся к тем, которые лежат в папке <Каталог игры>\scripts, а точнее — к mm_game_settings.txt. Здесь вы найдете основные параметры геймплея, в том числе и характеристики AI в одноименном разделе. Для тех, кто не вскрывал с нами HL2, сообщаем, что имя блока стоит сразу перед его содержимым, а само содержимое заключено в фигурные скобки. Отправляйтесь в названный раздел и приступайте к правке.
Первые два параметра в этом блоке — NPCFieldOfViewRatioWhenStealth и NPCRangeOfViewRatioWhenStealth — задают широту поля зрения игровых персонажей. Пусть вас не смущает присутствие в имени показателей сокращения NPC — в файлах игр на движке Source так обозначается не только мирное население, но и враги главного героя. Чтобы противники стали более зоркими, пропишите этим характеристикам, соответственно, значения 0.6 и 0.8.
Чуть ниже расположились две настройки, определяющие максимальное расстояние, на котором враги могут услышать крики друг друга (чтобы в случае необходимости прибыть на помощь своим товарищам). Call4helpdist относится к обычной обстановке, ouchcall4helpdist — к предсмертным воплям монстров. Исправьте значение первой на 800, второй — на 900. Ваши противники после этого не только станут лучше слышать, но и научатся издавать пронзительный предсмертный крик, на который сбегаются твари чуть ли не со всей округи.
Следующие четыре атрибута определяют, насколько быстро враги реагируют на сигналы, поступающие по различным, скажем так, путям. За слуховой путь отвечает параметр delayhear и DelayNoHearInSearch (второй атрибут работает, когда противник находится в режиме поиска), за зрительный — delaysee и delaysee_stealth (в последнем случае подразумевается, что игрок подкрадывается к оппоненту). Первому показателю в этом списке задайте значение 0, второму — 1, четвертому — 4. Ваши соперники станут мгновенно реагировать на происходящее. Никакой заторможенности в их реакции нет теперь и в помине.
Что касается показателей TimeToRevertToAlertLevelQuietWhenInAlertLevelAware d и TimeToRevertToAlertLevelAwaredWhenInAlertLevelVery Awared, то их значения следует повысить, соответственно, до 15 и 10. Первый задает время (здесь и далее — в секундах), которое враг, поднявший тревогу, ждет, прежде чем дать отбой (если, конечно, не приметит в этот период ничего подозрительного). Второй — время, которое ваш крайне обеспокоенный неприятель выжидает в режиме усиленной тревоги, прежде чем, немного успокоившись, перейти к обычной. Сделанные преобразования позволят слегка улучшить противникам память, дабы они не забывали об опасности слишком быстро.
Враги в нашем моде атакуют более решительно и неожиданно.
Еще одна характеристика из текущего раздела — SquadAwarnessDist — задает расстояние, на котором ваши враги могут передавать друг другу информацию о местонахождении игрока. Рекомендуем увеличить до 600, тогда твари будут лучше взаимодействовать между собой и грамотно кооперироваться.
Атрибуты HelpWhenCaughtByTelekinesisMinTime и HelpWhenCaughtByTelekinesisMaxTime определяют минимальную и максимальную задержку перед тем, как существо успеет крикнуть «На помощь!», едва попав под действие телекинеза. Первому советуем поставить значение 2, второму — 5.
Нелишним будет понизить число, соответствующее настройке mul_damages_Npc_Not_alerted (множитель урона для еще не поднявшего тревогу персонажа), до 2. После этого неприятели всегда будут готовы к вашей атаке. Одной лишь внезапностью теперь мало кого возьмешь.
Параметрам SearchRadius и SearchRadiusAfterAttack, задающим радиус области патрулирования монстра (во втором случае, подвергшегося нападению), лучше выставить значения 700 и 150 соответственно. Это изменение немного расширит маршрут передвижения ваших оппонентов.
Еще ниже вы обнаружите характеристику MaxCall4HelpNPCAgainstPlayer, обозначающую максимальное число воплей, которое издаст враг, заметив игрока. Действительно, почему большинство противников просят о помощи только три раза? Они, что, потом язык проглатывают? Давайте поднимем прописанное здесь число с 3 до 5-6.
Не менее важна характеристика PlayerParryTimeToBreakIt. Она влияет на тактику ведения боевых действий. Работает следующим образом. Пока игрок блокирует удары (зажав правую кнопку мыши), враг в течение заданного характеристикой времени использует атаку, которая блок не пробивает. Если же вы слишком долго прятались за блоком, то ваш оппонент попытается мощным ударом сокрушить защиту либо перехитрить вас, используя обманные движения. Лучше всего понизить значение данного атрибута до 3, чтобы вас перестали атаковать одними и теми же ударами в начале атаки, а меняли бы тактику уже после трех ударов.
Остановимся на трех атрибутах, задающих увертливость монстров: DodgeDelay — минимальное время между уклонениями от ваших атак, PreventiveDodgeDelay — минимальная задержка между эффективными уходами от ударов, PreventiveDodgeChance — шанс вместо обычного уклонения совершить максимально эффективное. Чтобы противники чаще выполняли этот нехитрый, но очень полезный в бою прием, понизьте значения первых двух параметров до 10-12, а значение третьего повысьте до 0.3-0.5. Тогда у врагов будет больше свободы для маневров, а следовательно — их поведение во время битвы станет непредсказуемым.
Управление сложностью
Комментарием Dynamic difficulty открывается группа из двенадцати атрибутов, непосредственно влияющих на сложность игры. Вот за что отвечают первые три параметра:
DifficultyEasyNpcDmgMul — множитель ущерба, причиняемого игроком врагам и NPC на легком уровне сложности.
DifficultyEasyPlayerDmgMul — множитель урона, наносимого игроку его врагами и NPC на легком уровне сложности.
DifficultyEasyDifficultyMul — общеигровая сложность на легком уровне. Только учтите, что чем меньше значение этого атрибута, тем выше сложность.
Далее следуют еще шесть сходных показателей. Три из них, в имени которых на месте слова Easy стоит Hard, описывают среднюю сложность игры. Еще три, в названии которых вместо слова Easy фигурирует HardCore, относятся к высокой сложности.
Чуть ниже вы найдете еще три параметра, определяющие сложность боев: DifficultyCombatEasy — на легком уровне, DifficultyCombatAverage — на среднем, DifficultyCombatHard — на высоком.
Описанная выше группа атрибутов позволяет вам грамотно распределить сложность, понизив или повысив трудность прохождения игры. Если вы уже опытный геймер, которому вполне по плечу игра даже на наивысшей сложности, логично будет слегка повысить значения большинства характеристик. Попробуйте, скажем, увеличить значения настроек DifficultyHardCoreNpcDmgMul, DifficultyHardCorePlayerDmgMul, DifficultyHardCoreDifficultyMul и DifficultyCombatHard до 0.5-0.6, 1.6-1.7, 0.5-0.6 и 0.6-0.7 соответственно. Ставьте в игре наивысшую сложность и готовьтесь к серьезным испытаниям. Новички же могут, наоборот, чуть облегчить себе жизнь.
Монстры бывают разные...
Пока мы работали лишь с общими характеристиками AI. Разумеется, у каждого вида монстров имеется свой набор параметров. Такие атрибуты вы найдете в файлах с расширением qct, рассортированных по следующим подкаталогам (каждый из них посвящен конкретной разновидности нежити и имеет внутри себя лишь один файл) директории <Папка игры>\mm\models\npc: \bone_dragon (костяной дракон), \cyclope_undead (циклоп), \deathknight (рыцарь смерти), \ghoul (вампир), \goblin (гоблин), \lich (лич), \lich_king (король личей), \menelag (колдун Менелаг), \necroguard (некромант-охранник), \necromancer_lord (лорд некромантов), \orc_chief (орк-предводитель), \undead (мертвяки). В любом из файлов вы встретите следующие настройки:
difficulty — уровень противника (значение характеристики варьируется в промежутке от 0 до 1). Проявляется главным образом в манере поведения врага во время боя. Чем выше число, тем чаще враг атакует.
strength — сила противника.
dexterity — ловкость.
life_regen — скорость регенерации. У воинов, не наделенных этой ценной способностью, здесь стоит ноль.
Пинок в голову отныне не только верный способ столкнуть врага с ног, но и эффективный боевой прием, отнимающий, однако, немало энергии.
AttackCoolMinTime — минимальный временной промежуток между двумя атаками со стороны монстра, если до этого он находился в спокойном состоянии. Уменьшите значение этого и следующего показателя (скажем, в полтора раза), и монстр станет вести бой в более быстром темпе.
AttackBersekerMinTime — минимальный интервал между двумя атаками в исполнении противника, обезумевшего от ярости.
AttackBersekerMaxTime — максимальный интервал.
cowardice — трусость (в процентах). При высоком значении атрибута противник будет всячески избегать битвы с игроком, если тот вооружен. Многие враги оказываются распоследними трусами — об этом свидетельствует указанное здесь число 100. Чтобы как-то повлиять на ситуацию, достаточно понизить значение атрибута до отметки 50-75. Трусам нет места в нашей модификации!
arrow_impal — данный атрибут определяет, может ли Сареф проткнуть монстра стрелой (1 — да, 0 — нет).
charmable — определяет, действует ли на персонажа заклинание «Чары» (Charm), временно превращающее вражину в союзника.
Одолеть циклопа и раньше-то было непросто, а теперь практически невозможно. Но есть у него и ахиллесова пята. Надо только ее найти.
maxsightdistancequiet — максимальная дальность взгляда твари в спокойном состоянии.
maxsightdistancealerted — то же самое для поднявшего тревогу врага.
fieldofviewquiet — угол обзора для спокойного состояния.
fieldofviewalerted — угол обзора для тревожного состояния.
TimeKnockedDownByPhysics — время, на протяжении которого враг находится в нокдауне после сильного удара любым предметом. Стандартное значение для этого параметра — 3, это дает главному герою довольно много времени на добивание жертвы. А вот если вы пропишите значение 2, от вас потребуется очень быстрая реакция — времени на раздумья после точного попадания у вас не будет вовсе.
max_jump_rise — высота прыжка.
max_jump_drop — максимальная высота, с которой может безболезненно падать монстр.
max_jump_dist — длина прыжка.
mana_drainable — здесь определяется, может ли игрок красть ману у данного персонажа (1 — да, 0 — нет).
npc_health — здоровье.
ChanceToFreeze — шанс заморозить врага с помощью заклинания «Заморозка». Минимальное значение (при нем врага невозможно заморозить) — 0, максимальное — 1.
Изменяя значения данных параметров, вы можете влиять на силу и способности своих недругов. Совсем несложно управлять скоростно-боевыми характеристиками врагов, их живучестью и даже такими качествами, как ловкость, увертливость, зоркость и агрессивность. Умелые игроки могут преспокойно повышать значения соответствующих настроек.NPC
В разделе ai вы найдете атрибуты, относящиеся к NPC. С их помощью вы можете изменить их поведение.
Spontaneousalerted_min_time — минимальное время, в течение которого взволнованный персонаж (то есть участвующий в данный момент в сражении или находящийся в режиме поиска), будь то NPC или ваш враг, болтает с дружественным по отношению к нему героем.
Spontaneousspeech_min_time — минимальное время, в течение которого разглагольствует персонаж, находящийся в обычном состоянии.
Spontaneousspeech_max_time — максимальное время, которое персонаж способен говорить.
Spontaneousspeech_max_dist — максимальная дистанция, на которой NPC (или ваш недруг) способен заводить беседу со своим товарищем (в том числе с вами, если речь идет о мирных гражданах).
Эти четыре характеристики управляют разговорчивостью жителей игрового мира. В оригинале они, прямо скажем, немногословны. Если вы хотите исправить эту ситуацию, поднимите значения всех этих показателей. Можно сделать так, чтобы персонажи практически не закрывали рот, став настоящими демагогами. Правда, их речи в любом случае не будут отличаться особой изысканностью, а вот осмысленностью — вполне.
NbFriendPlayerAttackBeforHateHim — число атак, после которых нейтральный или дружественный персонаж начинает относиться к главному герою негативно. Изначально в игре все персонажи становятся врагами после первого же удара.
Сареф
В отдельный блок — player — в файле mm_game_settings.txt вынесены параметры игрока. Не исключено, что вследствие всех вышеприведенных преобразований игра окажется для вас непомерно трудной. В этом случае логично немного усилить главного героя, Сарефа. Повысить его характеристики можно, подправляя следующие показатели:
poison_resistance — защищенность от яда.
kick_damage — урон от пинка. Если вы как следует проапгрейдили неприятелей, нелишним будет увеличить и стоящее здесь значение до 3-5.
stamina_kick_npc — расход энергии (stamina), когда игрок дает пинка противнику.
stamina_kick_all — расход энергии, когда Сареф пинает предмет обстановки. Если усиливать пинок, логично также слегка повысить затраты энергии на него. Параметру stamina_kick_npc нужно задать значение в промежутке между 4 и 6, а stamina_kick_all — между 2 и 3.
PlayerTakeDist — максимальное расстояние, с которого Сареф может брать предмет в руки.
PlayerTelekinesisDist — то же самое для заклинания телекинеза.
CloseArrowDist — максимальная дистанция, до которой считается, что выстрел произведен с близкого расстояния (то есть включается действие следующего атрибута), а следовательно, он более опасен для жертвы.
CloseArrowDmgScale — множитель урона для выстрела с короткой дистанции. Изначально здесь стоит единица, то есть выстрел вблизи полностью идентичен выстрелу с большего расстояния. Однако это, согласитесь, не совсем правильно. Лучше поставить сюда число в районе 1.2-1.5.
Работа над модом окончена. В нашем дополнении монстры дерутся и двигаются очень быстро, лучше слышат, лучше видят друг друга и надвигающуюся опасность. Умные, крепкие, быстрые, бесстрашные, непредсказуемые в бою, в меру изобретательные, ловкие и увертливые, они способны доставить серьезную конкуренцию даже самому искусному геймеру.
Кроме того, множество дополнительных параметров позволит вам подобрать себе соперников, наиболее точно соответствующих уровню вашего мастерства и игровому стажу. Не забудьте и об NPC. Пара несложных преобразований — и вот они уже способны выдавать длиннейшие тирады. После всех этих изменений обитателей игрового мира будет просто не узнать.
P.S статья взята из игромании