Как на самом деле работает искусственный интеллект в играх – почему врагам в F.E.A.R., Halo и других хитах не нужны нейросети
Добрый день! 🎮🤖 Как на самом деле работает искусственный интеллект в играх – почему врагам в F.E.A.R., Halo и других хитах не нужны нейросети? Вы заходите в помещение, замечаете вооружённого противника и открываете огонь. Враг немедленно прячется за ящиками, его напарник пытается обойти Вас сбоку, а третий бросает гранату, вынуждая покинуть укрытие. Создаётся впечатление, будто противники оценивают ситуацию, договариваются между собой и придумывают тактику прямо во время сражения.
Но вот неожиданность: для подобного поведения игре совершенно необязательно использовать нейросети, большие языковые модели или технологии, напоминающие ChatGPT. Зачастую за действиями виртуальных противников стоят алгоритмы, разработанные много лет назад. Они работают по определённым правилам, анализируют доступную информацию и выбирают подходящие действия.
Игровой искусственный интеллект – это не обязательно обучающаяся система, которая самостоятельно становится умнее. В большинстве привычных игровых ситуаций разработчикам гораздо важнее получить понятное, управляемое и интересное поведение персонажей. И иногда несколько десятков хорошо продуманных правил создают более убедительного противника, чем сложная система машинного обучения.
Как на самом деле работает искусственный интеллект в играх – почему врагам в F.E.A.R., Halo и других хитах не нужны нейросети

Почему враг умеет искать укрытие, хотя никто не обучал его воевать?
Начнём с простого примера. Разработчик создаёт охранника, который должен патрулировать склад, замечать игрока и вступать в перестрелку.
Для этого совершенно необязательно создавать нейросеть и показывать ей тысячи записей боевых ситуаций. Можно заранее описать несколько состояний персонажа и условия переключения между ними.
Например, пока охранник никого не видит, он перемещается между контрольными точками. Если слышит подозрительный звук, направляется к его источнику. Обнаружив игрока, начинает атаковать, а потеряв цель из виду, некоторое время исследует последнее известное местоположение.
Такая система называется конечным автоматом, или Finite State Machine – FSM.
В каждый момент персонаж находится в определённом состоянии, а события и условия позволяют ему переходить в другое.
Для простого противника этого вполне достаточно. Он способен патрулировать территорию, реагировать на опасность, атаковать и отступать.
Однако с усложнением игры появляются трудности. Что делать, если охранник одновременно ранен, слышит взрыв, видит игрока и получает приказ защитить союзника?
Разработчику приходится определять приоритеты и прописывать дополнительные условия. Чем больше таких ситуаций, тем сложнее поддерживать систему.
Поэтому для более разнообразного поведения существуют другие подходы.
Дерево поведения – как NPC решает, что делать прямо сейчас
Один из распространённых инструментов игрового искусственного интеллекта называется Behavior Tree, или дерево поведения.
Это система, в которой действия и проверки организованы в иерархическую структуру. В зависимости от текущей ситуации персонаж выбирает определённую ветвь и выполняет соответствующие задачи.
Представим нашего охранника. Если его здоровье находится на критическом уровне, система может сначала проверить возможность отступления. Если непосредственной опасности нет, персонаж продолжит патрулирование. Если обнаружен противник, охранник попытается занять выгодную позицию и начать атаку.
В отличие от простой последовательности заранее прописанных команд, дерево поведения позволяет сочетать многочисленные проверки и действия в единую управляемую структуру.
Подобные инструменты непосредственно встроены в Unreal Engine. Разработчики могут создавать деревья поведения и использовать Blackboard – специальное хранилище данных, необходимых для принятия решений.
Например, в Blackboard можно записывать положение игрока, сведения о видимости цели и координаты места, которое необходимо проверить.
Само дерево определяет, что делать с этой информацией. Оно может запустить преследование, выбрать точку патрулирования или переключиться на другую задачу.
В официальной документации Unreal Engine рассматривается именно такой пример: персонаж патрулирует территорию, замечает игрока, начинает преследование и возвращается к обычному поведению после потери цели.
Никакой нейросети для этого не требуется.
Но существует важный нюанс. Дерево поведения не превращает персонажа в самостоятельно мыслящее существо. Разработчики заранее создают доступные действия, условия и правила выбора. Система лишь определяет, какую ветвь выполнять в текущий момент.
И всё же при грамотной настройке результат может выглядеть достаточно убедительно.
F.E.A.R. – как разработчики создали противников, которые кажутся тактически грамотными
В 2005 году студия Monolith Productions выпустила F.E.A.R. – шутер, который запомнился не только атмосферой ужасов и эффектными перестрелками, но и поведением противников.
Солдаты могли обходить игрока, использовать укрытия, реагировать на изменение ситуации и применять разные способы достижения цели. Особенно впечатляло то, насколько естественно враги действовали в сравнительно небольших боевых пространствах.
В основе системы использовался подход Goal-Oriented Action Planning, сокращённо GOAP. Его подробно описал разработчик Джефф Оркин в материалах конференции GDC 2006.
Главное отличие GOAP заключается в том, что персонаж получает цель и набор возможных действий, а система самостоятельно подбирает последовательность, необходимую для достижения результата.
Допустим, противник хочет приблизиться к игроку. Но между ними находится препятствие.
Охранник может попытаться пройти через дверь. Если выясняется, что путь заблокирован, система учитывает новую информацию и пересматривает план. Например, персонаж выбирает другой маршрут.
Разумеется, подобное поведение не означает, что враг самостоятельно изобрёл способ открывать двери. Разработчики заранее определили доступные действия, их условия и возможные последствия.
Однако порядок использования этих действий может изменяться в зависимости от обстоятельств.
Оркин приводил пример, в котором противник менял план после неудачных попыток добраться до цели. Если один путь оказывался недоступным, персонаж искал альтернативное решение.
Именно эта способность перестраивать действия производила сильное впечатление.
Впрочем, GOAP не действует в одиночку. Важную роль играют архитектура уровней, расположение укрытий, анимации, звуки и реплики противников.
Хороший игровой ИИ – это не только алгоритм принятия решений, но и всё окружение, позволяющее игроку увидеть последствия этих решений.
Если противник обошёл Вас сбоку, но движение произошло за стеной и осталось незамеченным, впечатление будет одним. А если враг крикнул товарищу, бросился к соседнему проходу и появился с неожиданного направления, ситуация воспринимается совершенно иначе.
Хотя в обоих случаях система могла использовать достаточно простые правила.
Почему игровой ИИ вообще знает, где находится игрок?
Любой виртуальный персонаж получает сведения о мире через специальные программные системы. Разработчики решают, какую информацию NPC разрешено использовать и при каких условиях она становится доступной.
Например, враг может обнаруживать объекты в определённом радиусе и проверять, существует ли прямая видимость между ним и целью.
Но одного расстояния недостаточно. Если игрок стоит за бетонной стеной, охранник не должен автоматически видеть его только потому, что тот оказался поблизости.
Поэтому система может выполнять проверку препятствий между персонажами. Если обзор перекрыт, обнаружение не происходит либо зависит от дополнительных игровых правил.
Слух часто реализуется иначе. Выстрел, взрыв или другое действие создаёт событие, которое получают подходящие NPC в установленной зоне.
Игровой слух не обязан анализировать настоящие звуковые волны. Во многих случаях достаточно сообщения о том, что в определённой точке произошло шумное событие.
Получив такую информацию, охранник может отправиться на проверку.
При этом разные игры устанавливают разные ограничения. Одни враги быстро забывают последнее местоположение игрока, другие продолжают поиск значительно дольше.
Иногда разработчики намеренно предоставляют противникам сведения, которые человек в аналогичной ситуации получить не смог бы. Это может упрощать программирование или поддерживать необходимую сложность.
Однако чрезмерное использование подобных возможностей создаёт неприятное ощущение: враги будто видят сквозь стены и всегда знают, где Вы находитесь.
В хорошей игре правила обнаружения должны быть достаточно последовательными, чтобы пользователь мог понимать опасность и планировать действия.
Halo – почему разработчики стремились создать иллюзию интеллекта
Любопытный пример содержится в материалах выступления Bungie на GDC 2002, посвящённого искусственному интеллекту Halo.
Разработчики прямо объясняли, что их задача заключалась не в создании настоящего разума, а в том, чтобы противники казались умными и обеспечивали интересные сражения.
Поэтому выступление получило название The Illusion of Intelligence – «Иллюзия интеллекта».
Система строилась вокруг представления каждого противника о происходящем. Персонаж получал информацию о важных для боя объектах, событиях и других участниках сражения.
Разработчики специально ограничивали знания NPC, чтобы игрок мог понимать их поведение и использовать особенности восприятия противников.
Но в процессе тестирования выяснилась интересная вещь.
В ранних версиях Halo у врагов существовала небольшая задержка между обнаружением игрока и распознаванием угрозы. Это позволяло человеку получить преимущество или вовремя отступить.
Однако тестировщики нередко воспринимали такую задержку не как возможность для тактического манёвра, а как признак глупого искусственного интеллекта.
Разработчикам пришлось пересмотреть решение.
История показывает, насколько сильно восприятие игрока зависит от внешних признаков поведения.
Персонаж может использовать технически продуманную систему, но если его реакция выглядит странно, пользователь решит, что ИИ работает плохо.
А простой алгоритм, сопровождающийся понятными анимациями и убедительными действиями, способен создавать противоположное впечатление.
Игрок оценивает не сложность программного кода, а то, насколько естественно противник ведёт себя на экране.
Как враги находят дорогу, если уровень состоит из тысяч объектов?
Теперь представим ситуацию: персонаж заметил игрока и решил преследовать его.
Проблема в том, что между ними находятся стены, лестницы, мебель и другие препятствия. Если противник просто начнёт двигаться по прямой, он быстро упрётся в ближайшую стену.
Для решения подобных задач используются алгоритмы поиска пути.
Один из известных подходов – алгоритм A*, который помогает находить маршрут по графу с учётом стоимости переходов и оценки оставшегося расстояния.
Но сперва необходимо представить игровое пространство в подходящем для вычислений виде.
Для этого часто применяют навигационную сетку – NavMesh.
NavMesh описывает области, по которым персонажу разрешено перемещаться. Благодаря этому NPC может искать путь через проходы и коридоры, вместо того чтобы бесконечно пытаться пробежать сквозь стену.
В Unity для подобных задач существует система AI Navigation и компонент NavMeshAgent. Они позволяют организовывать перемещение персонажей по навигационной поверхности и учитывать препятствия.
Например, разработчик создаёт сцену с несколькими комнатами, дверными проёмами и лестницей. Затем подготавливает навигационные данные и указывает персонажу точку назначения.
Система определяет допустимый маршрут, после чего агент начинает движение.
Если на пути появляются другие персонажи, механизмы локального избегания препятствий могут корректировать движение.
Но даже наличие NavMesh не гарантирует, что герой будет действовать идеально. Особенно если двери динамически закрываются, объекты перемещаются или уровни содержат сложные переходы.
Поэтому разработчикам приходится дополнительно настраивать взаимодействие между поиском пути, анимацией и игровыми событиями.
Иначе возникает знакомая ситуация: враг прекрасно умеет стрелять, но застревает между стулом и дверным косяком. Настоящий кошмар любого тактического гения! 😄
Left 4 Dead – искусственный интеллект, который управляет не врагом, а напряжением
Не весь игровой ИИ обязательно управляет конкретными персонажами.
В кооперативном шутере Left 4 Dead от Valve важную роль играет система AI Director. Она анализирует происходящее и влияет на развитие игровых столкновений.
Например, система может учитывать состояние команды и интенсивность переживаемых игроками событий, определяя подходящие моменты для изменения давления со стороны заражённых.
После напряжённого сражения игра способна предоставить некоторое время для восстановления, а затем снова повысить уровень опасности.
AI Director не обязательно делает каждого отдельного зомби умнее. Его задача – управлять ритмом приключения и создавать разнообразные ситуации.
Разработчик Valve Чет Фалишек объяснял, что команда стремилась создать чередование эмоциональных пиков и спокойных промежутков, характерное для хорошего игрового повествования.
Постоянные максимальные нагрузки могли бы быстро утомить игроков. Поэтому система меняет интенсивность происходящего.
В результате даже при повторном прохождении знакомого уровня команда может столкнуться с отличающейся последовательностью опасных ситуаций.
И здесь снова не требуется нейросеть, способная понимать человеческие эмоции.
Разработчики могут использовать измеряемые игровые параметры и заранее определённые правила изменения интенсивности.
Это хороший пример того, что искусственный интеллект в играх способен решать задачи гораздо шире простого управления противниками.
Как персонаж выбирает между атакой, лечением и отступлением?
Существует ещё один интересный подход – Utility AI, который можно назвать системой оценки полезности действий.
Вместо жёсткого правила «если здоровье меньше определённого значения, немедленно убегай» разработчики назначают различным действиям оценки, зависящие от текущих обстоятельств.
Предположим, охранник рассматривает три варианта: атаковать, укрыться или вызвать подкрепление.
Если здоровье полное, а игрок находится близко и не защищён, атака может получить высокую оценку.
Если охранник ранен, а противник вооружён мощным оружием, привлекательность прямого столкновения уменьшается. При этом полезность укрытия или вызова союзников увеличивается.
Система выбирает действие на основании рассчитанных оценок, а не обязательно по одному заранее установленному условию.
Важную роль здесь играет настройка формул и приоритетов.
Если разработчик неправильно определит полезность лечения, персонаж может постоянно пытаться восстанавливать здоровье даже тогда, когда безопаснее сначала отступить.
А если атака получает слишком высокую оценку, враг будет безрассудно бросаться вперёд практически в любой ситуации.
Поэтому наличие сложного алгоритма само по себе не гарантирует интересного поведения. Разработчики должны тщательно подбирать параметры и проверять результат в реальных игровых условиях.
Почему нейросети не используются для каждого солдата или зомби?
После стремительного развития генеративного искусственного интеллекта возникает закономерный вопрос: почему бы не подключить нейросеть к каждому игровому персонажу?
Теоретически обучаемые модели могут решать некоторые задачи управления NPC. В исследованиях уже применяются методы обучения с подкреплением, когда агент получает обратную связь за свои действия и постепенно вырабатывает определённую стратегию.
Однако существует несколько серьёзных ограничений.
Первое – предсказуемость. Разработчикам необходимо понимать, какие действия способен совершить противник. Если поведение плохо поддаётся контролю, становится труднее создавать задания, настраивать сложность и устранять ошибки.
Второе – стоимость вычислений. В одной игре одновременно могут существовать десятки или сотни персонажей. Для каждого необходимо обновлять состояние, выполнять анимации, рассчитывать столкновения и обрабатывать игровые события.
Использование сложной модели для каждого NPC может оказаться неоправданно дорогим, особенно на мобильных устройствах или менее мощных компьютерах.
Третье – тестирование. Игровая студия должна проверять поведение персонажей в огромном количестве ситуаций. Чем сложнее воспроизвести определённое решение ИИ, тем труднее находить причину неожиданных ошибок.
Четвёртое – баланс. Для интересного игрового процесса противник не обязан всегда принимать математически оптимальное решение. Иногда игроку необходимо оставить возможность заметить ошибку врага, подготовить засаду или применить неожиданную тактику.
И наконец, существует вопрос практической необходимости.
Если обычный деревенский торговец должен стоять за прилавком, здороваться и предлагать товары, зачем ему сложная нейросеть?
Для такой задачи прекрасно подойдёт простая система состояний и заранее подготовленных диалогов.
Сложность технологии должна соответствовать задаче, а не моде на искусственный интеллект.
А как же ChatGPT и NPC, с которыми можно разговаривать свободно?
Генеративные модели действительно открывают новые возможности для игровых персонажей.
Например, вместо выбора из нескольких заранее написанных реплик пользователь может самостоятельно формулировать вопросы и получать ответы, которые не были дословно подготовлены сценаристом.
В марте 2024 года Ubisoft представила экспериментальный проект NEO NPC. Компания исследовала использование больших языковых моделей для взаимодействия с персонажами.
В работе участвовали технологии NVIDIA Audio2Face и Inworld. При этом Ubisoft подчёркивала, что характеры персонажей, их биографии и особенности речи создаются при участии сценаристов.
Это был исследовательский прототип, а не доказательство того, что все NPC в будущих играх Ubisoft автоматически перейдут на генеративный искусственный интеллект.
Подобные системы сталкиваются с собственными трудностями.
Персонаж должен сохранять последовательность характера, не разрушать сюжет, учитывать обстоятельства игрового мира и не сообщать информацию, которой по сценарию не обладает.
Кроме того, необходимо контролировать задержку получения ответа, качество распознавания речи, стоимость обработки запросов и корректность создаваемых реплик.
И даже если языковая модель прекрасно поддерживает разговор, это ещё не означает, что она умеет правильно перемещать персонажа по уровню или проводить сбалансированные сражения.
Поэтому перспективным направлением остаётся сочетание разных технологий.
Например, классическая система управляет передвижением и боевыми действиями, а генеративная модель помогает создавать диалог в пределах установленных правил.
Но не стоит путать подобные эксперименты с уже привычным искусственным интеллектом, который десятилетиями используется в видеоиграх.
Почему самый умный противник не обязательно самый интересный?
Представьте шутер, в котором враги мгновенно замечают любой подозрительный звук, идеально выбирают укрытия, постоянно координируют атаки и практически не допускают ошибок.
Формально такая система может выглядеть весьма продвинутой. Но понравится ли игроку постоянно проигрывать противникам, которые действуют почти безупречно?
Скорее всего, далеко не каждому.
Поэтому разработчики должны думать не только о качестве принимаемых решений, но и о том, какие впечатления получит человек.
Хороший игровой противник должен быть достаточно понятным, чтобы игрок мог изучать его поведение, и достаточно разнообразным, чтобы сражения не превращались в механическое повторение.
Иногда для этого полезно ограничить дальность обнаружения. Иногда – сделать заметной подготовку к атаке. А иногда – позволить противнику выбрать между несколькими неидеальными решениями.
Но особенно важно, чтобы поведение врага соответствовало его роли.
Обычный зомби может медленно преследовать героя, практически не используя тактику. Элитный солдат, напротив, должен создавать впечатление опытного бойца.
Если все противники будут действовать одинаково, игровой мир быстро потеряет индивидуальность.
Поэтому разработчики используют различающиеся наборы действий, параметры восприятия, приоритеты и особенности поведения.
Именно на этом уровне искусственный интеллект начинает тесно взаимодействовать с геймдизайном.
Можно ли самостоятельно создать игровой ИИ без нейросетей?
Да. Причём для первого эксперимента не нужны ни мощная видеокарта, ни огромный набор обучающих данных.
Допустим, Вы создаёте небольшую игру в Unity. На сцене находится противник, который должен ходить между двумя точками, замечать игрока и преследовать его.
Сначала можно подготовить навигационную поверхность и добавить персонажу компонент NavMeshAgent.
Затем создать несколько состояний: патрулирование, преследование и поиск.
Когда игрок находится достаточно близко и виден противнику, система переключается на преследование. Если цель теряется, NPC отправляется к последней известной позиции.
После безуспешного поиска персонаж возвращается к патрулированию.
Уже такая простая система создаёт полноценное поведение, которое игрок сможет наблюдать, изучать и использовать.
Дальше можно постепенно усложнять механику. Добавить реакцию на шум, выбор укрытий, ограниченный запас здоровья и взаимодействие с союзниками.
Если количество условий станет слишком большим, можно рассмотреть дерево поведения или другую подходящую архитектуру.
Но начинать с самой сложной технологии не обязательно.
Гораздо полезнее создать простую работающую систему, а затем улучшать её по результатам тестирования.
Почему будущее игрового ИИ не обязательно связано с заменой всех алгоритмов нейросетями?
Нейросети, обучение с подкреплением и генеративные модели расширяют возможности разработчиков. Они способны помогать в создании диалогов, исследовании поведения персонажей, автоматизированном тестировании и других задачах.
Но традиционные игровые алгоритмы никуда не исчезают.
Конечные автоматы позволяют создавать понятные системы состояний. Деревья поведения удобны для организации разнообразных действий. GOAP помогает строить планы для достижения целей, а навигационные алгоритмы позволяют персонажам перемещаться по сложным уровням.
Каждый из этих инструментов решает собственную задачу.
Искусственный интеллект в видеоиграх – это не соревнование за использование самой современной технологии, а поиск подходящего способа создать интересное поведение.
Истории Halo, F.E.A.R. и Left 4 Dead показывают, насколько убедительный результат можно получить с помощью тщательно разработанных правил и алгоритмов.
При этом даже самый продвинутый игровой ИИ останется бесполезным, если его поведение невозможно понять, проверить или согласовать с остальными механиками.
Поэтому, когда в следующий раз враг обойдёт Вас сбоку, спрячется за укрытием или изменит маршрут после неудачной атаки, необязательно подозревать внутри игры сложную нейросеть.
Возможно, перед Вами всего лишь удачно работающая система принятия решений, созданная программистами и геймдизайнерами.
И это ничуть не уменьшает её достоинств.
Ведь настоящая магия разработки заключается не в количестве модных технологий, а в способности заставить набор программных инструкций выглядеть как поведение живого существа. Даже если этот «живой» противник через минуту снова застрянет в дверях и героически попытается обойти табуретку с четвёртой стороны. 🤖😄
А в какой игре Вы встречали действительно впечатляющий искусственный интеллект? Вспоминаете тактические перестрелки F.E.A.R., противников из Halo, изменчивые сражения Left 4 Dead или совершенно другие проекты? И хотели бы Вы видеть больше NPC с генеративным ИИ или предпочитаете тщательно продуманное поведение по правилам? Делитесь мнениями в комментариях! 🎮💬
Удачи всем!
Понравилась статья? Поделись с друзьями в соц.сетях:Вам так же будет интересно:
- Добрый день! 🎮 Gears of War – E-Day обошлась Microsoft в $500 миллионов? Журналисты выяснили, куда на самом деле ушли ...
- Добрый день! 🎮 Microsoft сократила расход видеопамяти на трассировку лучей почти на 90% – старые видеокарты получат вторую жизнь? Трассировка ...
- Добрый день! 🎮 Thief возвращается спустя 28 лет – создатели легендарного фанатского мода сделали четыре новые миссии, которые признали каноном. Есть ...
- Добрый день! 🎮 GTA 6 ещё не вышла, а сотрудники уже массово просят выходной – 18% американцев готовы взять отгулы ...