В бою иногда просто везёт. И когда удача на твоей стороне, пули пролетают мимо, а враг ведёт себя глупо, подставляясь или позволяя просчитать свои действия наперёд. Но крайне опрометчиво всегда на это рассчитывать. А также не ожидать ответных подлянок со стороны врага, который тоже следит за действиями и пытается нащупать слабое место. И ударить в него.
В игре за поведение врагов отвечает тактический ИИ и ключевые события, по которым враги начинают «набигать на корованы» (sic): активизируются в наступлении, выпрыгивают из засады или просто-напросто кидают гранату туда, где наши бойцы слишком скучковались. Ключевых событий много, и сработать они могут по целому спектру состояний, как и в жизни. Когда мы добавляем новые возможности и свойства бойцов, это тоже порождает ветки новых событий. Не все они ещё обрабатываются в игре, сталкивая лавину изменений тактики, но постепенно мы добавляем всё новые и новые варианты.
Например, «набигания» происходят по-разному. В зависимости от обстоятельств враги могут подбираться рассредоточено, затаиваясь и не выдавая своего присутствия. Но если что-то произошло – наши бойцы подобрались опасно близко к стратегически важному объекту, или кто-то из отряда откололся от коллектива и забрел слишком далеко – тут-то враги и навалятся скопом!
Чтобы закончить эту миссию, отряду нужно под пулями отступить к выходу и покинуть базу. Так что продумать пути отступления хорошо бы заранее. Кстати, если не зачистить некоторые помещения от врагов, сконценрировавшись на главной задаче – стратегическом объекте, тревогу услышат и они. И бегом двинутся проверять. Так что когда начнется жара, можно внезапно получить огонь в спину или перерезанные пути отступления.
Если в миссии участвуют не только наши бойцы vs враги, а еще и союзники, да и гражданские путаются под ногами, дело становится ещё сложней. В некоторых случаях, например, даже при выполнении основной цели миссии закончить её успешно не получится, если не прийти на помощь попавшим в окружение союзникам. Путь отхода откроется лишь тогда, когда окруженные бойцы выбрались – своих не бросаем.
Ключевых событий, влияющих на общую ситуацию, с появлением союзников и гражданских становится больше, а поведение ИИ должно становиться гибче. Его модифицируют разные триггеры: оборона важных объектов, вроде аппаратуры связи на аэродроме, граната, брошенная в диспетчерскую, защита командования, даже душевное состояние – падение смелости при гибели соратника рядом.
Конечно, мы стремимся сделать поведение и реакции врага естественнее: с коварством и смекалкой!
Самым очевидным поводом насторожиться, как и в жизни, являются звуки. Если начинается стрельба, то реакция «А что здесь, собственно, происходит?» со стороны засевших по схронам неизбежна, как восход солнца – враг наверняка проверит нашумевшую область карты. Поэтому красться, приседать и по возможности сливаться с ландшафтом – полезный modus operandi. Одно но: если присевшего бойца таки засекли, побег из-под огня будет чуточку медленнее – сначала нужно распрямиться, а потом бежать.
Если бросить гранату, то враги постараются быстренько убраться из радиуса поражения. Но примерное место, откуда был бросок, они скоро определят! Это не сулит бойцу ничего хорошего, и лучше или скрыться, или открыть огонь на подавление. В таком случае враги попытаются покинуть зону обстрела. Те же из них, которые были вне опасной зоны, как правило, будут её избегать. «Жить всем хочется» – как философски высказался по этому поводу Струна. Также при звуках стрельбы враги могут затаиваться, чтобы подстеречь наших бойцов, подпустить их поближе и обрушить на них шквальный огонь.
Тихие звуки обычно приводят к тому, что враги поворачиваются в сторону источника шума, но прочесывать ту часть карты не спешат.
Ранение вражеского бойца – тоже ключевое событие. Его поведение модифицируется: если ИИ посчитает, что шансы на победу хорошие, то он будет сражаться. Если же шансы не очень – ИИ постарается вывести его из прямого столкновения и уберечь от дальнейших травм.
Перебирая и обсуждая возможные ситуации, мы собрали целый комплекс внутренних и внешних событий, которые должны влиять на поведение ИИ и заставлять его модифицировать свою тактику. Пока что не все из них срабатывают и меняют поведение, но это – дело наживное. Сборка и тестирование требует времени, так что продолжаем работу.