03 ноября 2007
Обновлено 17.05.2023

ТибериУМНЫЙ AI

ТибериУМНЫЙ AI - изображение обложка

Искусственный интеллект — самое слабое место в Command & Conquer 3: Tiberium Wars. AI в игре, мягко говоря, не самый удачный. Это в первую очередь касается наших виртуальных оппонентов. Скажем, если вы сумели как следует развиться и обзавестись большой сбалансированной армией, то успех в рядовой миссии вам практически гарантирован. Скорее всего, вы очень быстро сметете оборону противника. В подавляющем большинстве уровней компьютер опасен игроку лишь на ранних стадиях развития.

Юниты ведут себя порой совершенно неадекватно. То охраняющие базу солдаты устремляются в ненужную погоню за врагом, то не могут этого самого врага вблизи разглядеть. Все эти недоработки, мелкие и не очень, мы сегодня и будем устранять. Конечно, мы не перекроим весь игровой AI, но внесем ряд точечных изменений, которые добавят осмысленности действиям компьютера.

Бедный, богатый, злой

Все, что нужно, вы найдете в ini -файлах игры из папки < Каталог игры>\Alldata\data\ini. Главным образом нас интересует файл aidata.ini (прячется в подкаталоге \default ), посвященный AI, и в меньшей степени — его собрат gamedata.ini , содержащий общие параметры геймплея. Оба редактируются в стандартном «Блокноте».

Все параметры в файле aidata.ini относятся к искусственному интеллекту, но не все характеризуют ваших компьютерных соперников. Некоторые отвечают за поведение определенных категорий юнитов независимо от того, принадлежат те игроку или компьютеру. Эти редкие атрибуты тоже по-своему интересны, и о них мы также расскажем. В целом же произвести апгрейд AI нам помогут следующие показатели.

StructureSeconds — минимальный временной интервал (в секундах), через который компьютер делает попытку возвести новое сооружение (отсчитывается после строительства предыдущего строения). Новички могут замедлить компьютеру развитие, немного повысив значение этой (до 5-8 ) и следующих характеристик (до 20-25 ).

TeamSeconds — минимальное время (тоже в секундах), через которое компьютер пытается произвести нового юнита.

Wealthy — минимальное количество тибериума, при котором компьютерный игрок считает себя богатым.

Poor — максимальное количество тибериума, при котором компьютер считает себя бедным.

StructuresWealthyRate — быстрота застройки для богатого состояния компьютерного игрока (в данном случае имеется в виду не скорость отдельных строительных процессов, а величина интервала между окончанием постройки одного здания и началом возведения следующего).

StructuresPoorRate — скорость застройки для «бедного» компьютера.

TeamsWealthyRate — скорость производства юнитов для «богатого» компьютера (опять-таки речь идет о величине промежутка между двумя заказами).

TeamsPoorRate — аналогично для «бедного».

GuardInnerModifierAI — коэффициент величины поля зрения, которое имеют обороняющиеся юниты (которым дана соответствующая команда) компьютера в момент, когда они агрессивно атакуют силы игрока.

GuardOuterModifierAI — множитель величины поля зрения, которое имеют обороняющие базу юниты компьютера в момент преследования юнитов игрока.

GuardInnerModifierHuman — аналог параметра GuardInnerModifierAI (только здесь ситуация обратная: игрок защищает базу от нашествия компьютера).

GuardOuterModifierHuman — обратный аналог показателя GuardOuterModifierAI. Обратите внимание на то, что значения этой и предыдущих характеристик существенно выше, чем у их антиподов, вследствие чего обороняющиеся юниты игрока получают ощутимое преимущество в зрении по сравнению с их оппонентами под управлением AI.

GuardChaseUnitsDuration — время (в миллисекундах), которое обороняющийся юнит преследует нападавших. По истечении этого срока он это неблагодарное дело бросает. Параметр, кстати, относится не только к юнитам компьютера, но и к вашим подчиненным, которым вы определили состояние Guard stance.

GuardEnemyScanRate — периодичность (в миллисекундах) сканирования обороняющимся юнитом местности на наличие врагов в ситуации, когда боец не двигается. Учтите, что этот атрибут относится не только к компьютеру.

GuardEnemyReturnScanRate — периодичность сканирования местности на наличие новых врагов, когда воин гонится за неприятелем.

AlertRangeModifier — коэффициент дальности обзора юнита, применяющийся, когда юнит находится в состоянии боевой готовности и осматривает местность на наличие противников. Обратите внимание, что этот и следующий атрибут относятся только к силам компьютера.

AggressiveRangeModifier — коэффициент дальности обзора воина, когда он находится в агрессивном состоянии (которое он обретает после получения соответствующей команды) и сканирует местность на наличие неприятелей.

AttackPriorityDistanceModifier — дистанция, на которой цель становится менее приоритетной для атакующего юнита.

RepulsedDistance — дополнительное расстояние, на которое напуганный мирный юнит убегает от захватчиков (на расстояние, равное своему полю зрения, он убежит в любом случае). Числа от 0 до 50 сделают граждан спокойными и бесстрашными, а от 150 до 200 превратят их в паникеров.

Регуляторы сложности

Несколько весьма любопытных параметров скрыто в файле gamedata.ini. Все приведенные ниже атрибуты измеряются в процентах. Первые три относятся только к сингловой части игры:

EASY_AI_SINGLE_PLAYER_DAMAGE_MULT —множитель урона, наносимого войсками компьютера на легком уровне сложности.

MEDIUM_AI_SINGLE_PLAYER_DAMAGE_MULT — урон на среднем уровне сложности.

HARD_AI_SINGLE_PLAYER_DAMAGE_MULT — урон на высоком уровне сложности.

Настройки EASY_AI_MULTI_PLAYER_DAMAGE_MULT , MEDIUM_AI_MULTI_PLAYER_DAMAGE_MULT , HARD_AI_MULTI_PLAYER_DAMAGE_MULT являются аналогами трех предыдущих параметров, только используются для мультиплеера.

Еще три показателя влияют только на однопользовательский режим:

HumanSoloPlayerHealthBonus_Easy — живучесть ваших юнитов на легком уровне сложности.

HumanSoloPlayerHealthBonus_Normal — выживаемость на среднем уровне.

HumanSoloPlayerHealthBonus_Hard — выживаемость на высоком.

Обратите внимание, что значения шести последних показателей равны ста процентам. Это говорит о том, что, во-первых, изменение уровня сложности на мультиплеере сказывается слабо, во-вторых, повышение уровня сложности в любом режиме игры не делает вас слабее. Если последнее в принципе разумно, то многопользовательским атрибутам логично определить соответственно следующие числа: 50 , 75 и 100.

Изменение значений названных выше характеристик — самый быстрый и верный способ регулировки сложности игры до оптимального для вас уровня. Понятно, что повышение первых шести показателей приведет к усложнению, а последних трех — к облегчению игры.

Пересадка мозгов

Дабы сделать компьютерных игроков более умными и умелыми, внесем в файл aidata.ini следующие изменения. Первым делом присвоим характеристике TeamSeconds значение 5 , StructureSeconds1 , TeamsWealthyRate и StructuresWealthyRate2.5 , а StructuresPoorRate и TeamsPoorRate0.8. Тем самым мы поднимем производительность виртуального оппонента. Однако при таком положении дел ему будет сильно не хватать ресурсов, особенно на первых порах. Исправить это можно, увеличив значения чисел, стоящих рядом с атрибутами Wealthy и Poor , соответственно до 10000 и 3000.

В оригинале разница между порогами бедности и состоятельности не столь велика. У нас же этот разрыв получился куда более существенным. Теперь, скопив 10-тысячное состояние, компьютер будет штамповать здания и юниты практически без остановок — насколько ему позволяют ресурсы. Такому сопернику под силу в кратчайшие сроки собрать большую и грозную армию, не говоря уже о том, чтобы как следует отстроиться. Так что крайне опасно давать ему беспрепятственно процветать.

А вот бедный виртуальный игрок в нашем моде производить будет лишь немногим больше, чем его коллега из исходного варианта игры. Оно и понятно — когда в карманах пусто, и выбора-то особого нет, как копить тибериум, строить приходится лишь самое необходимое и способствующее накоплению.

Чтобы стоящие на страже войска компьютера стали более зоркими (в любом из возможных состояний), повысьте значения атрибутам GuardInnerModifierAI , GuardOuterModifierAI , AlertRangeModifier и AggressiveRangeModifier , соответственно, до 1.3 , 1.5 , 1.4 и 1.7. Такая регулировка первых двух настроек хотя бы немного сгладит имеющееся неравенство, при котором игрок находится в привилегированном положении. Если вы опытный и умелый геймер, то непременно должны находиться с соперником в равных условиях.

Не мешает также сделать обороняющихся (причем как ваших, так и компьютера) более бдительными, понизив числа, соответствующие параметрам GuardEnemyScanRate и GuardEnemyReturnScanRate , до 300 в первом случае и до 750 во втором.

Советуем понизить значение атрибута GuardChaseUnitsDuration до 10000. Ведь в исходном варианте юниты под управлением как живого игрока, так и виртуального, легко заманить в ловушку: защитники порой слишком увлекаются погоней за появившимся врагом. В результате не составляет труда увести их за собой далеко за пределы базы. А там может быть либо засада, либо… пустота (основные силы атакующего игрока в это время смогут почти беспрепятственно вторгнуться во владения его соперника). Нынешний расклад хорош тем, что все же позволяет подлавливать противника подобным образом, но отныне для этого вам придется приложить максимум усилий и изобретательности.

* * *

Описанных преобразований достаточно, чтобы AI вел сражение значительно логичней и рациональней, чем прежде. Остановить его под силу только искушенному в боях геймеру. Впрочем, если вы к таковым не относитесь и даже, наоборот, испытываете трудности в борьбе с виртуальным врагом, можете на первых порах ослабить компьютерный интеллект, регулируя соответствующие настройки.

Обратите внимание, что произведенные преобразования отразились не только на AI вашего противника, но и отчасти на интеллекте ваших подопечных. При обороне они отныне действуют куда более осмысленно и внимательно.

Комментарии
Чтобы оставить комментарий, Войдите или Зарегистрируйтесь