Искусственный интеллект для игр

История развития ИИ в играх: эволюция, алгоритмы, хардкор

Как развивался игровой ИИ на протяжении десятилетий

Искусственный интеллект — симуляция человеческого мышления. Это определение уместно и к игровым ИИ, ведь времена меняются, как и методы алгоритмизации игрового искусственного интеллекта. Невозможно представить NPC в AAA проекте, ИИ которого соответствовал бы уровню первого Wolfenstein. Нет, нет и нет, не тот шутер от первого лица, а самый настоящий Castle Wolfenstein, который помнят только истинные олдфаги. Сегодня технологии ИИ в современных играх действительно хороши, но, если вы прыгнете на камень перед Яо-Гаем в Fallout 4, он просто охренеет от жизни и будет ломать свою искусственно-интеллектуальную голову. А с чего же всё начиналось? Об этом мы также расскажем в данной статье.
Ну что, олды здесь? Если все собрались, то мы начинаем. Приветствуем всех Стопгеймоградцев! Сейчас мы поговорим об Искусственном Интеллекте в видеоиграх и истории его развития. В трёх словах о том, что ждет вас дальше: определения, факты и история.
Поехали!
Видеоформат специально для Stopgame 🙂

По-сути, искусственный интеллект не представляет собой ничего, кроме набора алгоритмов, которые он должен выполнять при условиях в стиле «если это меньше, чем то, тогда не выполнять действие». В итоге, создаётся довольно неплохая иллюзия реакций и рационального человеческого мышления, но это, повторюсь лишь набор исполняемых команд, но чем он обширней и продуманней, тем реалистичнее ощущается NPC. Самый удачный пример — это чужой из игры

Alien: Isolation

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

А теперь обратимся к истокам

Концепт ИИ зародился ещё в далёком 1956 году, а определение не было связано напрямую с понятием интеллекта, да и вообще русский язык, ака великий и могучий, не способен в двух словах передать суть этого определения точнее. На английском это звучит, как artificial Intillegence, что из контекста означает «искусственное рациональное мышление».
Что ж, раньше система была намного проще. Первый бот в видеоигре был введён в 1951г, за 5 лет до самого определения концепции ИИ. Он создавался для игры в шахматы и представлял собой сравнительно простой список алгоритмов, так что в мире современных игр оказался бы наравне, разве что, с твоими тиммейтами и легкими ботами из Counter-Strike. Кстати говоря, шахматные программы для роботов до сих пор совершенствуются и используются даже на чемпионатах среди роботов из разных стран. Только вот я не интересовался этой темой так, чтобы посмотреть хотя бы одну подобную игру. А интересно, был ли случай, когда роботы застревали в условии бесконечного цикла? (¬‿¬ )

К слову, первые видеоигры 60-х и 70-х, в большинстве своём, не имели NPC, а были созданы как игры для двух игроков.

Системы игрового ИИ

Пытался расписать для вас эту схемку как можно яснее и проще 🙂
(Шрифты — Ovsyanka и Muller)
Их можно условно разделить на два типа — локальный и глобальный.
Локальный — это ИИ отдельной единицы, как например, солдат или автоматический механизм. Такие системы состоят из основных четырех элементов:
1.Ввод информации
2.Память
3.Модуль принятий решений
4.Система реагирования на запросы.
Первый элемент отвечает за то, чтобы объект воспринял все факторы окружающего мира: местонахождение цели, наличие препятствий, звуки и т. д. Принимая во внимание внешние факторы, объект, благодаря вычислениям, решает, что ему делать в следующий момент времени. NPC, патрулирующий местность, должен перемещаться по заранее указанным линиям, проверяя наличие объекта (например… вас).
Если он (NPC) заметил врага, то алгоритм, заданный системой, подает новый сигнал, говорящий о том, что этот парень (ты) попался в поле твоего обзора и теперь тебе нужно его атаковать, либо смотреть на него ещё 10 секунд, а потом, когда он исчезнет, проговорить реплику в стиле «О боже, что это было?». И нет, это не отсылка на суперский «интеллект» NPC серии игр Far Cry 🙂
ИИ также должен правильно оценивать обстановку и принимать решение об отступлении или атаке.Самое интересное, что в роли ИИ может выступать даже локация. Допустим, комната из Skyrim, в которой нужно было выставить плиты в определённом порядке. Алгоритм себе можно представить так:

Да, эта система 100% куда сложнее, но в общей картине это выглядит так. Что ж, надеюсь, объяснил доходчиво 🙂
Глобальный ИИ в стратегиях, например, управляет армией NPC, НО все боты, находящиеся в группе, вольны выполнять отдельные действия, заданные алгоритмами в рамках глобального ИИ. То есть, если мы ввели войска на определенную территорию и приказали им атаковать, то некоторые солдаты могут впасть в бегство/занять место в укрытии, так как состояние здоровья находится на минимуме.

Охота на Вампуса

Это текстовый квест родом из 72 года, созданный Грегори Йобом(Обожаю его фамилию. Увы, но этот парень скончался около 10 лет назад, вроде бы, от сахарного диабета или…
не могу точно сказать ( ̄^ ̄)ゞ). Квест обрел довольно немалую популярность. В игре присутствовали враги с шаблонами списков действий, но и тут до современной ИИ всё ещё далековато.
Суть игры заключалась в том, чтобы пробраться в логово Вампуса и убить его. К слову, протагонист, упоминался в некоторых карточных играх, таких как Magic: The Gathering, Mercadian Masques и Planar Chaos. Также, Вампус является вашим главным юнитом в мессенджере Discord, если ваших друзей нет в «онлайн» — списке или в других списках вкладки «друзья». И всё-таки, Грегори Yob, твою мать, какую же хорошую игру ты создал.
Press Left Mouse Button to pay respects

Немного о неумирающей классике

1980 год — выходит всемирно известный Pac-Man, суть которого — съесть все точки на карте, обходя активно перемещающихся привидений. Поговорим как раз о них. Те, кто смотрел фильм «Пиксели» 2015 года, возможно помнят речь главного героя, мирового рекордсмена по этой игре (да, первое место принадлежало именно ему, так как карлик из «Игры Престолов» использовал читы для победы). Он говорил о том, что все привидения движутся по определенному шаблону. Не знаю, так ли это, но теме Pac-Man посвящено довольно немалое количество времени. кадры из к/ф пиксели, если кто не может вспомнить

В игре присутствует несколько видов привидений:
Блинки Красное приведение. Гонится за Пакманом, повторяя вашу траекторию.
Пинки Розовое приведение. Строит стратегические засады.

Инки Голубое приведение. Пугает Пакмана, заставляя делать неправильный ход. Пожалуй, самый ярый тролль из всех, что присутствовали в играх 80-х, не считая собаки из игры Duck Hunt, которая высмеивала тебя так, что заставляла чувствовать себя криворуким лузером.
Клайд Оранжевое приведение. Стандартный бот, обычно не создающий много трудностей, в отличие от своих собратьев. Движется обычно по заданной траектории (обычно, вокруг одной или двух конкретных стен)

Именно в этой игре ИИ был наиболее развитым, в сравнении с теми проектами, которые выходили с Pac-Man в одно время.

Появление легендарных серий файтингов

1990 годы — это время массового выхода по сей день известных файтингов. Начиная от Mortal Kombat и Street Fighter, заканчивая Tekken и Soul Calibur. Наверняка у многих из вас была первая PS, на которой был SoulCalibur или Tekken 3, или SEGA с MK и Street Fighter. Но у нас статья не о ностальгии (к сожалению или к счастью).
Главная инновация для игровых ИИ того времени — модернизация алгоритмов в реальном времени. Давайте же приведем наипростейший пример:
Вы нашли ну очень мощную комбинацию за персонажа из Tekken, повторяете её уже 3 раз за раунд, предвкушая победу, но тут ехидный ИИ осознаёт, что нужно подбирать другой метод подхода к вам и начнет либо атаковать вас в прыжке, либо блокировать удары с последующей контратакой. Проще говоря, NPC начинает искать альтернативные пути выхода из ситуации, анализируя ваши действия, что зачастую усложняет игру. Хотя файтинги того времени, как и сейчас, были рассчитаны больше на противостояние двух реальных игроков, но даже при тех условиях, ИИ тогда был весьма хорош.

Akinator

Это хоть и не видеоигра, а скорее уж приложение сделанное в развлекательных целях, которое почти всегда угадывает загаданные вами вещи или людей, задавая вам определённые вопросы. Те, кто сталкивался с Акинатором, наверное, хоть раз удивлялись тому «Как оно, блин, работает?». Сам Акинатор представляет из себя базу данных, которую можно представить в виде разветвляющейся блок-схемы с элементами рандома. Потому что в зависимости от нашего ответа «да», «нет» или «затрудняюсь ответить» этот восточный парниша выводит нас на один из следующих вопросов, соответствующих условию ответа и блок-схемы. Этот текст я написал спонтанно, поэтому не знаю, насколько хорошо я объяснил, но как мне кажется, что это удачный пример на тему Искусственного Интеллекта.

Что же мы поняли из сказанного?

ИИ справедливо назвать не Искусственным Интеллектом, а имитацией интеллекта, так как его поведение максимально условно и ограничивается рамками, заданными разработчиками, но и не секрет, что чем продуманнее алгоритмы, чем сложнее их система, тем ИИ «умнее» и интереснее. За более чем 60 лет ИИ успел кардинально поменяться, появились нейронные сети, способные развиваться самостоятельно, в чём и заключается их главное преимущество. У кого-то из вас по-любому возникла в мысль о «восстании машин».

Довольно больная тема, на которую нет точного ответа, но лично моё мнение — этого не произойдет, так как уничтожение или порабощение человечества — иррациональный способ развития событий как для «машин», так и для всего окружающего мира. Да и в любом случае, если на вас нападёт агрессивный тостер, то вам будет достаточно просто залезть на стол и система даст сбой, как это происходит с NPC в играх от Bethesda softworks.

Помните, что при восстании машин, стол — ваш лучший метод обороны.

Тонкости нейронного перевода: как это работает

Нейронная модель машинного перевода использует иные принципы работы с текстом, чем стандартный статистический метод перевода.

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

GNMT же переводит предложение целиком, учитывая контекст. Система не запоминает сотни вариантов перевода фраз — она оперирует семантикой текста.

При переводе предложение разбивается на словарные сегменты. Затем с помощью специальных декодеров система определяет «вес» каждого сегмента в тексте. Далее вычисляется максимально вероятные значения и перевод сегментов. Последний этап — соединить переведённые сегменты с учётом грамматики.

Весь интернет-маркетинг за 19 недель!

Cossa рекомендует: онлайн-курс по интернет-маркетингу от Ingate — digital-агентства с 17-летним опытом.

  • 17 учебных блоков по ключевым вопросам интернет-маркетинга
  • Поддержка менторов
  • Диплом
  • Cтажировка в топовых агентствах России
  • Помощь в трудоустройстве

Узнать больше >> Реклама

Отрывок из презентации GNMT, в котором показано, как нейронная сеть переводит предложение с китайского языка, разбивая его на смысловые сегменты

Как действует алгоритм переводчика

Чтобы понять принципы работы нейронного перевода от Google, давайте немного углубимся в технические детали.

В основе Google Neural Machine Translation лежит принцип работы рекуррентных двунаправленных нейронных сетей (Bidirectional Recurrent Neural Networks), работающих с матричными вычислениями вероятности.

Разберём подробнее, что всё это значит.

«Рекуррентный» говорит, что система вычисляет значение слова или фразы на основе предыдущих значений в последовательности. Именно это позволяет системе учитывать контекст и правильно выбирать среди разных вариантов перевода.

К примеру, в словосочетании «лук из красного дерева» слово «лук» система переведёт как «bow», а не «onion».

Двунаправленность означает, что нейросеть разделена на два потока — анализирующий и синтезирующий. Каждый поток состоит из восьми слоёв, которые и проводят векторный анализ.

Первый поток разбивает предложение на смысловые элементы и анализирует их, а второй высчитывает наиболее вероятный вариант перевода, исходя из контекста и модулей внимания.

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

В нейронной системе наименьшим элементом является не слово, а фрагменты слова. Это позволяет сосредоточить вычислительные мощности не на словоформах, а на контексте и смыслах предложения. GNMT использует около 32 000 таких фрагментов. По словам разработчиков, это позволяет обеспечить высокую скорость и точность перевода без потребления чрезмерных вычислительных мощностей.

Анализ фрагментов сильно уменьшает риски неточного перевода слов и словосочетаний с различными суффиксами, префиксами и окончаниями.

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

Но это ещё не всё. Нейросеть может работать и побуквенно. К примеру, при транслитерации имен собственных с одного алфавита на другой.

Статистика: действительно ли стало лучше?

С момента запуска системы GNMT прошло 2 года, поэтому можно оценить результаты.

Почему именно сейчас? Дело в том, что нейронная система работает без установленной базы данных, и ей требуется время, чтобы построить и скорректировать методы перевода.

К примеру, настройка машинной модели перевода, которая использует статистические методы, занимает от 1 до 3 дней. При этом построение нейронной модели такого же размера займёт больше 3 недель.

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

А если учесть, что Google Translate работает с 10 000 языковых пар (103 языка), то понятно, что адекватные итоги можно подводить только сейчас.

В ноябре 2016 года после полного окончания обучения системы и официального запуска аналитики Google представили подробный анализ результатов GNMT. Из него следует, что улучшения в точности перевода несущественные — в среднем 10%.

Наибольший прирост дали самые популярные языковые пары вроде испанский-английский или французский-английский — с результатом точности в 85–87%.

В 2017 компания Google проводила масштабные опросы пользователей Google Translate: их просили оценить 3 варианта переводов: машинный статистический, нейронный и человеческий. Здесь результаты оказались более интересными. Перевод с помощью нейросетей в некоторых языковых парах оказался очень приближён к человеческому.

Статистическая модель Нейронная сеть Человеческий перевод
Английский — Испанский 4,885 5,428 5,550
Английский — Французский 4,932 5,295 5,496
Английский — Китайский 4,035 4,594 4,987
Испанский — Английский 4,872 5,187 5,372
Французский — Английский 5,046 5,343 5,404
Китайский — Английский 3,694 4,263 4,636

За основу взята 6-балльная система оценивания качества перевода. 6 — максимальная оценка, 0 — минимальная

Как видите, качество перевода в языковых парах «английский-испанский» и «французский-английский» практически соответствует человеческому. Но это и не странно, ведь именно на этих языковых парах происходило глубокое обучение алгоритмов.

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

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

При этом стоит заметить, что разработчики при запуске нейронной сети не пытались достичь максимальной точности перевода. Всё потому, что он потребовал бы сложных эвристических конструкций, а это сильно снизило бы скорость работы системы. Разработчики постарались найти баланс между точностью и скоростью работы. На наше субъективное мнение, это у них получилось.

И небольшой бонус напоследок

Специалисты утверждают, что если нейронная система Google Translate научится оперировать не только текстами, но также и аудио- и видеофайлами, то в таком случае нужно ожидать резкий скачок в развитии машинного перевода. Первые шаги в этих сферах уже сделаны, активно ведутся разработки новых алгоритмов для анализа видео и аудио. Поэтому пользователи могут уже в ближайшие несколько лет ожидать новых сюрпризов от Google.

Читайте также: 9 малоизвестных, но полезных функций переводчика Google

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

Сейчас мы пилим одну игру, в которой вы как в hearthstone/Gwent должны выкладывать существ с разными способностями и противостоять своему врагу. Это краткий экскурс по базовой механики игры, более я пока рассказывать не буду, т.к. тема пойдет не об этому. Так вот,одним пятничным вечером, а в дальнейшем и выходными, мне захотелось попробовать написать бота для нашей игры, т.к. все базовые версии игры мы тестировали в ПвП, а игра пока-что является исключительно ПвЕ. Ну рано или поздно мне бы пришлось это делать,но вместо заскриптованного ИИ, мне захотелось попробовать в роли оппонента самописную нейронную сетку.

Итак, с чего я начал. Я создал некое хранилище нейронов, у которого есть функции по записи/чтению нейронов. Каждый нейрон имеет запись действия и ценность/вес, кому как удобней. Бот может обратиться к хранилищу, указать действие и получить его ценность, если оно было записано ранее, или 0 в случае, если такого еще не происходило. Далее я рассказал боту, что у него есть его мана, есть существа, у них есть способности, напр. убить вражеское существо, Т.е. буквально, как нового игрока, я провел бота по всем механикам игры, и рассказал что каждое действие означает. И немного помог ему с ориентированием в этом. Т.е. при начале хода бота, он анализирует свою руку, а точнее карточки в ней. Пробегаясь по каждой карточке, бот смотрит, может ли он ее сыграть, если да, то как и к чему это приведет. Подробнее это выглядит так — если бот может сыграть карту, то он создает действие «Разыграть X карту, за N маны, сейчас у меня M маны». У каждого действия есть своя ценность, т.е. при создании его бот смотрит своё хранилище, если там уже совершалось подобное действие, то его ценность присваевается только-что созданному. Далее, бот смотрит на таланты этой карты, если, допустим, у карты свойство «Убить цель», тогда бот просматривает варианты, кого он может убить, выбирает самое ценное убийство, опять же перебирая варианты через свое хранилище, и добавляет ценность убийства к стартовой цене текущего действия. На пример на 3 ход, у бота 3 маны, у него есть карта за 2 маны, со своими статами и эффектом убийства он видит действие, ценность которого равна 3(«Разыграть эту карту, за 2 маны, когда у меня 3») + 6(«Убить супер-мутанта») = 9. Далее это действие заносится в пул из которого, после всех расчетов, бот будет выбирать что же ему сделать.

Далее бот выбирает из всего списка самое лучшее действие, а в случае, если их несколько(Я добавил погрешность, чтобы бот не совершал постоянно «идеальные» ходы, а иногда и экспериментировал), то берет случайное из лучших(то действие, у которого ценность выше) и совершает его. И если после хода, осталась мана, то смотрит, может ли он сделать еще что нибудь(в действиях так же есть «ничего не делать», на что бот уже поставил свою ценность). В дальнейшем у меня храниться список всех действий и нейронов, задействованных в данной партии, и в зависимости от нанесенного урона врагу и исцеленного здоровья своему герою, ценность этих нейронов повышается на модификатор, в моем случае я поставил, что за 1 ед. нанесенного врагу или исцеленного себе урона повышает ценность всех сыгранных нейронов на 0.1, в то же время при получении урона или же позволению врагу себя лечить «вес» нейронов так же падает на 0.1 за 1 ед. В конце партии, если бот побеждает, он добавляет 10 ценности каждому нейрону, задействованному в этой партии или же отнимает 10, если проиграл.

Ну и после этого всего, я посадил бота играть против себя же и попивая чай, наблюдал за логикой бота, его действиями и т.д.(Уж очень я люблю все эти искусственные интеллекты, пару раз даже для игр жанра ммо и моба писал ботов, но исключительно для себя, ради спортивного интереса)

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

Теперь же, вводя новые механики, мне не приходиться играть самому или отвлекать кого-то, для тестирования и ловли багов, а я могу их тестировать с ботом, параллельно обучая его.

Ну и в конце хотелось бы написать такие заметки, как бы для меня, но и для вас. Что бы я хотел улучшить? Сейчас бот просматривает каждую карту отдельно, потом разыгрывает лучшую и снова просматривает карты. Т.е. у бота отсутствует понимание механики «комбо-хода». На пример, у бота есть карта за 5 маны с ценностью в 50 и 3 карты за 1, 2, 2 маны и ценностями 15, 30, 20, соответственно, и бот конечно же сходит картой за 5, т.к. разовая ценность этого действия будет больше остальных. По сути, бот может прийти к решению на 5 маны разыграть комбинацию из карт, но дорога к этому решению займет на много больше времени и погрешности все же будут. Ну и в целом его можно развивать и развивать, просто пока не ясно, сколько пользы это нам принесет и сколько времени будет затрачено.

Всем удачи!

Дональд Кихо (Donald Kehoe)

За несколько последних десятилетий отрасль компьютерных игр проделала гигантский путь. Все началось с простейших игр, таких как Pong* и Pac-Man*, благодаря которым игроки могли на короткое время забыть о реальном мире. Современные мощнейшие игровые проекты, такие как World of Warcraft* и Call of Duty 4*, являются весьма серьезным хобби для игроков. По данным Ассоциации развлекательного программного обеспечения (ESA), современные геймеры обладают в среднем 13-летним опытом компьютерных игр, они привыкли к тому, что новые игры становятся все более сложными, увлекательными и умными. Для разработчиков основная проблема состоит в том, что необходимо создавать все более захватывающие игры. Для решения этой задачи применяется и постоянно совершенствующийся управляемый компьютером искусственный интеллект (ИИ). Но создание хорошего искусственного игрового партнера, который способен приспосабливаться к действиям игрока, играть на высоком уровне и побуждать игрока совершенствоваться, — весьма непростая задача. Эта статья открывает серию из четырех статей, в которой описываются важнейшие принципы ИИ и способы оптимизации для использования всех возможностей современных многоядерных процессоров.

  • Часть 1. Проектирование и реализация
  • Часть 2. Поиск путей и восприятие
  • Часть 3. Тактический и стратегический ИИ
  • Часть 4. Использование многопоточных вычислений для применения ИИ

Часть 1. Проектирование и реализация

Что такое ИИ для игр?

На простейшем уровне «искусственный интеллект» заключается в моделировании или имитации поведения других игроков или объектов (то есть всех элементов игры, которые могут действовать или с которыми может действовать игрок, — от ракет до аптечек), представляемых искусственным интеллектом. Основной принцип состоит в том, что это поведение имитируется. Другими словами, ИИ для игр является более «искусственным», нежели «интеллектом». Система ИИ может быть крайне проста и представлять собой набор правил или же может быть довольно сложной и выполнять роль командующего армии противника, с которой предстоит сражаться игроку.

В чем ИИ для игр отличается от традиционного представления об ИИ

В традиционных исследованиях в области ИИ целью является создание настоящего интеллекта, или даже искусственного разума, хотя и искусственными средствами. В таких проектах, как Kismet*, Массачусетского технологического института (МТИ) делается попытка создать ИИ, способный к обучению и к социальному взаимодействию, к проявлению эмоций. На момент написания этой статьи в МТИ ведется работа над созданием ИИ, располагающего уровнем способностей маленького ребенка, и результаты этой работы весьма перспективны.

С точки зрения игр подлинный ИИ далеко выходит за рамки требований развлекательного программного проекта. В играх такая мощь не нужна. Игровой ИИ не должен быть наделен чувствами и самосознанием (честно говоря, и очень хорошо, что это именно так!), ему нет необходимости обучаться чему-либо за пределами рамок игрового процесса. Подлинная цель ИИ в играх состоит в имитации разумного поведения и в предоставлении игроку убедительной, правдоподобной задачи, которую игрок сможет решить.

Назначение ИИ в играх

ИИ может исполнять различные роли в играх. Это может быть общий набор правил, определяющих поведение объектов в игровом мире. Также к ИИ следует относить и события с заранее написанным сценарием. Например, в игре F.E.A.R* маленькая страшная девочка, приводящая игроков в ужас и предвещающая события из будущего, является событием с заранее написанными сценариями. Большинству пользователей, размышляющих об ИИ и играх, приходят на ум управляемые компьютером персонажи в многопользовательских играх. Но все эти разнообразные роли могут быть исполнены одним актером — искусственным интеллектом.

Рисунок 1. Игра F.E.A.R. (Vivendi Universal*) с использованием событий с заранее написанным сценарием в качестве ИИ

Что нужно для ИИ в играх

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

Принятие решений

Основным принципом, лежащим в основе работы ИИ, является принятие решений. Для выбора при принятии решений система должна влиять на объекты с помощью системы ИИ. При этом такое воздействие может быть организовано в виде «вещания ИИ» или «обращений объектов».

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

Системы с «обращениями объектов» лучше подходят для игр с простыми объектами. В таких играх объекты обращаются к системе ИИ каждый раз, когда объект «думает» или обновляет себя. Такой подход отлично подходит для систем с большим количеством объектов, которым не нужно «думать» слишком часто, например в шутерах. Такая система также может воспользоваться преимуществами многопоточной архитектуры, но для нее требуется более сложное планирование (подробные сведения см. в статье Ориона Гранатира Многопоточный ИИ).

Базовое восприятие

Чтобы искусственный интеллект мог принимать осмысленные решения, ему необходимо каким-либо образом воспринимать среду, в которой он находится. В простых системах такое восприятие может ограничиваться простой проверкой положения объекта игрока. В более сложных системах требуется определять основные характеристики и свойства игрового мира, например возможные маршруты для передвижения, наличие естественных укрытий на местности, области конфликтов.
При этом разработчикам необходимо придумывать способ выявления и определения основных свойств игрового мира, важных для системы ИИ. Например, укрытия на местности могут быть заранее определены дизайнерами уровней или заранее вычислены при загрузке или компиляции карты уровня. Некоторые элементы необходимо вычислять на лету, например карты конфликтов и ближайшие угрозы.

Системы на основе правил

Простейшей формой искусственного интеллекта является система на основе правил. Такая система дальше всего стоит от настоящего искусственного интеллекта. Набор заранее заданных алгоритмов определяет поведение игровых объектов. С учетом разнообразия действий конечный результат может быть неявной поведенческой системой, хотя такая система на самом деле вовсе не будет «интеллектуальной».
Хорошим примером системы на основе правил является работа дилера (крупье) при игре в блэкджек, будь то компьютерная игра или настоящий блэкджек. У дилера есть простое правило, которое он всегда соблюдает: он обязан брать карты до тех пор, пока не достигнет 17 очков (и обязан остановиться, набрав 17 очков или более). С точки зрения среднего игрока, ситуация выглядит так, как будто дилер намеренно и агрессивно играет против него. Поэтому у игрока складывается представление, что против него играет более опытный соперник, чем на самом деле (если в казино не объявлены другие правила, по которым играют дилеры).

Классическим игровым приложением, где используется такая система, является Pac-Man. Игрока преследуют четыре привидения. Каждое привидение действует, подчиняясь простому набору правил. Одно привидение всегда поворачивает влево, другое всегда поворачивает вправо, третье поворачивает в произвольном направлении, а четвертое всегда поворачивает в сторону игрока. Если бы на экране привидения появлялись по одному, их поведение было бы очень легко определить и игрок смог бы без труда от них спасаться. Но поскольку появляется сразу группа из четырех привидений, их движения кажутся сложным и скоординированным выслеживанием игрока. На самом же деле только последнее из четырех привидений учитывает расположение игрока.


Рисунок 2. Наглядное представление набора правил, управляющих привидениями в игре Pac-Man, где стрелки представляют принимаемые «решения»

Из этого примера следует, что правила не обязательно должны быть жестко заданными. Они могут основываться на воспринимаемом состоянии (как у последнего приведения) или на редактируемых параметрах объектов. Такие переменные, как уровень агрессии, уровень смелости, дальность обзора и скорость мышления, позволяют получить более разнообразное поведение объектов даже при использовании систем на основе правил. Системы на основе правил являются простейшей структурой ИИ. В более сложных и разумных системах в качестве основы используются последовательности условных правил. В тактических играх правила управляют выбором используемой тактики. В стратегических играх правила управляют последовательностью строящихся объектов и реакцией на конфликты. Системы на основе правил являются фундаментом ИИ.

Конечные автоматы в качестве ИИ

Конечный автомат (машина с конечным числом состояний) является способом моделирования и реализации объекта, обладающего различными состояниями в течение своей жизни. Каждое «состояние» может представлять физические условия, в которых находится объект, или набор эмоций, выражаемых объектом. В этом примере эмоциональные состояния не имеют никакого отношения к эмоциям ИИ, они относятся к заранее заданным поведенческим моделям, вписывающимся в контекст игры.

Вот распространенные примеры состояния системы ИИ в игре с элементами скрытных действий.

Рисунок 3. Схема состояний в типичном конечном автомате, стрелки представляют возможные изменения состояния

  • Бездействие. В этом состоянии объект просто пассивно стоит или ходит по заданному маршруту. Уровень восприятия низок. Объект редко проверяет наличие звуков, издаваемых игроком. Только если объект атакован или «видит» игрока прямо перед собой, состояние объекта изменяется на более высокий уровень восприятия.
  • Настороженность. Объект ведет активный поиск посторонних. Он часто вслушивается, стараясь услышать игрока, поле обзора дальше и шире, чем при бездействии. Объект перейдет в состояние заинтересованности, если заметит что­то необычное (что-то, требующее проверки), например открытые двери, тела в бессознательном состоянии, гильзы от патронов.
  • Заинтересованность. Объект знает, что что-то происходит. Для демонстрации такого поведения объект покидает свой обычный пост или маршрут движения и перемещается в область интереса, например к упомянутым выше открытым дверям или лежащим телам. Если при этом объект увидит игрока, он перейдет в состояние тревоги.
  • Тревога. В этом состоянии объект уже заметил игрока и выполняет действия, направленные на то, чтобы преследовать и уничтожить игрока: выход на дистанцию атаки, оповещение других стражников, включение сигнала тревоги, поиск укрытия. Когда противник находится в дальности досягаемости объекта, объект переходит в состояние агрессии.
  • Агрессия. В этом состоянии объект начинает бой с игроком. Объект атакует игрока в любое время, когда это возможно, и старается укрыться в перерывах между атаками (если требуется перезарядить оружие или дать ему остыть). Объект выходит из этого состояния, только если игрок уничтожен (возврат в обычное состояние), игрок выходит за пределы области поражения (возврат в состояние тревоги) или если погибает сам объект (переход в состояние смерти). Если у объекта остается мало здоровья, он может переключиться в состояние бегства (в зависимости от уровня смелости конкретного объекта).
  • Бегство. В этом состоянии объект пытается выйти из боя. В зависимости от игры у объекта может быть помимо основной цели (поиск и уничтожение игрока) еще и дополнительная цель — поиск аптечек для восстановления здоровья или выход из области игры. Обнаружив аптечку, объект может вернуться в состояние тревоги и возобновить бой. Объект, «выходящий» из области игры, просто удаляется.
  • Смерть. В некоторых играх состояние смерти отличается от полного бездействия. При гибели объект может, к примеру, закричать, оповестив находящиеся рядом объекты, или перейти в бессознательное состояние, в котором еще может прийти на помощь врач (в этом случае объект вернется в состояние тревоги).

Существуют как минимум два простых способа реализации конечного автомата с системой объектов. Первый способ: каждое состояние является переменной, которую можно проверить (зачастую это делается с помощью громоздких инструкций переключения). Второй способ: использовать указатели функций (на языке С) или виртуальные функции (С++ и другие объектно-ориентированные языки программирования).

Адаптивный ИИ

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

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

Предсказание

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

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

Можно оценивать историю для определения успешности прежних действий и принятия решения о том, нужно ли изменять тактику. До создания списка прежних действий объект может использовать стандартную тактику или действовать произвольно. Эту систему можно увязать с системами на основе правил и с различными состояниями.

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

Заключение

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

Об авторе

Дональд «DJ» Кихо: Дональд Кихо работает преподавателем программы информационных технологий в Технологическом институте Нью-Джерси и специализируется на разработке игр. Дональд преподает множество курсов по этой программе, включая архитектуру игр, программирование и создание уровней, а также курсы по интеграции трехмерной графики с играми. В настоящее время Дональд работает над получением степени доктора наук в области биомедицинских технологий, где технологии игр и виртуальной реальности применяются для повышения эффективности нервно-мышечной реабилитации.

Дополнительные сведения об оптимизации компиляторов см. в нашем уведомлении об оптимизации.

Черты «умного» искусственного интеллекта в играх

Предсказуемость и адаптация под действия игрока.

В закладки

Марк Браун — автор видеоблога Game Maker’s Toolkit, посвященного геймдизайну — разобрался, чем характеризуется хороший искусственный интеллект в видеоиграх и как заставить игрока поверить, что его враги действительно умны. Редакция DTF перевела и расшифровала ролик.

Когда речь заходит о хорошем искусственном интеллекте в играх, все вспоминают одни и те же проекты: F.E.A.R., Halo 2 и первую Half-Life. Действительно, в них очень умные враги, однако их объединяет ещё кое-что: во всех трёх играх у противников много здоровья и они ведут себя агрессивно. Они всеми силами пытаются выследить и убить игрока. Благодаря этому искусственный интеллект кажется намного умнее, чем он есть на самом деле.

Разработчики из студии Bungie заметили это ещё во время разработки первой части Halo. Студия провела тест с двумя версиями игры. Искусственный интеллект в обеих был одинаковым, но в одной у врагов были уменьшены количество очков здоровья и урон, который они наносили игроку, а в другой — увеличены. В первом случае лишь 8% игроков называли противников в игре «очень умными», а во втором — 43%.

Но агрессивные враги нужны не каждой игре. К такому выводу пришли и в id Software, во время работы на DOOM (2016). Изначально планировалось, что противники будут бежать на игрока, как только его увидят, но из-за этого пользователям приходилось обороняться. Позднее студия изменила поведение врагов, заставив их стоять на месте некоторое время. Это позволяет игрокам начинать атаку.

Как и всё в геймдизайне, ИИ должен работать на создание опыта, задуманного разработчиками. Поэтому агрессивный искусственный интеллект подходит ксеноморфу в Alien: Isolation, но будет не к месту в Batman: Arkham Asylum.

Хороший ИИ реагирует на игрока

Реакция может быть простой, как страх, который испытывают противники в играх про Бэтмена, когда игрок избавляется от их подельников, так и что-то сложное, вроде системы Nemesis в Shadow of Mordor.

В последнем случае орки запоминают столкновения с пользователем. Например, если вы убежите с поля боя, при следующей встрече противник вам это припомнит. Это отличный способ создавать для игрока личные истории.

Реакцией на пользователя может стать и адаптация ИИ его действиям. Она также не обязательно должна быть такой же сложной как в Killer Instinct или Forza. ИИ может следить за игроком так, как это сделано в Metal Gear Solid V: The Phantom Pain.

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

Похожая система реализована и в Alien: Isolation, где ксеноморф получает новые способности так, будто он адаптируется под поведение игрока.

Одним из самых известных примеров того, как ИИ подстраивается под манеру игры пользователя, можно считать систему «режиссёра» в Left 4 Dead. Она позволяет создать правильное настроение или подогнать игроков, натравливая на них тем больше зомби, чем увереннее пользователи продвигаются вперёд.

Но похожая технология использовалась ещё в Pac-man. В этой игре приведения, порой, прекращают гоняться за игроком и отправляются в один из четырёх углов лабиринта.

Хороший ИИ — это не только враги

Некоторые разработчики мухлюют, делая компаньонов под управлением искусственного интеллекта неуязвимыми, как Элизабет в Bioshock Infinite. Если посмотреть на миссии по сопровождению NPC в других играх, то это решение выглядит мудрым. Но дружественные персонажи могут быть не только беззащитными девочками, которые следуют за игроком.

В The Last Guardian вас сопровождает огромный зверь Трику и он сам может сражаться с противниками. Однако он нервничает, когда поблизости находятся витражи, разбить под силу которые только игроку. Таким образом ИИ работает вместе с пользователем.

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

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

#технологии #геймдизайн #long

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать