В этой статье я расскажу о трёх управляемых ИИ неигровых персонажах, работающих с игроком в офлайновых миссиях: Холте, Мидасе и Уивере. Эта команда призраков должна иметь возможность отвечать на команды игрока и реагировать на окружающий его мир, в то же время поддерживать создаваемую игрой иллюзию, в то время, как вы тайно уничтожаете вражеские командные посты или идёте в лоб на боевом вертолёте, разнося всё на куски. Это интересная задача дизайна. Игра стала одним из выдающихся современных примеров того, как ИИ жульничает не для того, чтобы выполнять то, чего от него ожидают, а потому что мы, игроки, не можем смириться со своим провалом.
Управляемые искусственным интеллектом напарники в серии игр Ghost Recon должны поддерживать игрока и создавать ощущение скрытных оперативников, проникающих в здания и уничтожающих силы противника. В том числе они должны указывать игроку цели, выполнять синхронизированные убийства нескольких врагов по команде, а также постоять за себя, когда становится жарко. Ghost Recon Wildlands берёт все эти элементы и значительно увеличивает их масштаб, что представляет серьёзную проблему для гейм-дизайнеров. В отличие от более старых игр серии, например Ghost Recon: Future Soldier, здесь количество уникальных ситуаций возрастает экспоненциально. Частично это происходит из-за системных элементов геймплея, управляющих погодой, патрулирующими противниками и мятежниками, гражданским населением и многим другим. Игроки могут нападать на лагеря врага под любым углом и использовать при этом множество инструментов. Поэтому системы ИИ для дружественных персонажей должны приспосабливаться, в некоторых случаях игнорировать свои правила, а иногда и попросту жульничать, чтобы поддержать иллюзию, обещаемую Ghost Recon. Теперь для ИИ всех персонажей в Ghost Recon Wildlands используется система деревьев поведений (behaviour tree), при этом дружественный ИИ использует гораздо более сложную систему, чем враги. Сегодня я не буду подробно рассказывать о реализации самих деревьев поведений, а объясню применённые правила дизайна и поддерживающие системы, помогающие в управлении ИИ-напарниками.
ИИ напарников в Wildlands создавался небольшой командой из Ubisoft Montpelier, в философии дизайна которой центром всего поведения дружественных ИИ ставился игрок. Это определяло способ создания и использования данных систем. Эта философия держится на трёх основных столпах.
- Не перетягивать одеяло на себя: напарники поддерживают игрока, не переключая при этом основное внимание на себя.
- Поддерживать там, где это нужно: ИИ призрака должен реагировать на окружения и помогать при необходимости.
- Следовать приказам: делать то, что прикажет игрок, насколько это возможно в текущих обстоятельствах.
Всё это необходимо для выполнения одного правила: игрок должен управлять игровым процессом и не ощущать, что игровые системы делают не то, что он от них хочет. В каждом случае игрок напрямую или косвенно определяет поведение этих ИИ-персонажей. И для поддержания иллюзии при скрытном проходе рядом с врагом, перестрелках или восстановлении игрока, дружественный ИИ постоянно «читерит», и для этого ему нужно множество геймплейных систем, а также определённых уступок со стороны дружественного и вражеского ИИ.
Как подробно рассказано в докладе Матиаса Ролланда на As GameAI North 2017, управление напарниками состоит из трёх геймплейных систем, направляющих ИИ отряда призраков:
- Система Smart Recon: находит интересные предметы и персонажей в локальной близости
- Система Balance of Power: влияет на то, насколько напарники эффективны в бою.
- И обе эти системы связываются в одну большую под названием Overlord: это набор подсистем, определяющий весь список угроз поблизости от игрока и различную полезную информацию, которую напарники могут максимально эффективно использовать в бою.
Все три системы регулярно взаимодействуют с игроком через персонажей напарников и управляют их поведением и действиями в пространстве.
Допустим, я хочу напасть на базу со скриншота выше. Это плотно заполненная локация, в ней есть враги, транспорт, а также, без всяких сомнений, по окрестностям ходят патрули и расставлены охранные посты. Когда я приближаюсь, вступает в дело система Overlord, которая начинает идентифицировать всех врагов примерно в радиусе 100 метров от меня. Она не только отслеживает, насколько они далеко, но и то, находимся ли я и напарники на их линии видимости. Тем временем Холт, Мидас и Уивер скрытно приближаются за мной к базе. Чтобы знать, куда идти, мой персонаж оставляет метки на навигационном меше, чтобы отряд знал, как ему двигаться. Достигнув лагеря, напарники получают инструкции от Overlord о том, как перемещаться по пространству. Получив всю необходимую информацию о находящихся поблизости персонажах врагов, Overlord знает, в какие области карты не должен двигаться отряд, чтобы его не заметили.
Именно в этот момент один из членов отряда предупреждает меня о висящем в воздухе вертолёте. Поэтому мне нужно залечь и ждать, пока он не улетит. Но для отряда это не важно, потому что пока я нахожусь в режиме стелса и меня не заметили, они невидимы для врага. Overlord помогает им казаться скрытными, и пока я не скомандую им двигаться в место, где их обнаружат, или меня самого не обнаружат, они будут оставаться невидимыми.
Пока я приближаюсь к лагерю, система Smart Recon регистрирует поблизости такие объекты, как средства противовоздушной обороны и электрогенераторы, а также врагов. Она ранжирует их по относительной важности, а также в зависимости от моей возможности устранить их. Именно в этот момент мне дают понять, что поблизости есть враг, и передают контекстуальную информацию о том, где он находится. Также он заносится в мой HUD и на миникарту. Хотя это не очень реалистично — с учётом того, что напарники иногда сообщают об объектах, которые они видеть не могут — это обеспечивает механизм поддержки, не позволяющий мне провалиться с самого начала, а также обнаружить цели и важные точки, которые я в противном случае мог бы пропустить.
Однако вместо этого я решил обнаружить снайперов на башнях и тихо их «снять». Для этого мы используем команду синхронного выстрела, при которой я выбираю до трёх врагов, которых должны уничтожить призраки. Интересно здесь то, что эти синхронные выстрелы зависят от возможности игрока пометить цель, и от возможности дружественного ИИ сделать выстрел. Но иногда ИИ на самом деле не может сделать выстрел, поэтому чтобы выстрелить, он может в определённой степени отклоняться от правил. Допустим, иногда ему приходится стрелять за угол, но если враг находится в бункере и он никак не может быть на линии видимости, то напарник сообщит мне, что не сможет сделать выстрел.
Теперь может возникнуть вопрос: способны ли члены команды промахиваться? На самом деле промахнуться они не могут, потому что не стреляют. Команда разработчиков ИИ в Wildlands называет это «магическим выстрелом» (Magic Shot): отряд притворяется, что стреляет по вашей команде во врага, а все вражеские ИИ просто падают замертво. Благодаря имитации выстрела они не могут промахнуться, а значит вы не провалите миссию таким простым образом.
Когда я проникну на базу, этот процесс продолжится. Отряд продолжает следовать правилам Overlord о том, где он может искать важные объекты, и по приказу игроков уничтожать других врагов на базе с помощью «магических выстрелов». Плюс система Smart Recon указывает мне на генератор, который я упустил во время разведки. Проникнув на базу, напарники начинают медленно следовать за мной, а Overlord гарантирует, что они будут проходить только по указанным мной безопасным зонам. Но это всё равно не важно, ведь они невидимы.
Но проникнув на базу, я решаю пошуметь и начать переполох. В этот момент не только дружественный ИИ поддерживает меня и начинает атаковать врагов, но и система Overlord переключается в режим боя. Поэтому значительно меняется информация о приоритетах целей, а также о местах для перемещения по миру. Кроме того, в дело вступает система Balance of Power. По сути, эта система — инструмент балансировки в реальном времени, который делает отряд призраков в процессе развития боя более или менее эффективным: он влияет на урон от их выстрелов, частоту атак и общую стойкость напарников. Эффективность отряда зависит от того, как игрок проявляет себя в избегании урона и уничтожении врагов. Плюс напарники в начале боя получают дополнительный бонус, чтобы помочь игроку избежать смерти, когда начинается хаос. Возвратимся к основам дизайна: они не только часто целятся, чтобы поддержать, но и стремятся находиться поблизости от игрока, чтобы тот знал об их поддержке. После завершения перестрелки система Smart Recon по-прежнему работает, и они продолжают находить цели, например, снайперов, о которых игрок забыл, или другие боевые вертолёты.
Когда бой становится слишком напряжённым, в игрока попадают и мне нужно восстановление, то в дело вступает ещё одна система под названием Revive Manager. Revive Manager выбирает одного из призраков, приказывает ему активировать соответствующее дерево поведений, и контролирует, чтобы ИИ успешно восстановил игрока. Если игрок окружён врагами, то он использует магические выстрелы на ближайших противниках, чтобы расчистить пространство. Вас подстрелили на крыше или неудобном куске геометрии? Тогда напарник телепортируется на поверхность или, в худшем случае, прямо на ваше тело, чтобы успешно выполнить восстановление. Та же система используется, когда напарникам нужно восстановить друг друга.
И этот процесс продолжается, пока или не закончится конфликт, или отряд не убьют. В любом случае отряд продолжает передавать информацию, становясь более эффективным, если игрок хорошо проявляет себя в бою, и восстанавливая его, пока это возможно. Но несмотря на всё это, игрок не неуязвим: в противном случае игра не представляла бы никакой сложности. Поэтому если на протяжении определённого периода времени игрок не сможет найти способ завершить конфликт, то будет уничтожен.
Во многих других случаях отряд тоже действует очень специфичным образом или жульничает, чтобы поддержать игровой процесс. Наиболее заметный для игрока момент — это перемещение на транспорте. Если игрок забирается в машину, то отряд пытается тоже забраться в неё. Но если игрок уедет без них, то они просто телепортируются в машину, чтобы обеспечивать поддержку. А если на этом транспортном средстве нет места для всех четырёх, то они телепортируются к игроку, как только он выйдет из машины.
Выше я вкратце упоминал о том, что ИИ невидим, пока я не прикажу ему показаться врагам. Напарники незаметны и не атакуют врагов, пока игрок не даст на это разрешение, или скомандовав сделать синхронный выстрел, или приказав атаковать в меню команд, или просто начав нападение самостоятельно. Единственный момент, когда невидимость отключается — это когда игрок отдаёт приказ о перемещении в меню команд, и напарников замечают враги. Если их замечают, то виноват в этом игрок. По правилам игры ИИ не может отказаться от глупого приказа, потому что в конце концов это будет ошибка игрока.
Создание персонажей поддержки для игр наподобие Ghost Recon Wildlands никогда не было простой задачей. Игроки часто бывают… ненадёжны. Поэтому необходимо разрабатывать системы, способные вести себя как положено в скрытном проникновении, серьёзных перестрелках и просто при блужданиях по карте. Мне, как разработчику игр, очень отрадно видеть, как такая AAA-игра идёт на большие уступки для обеспечения качественного игрового процесса. В статье я часто использовал слово «жульничать», но оно не означает, что игрок отклоняется от задуманного дизайнерами геймплея. Подобные трюки просто сглаживают серьёзные проблемы реализации, которые запросто могут возникнуть в игре подобного масштаба. Делать умный ИИ для игр в открытом мире намного сложнее, чем можно представить, поэтому если занимаешься этим, то вполне можно срезать углы. Даже если это означает, что ИИ сможет телепортироваться на летящий вертолёт.
- Mathias Rolland, Teammates AI in the systemic open world of Ghost Recon Wildlands, Game AI North 2017
Комментариев нет:
Отправить комментарий