Janusz Grzyb - Artificial Intelligence in Games

Вступление

Элементы искусственного интеллекта, используемые в компьютерных играх, прошли длинный путь эволюции. В самом начале своего развития, эти системы основывались на наборе элементарных правил, написанных непосредственно в коде или их поведение регулировалось скриптами, интерпретируемыми с помощью кода. Все это базировалось на выборе наиболее важного рандомного фактора в процессе выбора соответствующего поведения. Свидетелями этого является рождение таких игр как River-Raid, Donkey-Kong, Boulder-Dash, и множество других игр для восьмибитных машин. Следующий этап развития был представлен простым методом компьютерной науки - Finite State Machine method, который известен до сих пор. Этот метод описывал поведение врагов под управлением компьютера. Однако требования игроков росли изо дня в день, а комьютерные игры становились все более и более сложными, благодаря использованию все более продвинутых компьютерных алгоритмов. На заре эпохи RTS игры (Real Time Strategy) вызвали наибольший интерес к алгоритмам, для нахождения оптимального пути между двумя точка на карте. Быстрый технический процесс и быстрое увеличение процессорной мощности домашних компьютеров стали катализаторами для разработки приложений использующих искусственный интеллект в компьютерных играх. Первым играм и алгоритмам искусственного интеллекта пришлось довольствоваться ограниченными возможностями машин того времени, с процессорной мощностью не более 2000 МГц. Но эти компьютеры принесли новые возможности и новые приложения. После того как процессоры 386/486 стали стандартом для домашнего пользования, программисты получили новые возможности, которые привели к гонке между компаниями, разрабатывающими игры. В течении долгого времени главным показателем качества компьютерных игр было качество трехмерной графики, однако вскоре стало понятно, что красивая графика, звук и анимация это еще не все. В последнее время одним их наиболее важных элементов компьютерной игры стал искусственный интеллект. Процесс выпуска компьютерных игр претерпел значительных изменений. Планирование модулей искусственного интеллекта стало выходить на первый план. И все чаще и чаще как минимум 1 член команды все свое время, начиная с начала проекта, занимался разработкой и проектированием модулей искусственного интеллекта. В настоящее время, когда в большинстве домой используются высокопроизводительные компьютеры, с тактовой частотой процессора более 4-5 ГГц, было бы разумно дать возможность компьютерным играм использоваться наиболее продвинутые методы искусственного интеллекта: нейронные сети, генетические алгоритмы и нечетную логику. В эпоху Интернета и сетевых игр, системам искусственного интеллекта в играх поставили новую задачу: компьютерный игрок должен в своем поведение и стратегии игры быть неотличим от реального игрока, по ту сторону монитора.

Рубежи развития искусственного интеллекта в играх

При обсуждении эволюции искусственного интеллекта в компьютерных играх, необходимо упомянуть игры, которые стали вехами развития интеллектуального поведения в играх. Одни из самых популярных игр прошлого столетия была WarCraft – игра, разработанная компанией Blizzard Studio. Это была первая игра, в которой был использован алгоритм поиска пути в таких огромных масштабах, что несколько сотен юнитов участвовали в массовых сражениях. SimCity, созданная компанией Maxis, была первой игрой, доказывающая возможности использования A-Life технологий в сфере компьютерных игр. Другим этапом был выход игры Black&White, созданной в 2001 компанией Lionhead Studios, в которой технологии компьютерного обучения игроком были использованы впервые.

Искусственный интеллект в FPS играх

FPS (First-person shooter) игры обычно были реализованы с помощью многоуровневой структуры систем искусственного интеллекта. Нижние уровни были предназначены для самых элементарных задач, таких как нахождение оптимального пути к цели или проигрывание анимации персонажа. Более высокие уровни несли ответственность за тактическое мышление и выбор поведения, которому ИИ агент должен следовать, в соответствии со своей текущей тактикой. Системы нахождения пути обычно базировались на графах, описывающих мир. Каждая точка графа представляла логическую локацию (такую как комнату в здании или фрагмент поля боя). Когда был получен приказ начать движение в другую точку, ИИ агент просчитывает, используя граф, последующие точки движения для достижения нужной цели. Двигаясь между точками, система ИИ может также использовать локальные пути, которые дают возможность определить точный путь между двумя точками, что бы избежать динамически появляющихся препятствий. Система анимации проигрывает выбранную анимацию на соответствующей скорости. Она также должна позволять проигрывать различные анимации для различных частей тела: например, солдат может бегать и стремиться к врагу, стрелять и перезаряжать оружие, во время бега. Игры такого типа часто используют инвертированную систему кинематики. Эта система может отдельно высчитывать параметры анимации руки так, что рука может, к примеру, захватить объект со стола. Задача модулей высокого уровня – выбрать поведение в зависимости от ситуации, например, должен ли агент патрулировать местность, вступить в бой, или начать поиск противника на карте. Как только ИИ система решила, какое из поведение наиболее приоритетно в данной ситуации, низкоуровневые модули выбирают лучшую тактику для выполнения задачи. Получив информацию о том, что должен сделать агент, например, вступить в бой, он пытается определить подход, который является лучшим на данные момент – например, должен ли он подкрасться к оппоненту, спрятаться в углу и ждать противника, или, возможно, просто бежать и него и стрелять вслепую.

Представление мира в FPS играх

Рисунок 1 – Представление мира в FPS играх

Искусственный интеллект в RTS играх

В RTS (Real-time strategy) играх можно выделить несколько модулей системы искусственного интеллекта и его многоуровневой структуры. Одним из базовых модулей является эффективная система нахождения пути. Иногда, эта система должна просчитать пути для сотен юнитов на карте за доли секунды - и более того, не просто найти путь из точки А в точку Б, а также определить пересечения с препятствиями и юнитами на поле боя. Такие алгоритмы основываются на игровой карте и представляются прямоугольной сеткой, с фиксированными размерами элементов области. На высоком уровне системы ИИ иерархии расположены модули отвечающие за экономику развития или , что очень важно, модули анализа игровой карты. Этот модуль анализирует свойства местности. Анализатор местности решает, когда должен быть построен город и как расположить укрепления.

Представление мира в RTS играх

Рисунок 2 – Представление мира в RTS играх

Искусственный интеллект в спортивных играх

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

Способ представления сегментация и оптимальности трассы в гоночных играх

Рисунок 3 – Способ представления сегментация и оптимальности трассы в гоночных играх

Способ представления сегментация и оптимальности трассы в гоночных играх

Рисунок 4 – Способ представления сегментация и оптимальности трассы в гоночных играх