Основные технологии создания игрового ИИ

В зависимости от сложности игры, система игрового искусственного интеллекта может быть крайне проста и представлять собой лишь набор правил или иметь достаточно сложные алгоритмы работы (например, если стоит задача по управлению многотысячной армией в ходе сражения). Рассмотрим некоторые базовые основы, которыми руководствуются разработчики при создании игры с элементами искусственного интеллекта[5].

Первая технология, которая, несмотря на свою простоту, оказывается очень мощной и применяется во многих играх, — это конечные автоматы (finite state machine). Конечные автоматы (FSM) применяются для создания игровых агентов, которые в течение игры могут обладать различным (конечным) числом состояний. Для определения такой системы нужно задать два ключевых элемента: множество состояний и множество правил перехода системы из одного состояния в другое. Состояния имеют вид наподобие: иду, стою, стреляю, бездельничаю и т.д. Правила перехода: если иду и вижу врага, тогда начинаю стрелять; если иду и устал, тогда нужно немного постоять, отдохнуть. Конечные автоматы являются, пожалуй, одной из самых старых и проверенных временем техник создания ИИ, особенно в FPS. Многими любимые Doom, Quake и Wolfenstein, — все имели ИИ, построенный на основе конечных автоматов. Конечные автоматы бывают полностью детерминированными и недетерминированными. Различие состоит в том, что в недетерминированных переходы между состояниями являются не такими жесткими и имеют элемент случайности, непредсказуемости [9].

Есть ситуации, в которых довольно проблемно поведение игрового агента выразить в терминах конечных автоматов. Например, когда из каждого состояния агент может переходить во все другие состояния или когда агент может пребывать в двух состояниях одновременно («идет» и «стреляет»). В таких случаях можно применить другую технологию — систему правил (rule system). Набор заранее заданных алгоритмов определяет поведение игровых объектов. С учетом разнообразия действий конечный результат может быть неявной поведенческой системой, хотя такая система на самом деле вовсе не будет «интеллектуальной». Все поведение агента описывается набором простых правил вида: условие->действие. Сначала выбираем первое правило. Если условие в нем истинно, выполняем указанное действие и выходим (прекращаем проверку последующих условий). В противном случае переходим к следующему правилу, если таковые имеются. На практике системы правил реализуются двумя способами. Первый — дерево принятия решений (decision tree). Другой способ реализации системы правил опирается на скриптовые языки и является более гибким, так как в этом случае вся логика работы ИИ отделена от основного кода движка. Скриптовые системы правил применяются шире всего в стратегических играх, например Age of Empires [9].

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

Следующие технологии более современные и берут свое начало из биологии — совокупности наук о живой природе. Применять генетические алгоритмы в играх начали сравнительно недавно. Они хорошо подходят в ситуациях, в которых нужно создать разнообразие существ, несколько схожих по внешнему виду и/или поведению. Примером тому могут служить пешеходы в гоночных симуляторах или население некого виртуального города/мира (как в GTA или The Sims).

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

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

1) на вход системы подают сигналы и результаты, которые нужно получать при таких входах;

2) на вход подаются сигналы определенного вида, которые система должна самостоятельно структурировать и научиться отличать от других (самообучение). На математическом уровне обучение происходит путем подбора системой нужных весовых коэффициентов (weights) в уравнениях. После некоторого времени обучения нейронная сеть уже готова к использованию, а также последующему обучению. Революционность нейронных сетей применительно к игровому ИИ состоит в том, что теперь виртуальные соперники получают возможность самообучаться. К примеру, вражеский солдат, получив несколько пулевых ранений во время отчаянной попытки лобовой атаки, запомнит, что от пуль больно и еще раз «так» лучше не делать. Или он сможет по чуть-чуть перенимать тактику ведения боя у игрока [9].