Машиноведение в игре AI

В старые времена игр я уверен, что простые инструкции switch/case (в некотором смысле) сделали бы очень хорошо для большей части игры "AI". Однако, поскольку игры становятся все более сложными, особенно при 3D-прыжке, необходимы более сложные алгоритмы. Мой вопрос в том, являются ли настоящие алгоритмы машинного обучения (например, обучение усилению), которые используются в игре AI в этот момент? Или это все еще в основном только в исследовательских проектах в университетах (к которым я подвергался)?

Если нет реальных алгоритмов машинного обучения, то что же заставляет кровоточить коммерческую игру AI? Это просто сложные, но статические (не ML) алгоритмы, способные охватить большинство возможностей? И если да, то какие фактические типы алгоритмов используются?

Мне всегда было интересно, спасибо!

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

Ответ 1

РЕДАКТИРОВАТЬ. Обратите внимание: этот ответ уже более полувека - машинное обучение за это время достигло большого прогресса, и, вероятно, также изменилось то, что используется в играх. Исходный ответ следует.

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

Если не фактическое машинное обучение алгоритмов, то что за рулем кровоточащий край коммерческая игра AI? Является он просто очень сложный, но статический (не ML), которые способны охватывают большинство возможностей?

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

Реализация каждого состояния обычно может быть разложена на небольшое количество простых действий, например. двигаться в положение, смотреть в направлении, стрелять в цель и т.д. Эти действия на низком уровне хорошо документированы и широко используются. (например, A * поиск путей, векторная математика для управления и ориентации.) Все эти строительные блоки работают так же хорошо, как в 3D, как это было в 2D, по большей части.

Кроме того, более сложный AI часто используется для написания сценариев, что означает, что поведение предварительно запрограммировано на простом языке программирования для работы в очень конкретной игровой ситуации. Сценарии для конкретных ситуаций могут делать предположения об окружающей среде (например, расположение обложки для скрытия, близость союзников и врагов и т.д.) И могут обеспечить очень конкретные цели соответственно. Более общие сценарии могут запускаться с помощью набора предопределенных типов событий (например, Enemy Seen, Ally Killed, Unidentified Noise Heard) и очень простых ответов, написанных в каждом случае (например, IF self.health > 75% THEN attackNearestEnemy ELSE fleeToSafety).

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

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

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

Ответ 3

Нет смысла иметь ML в играх, по крайней мере, большинство потребительских игр, так как AI очень легко станет слишком тяжелым, чтобы победить и, таким образом, не понравится игроку. Много усилий в игре AI приходится на три части: первая позволяет компьютеру обмануть. то есть ИИ обычно знает, где находится игрок, и знает заранее лучшие маршруты вокруг окружающей среды. Это необходимо в противном случае, ИИ будет постоянно шарить в тупиках, что не очень хорошо. Другое основное усилие в работе ИИ состоит в том, чтобы сделать NPC настолько глупыми, чтобы игрок мог победить. Для AI легко писать, чтобы всегда побеждать игрока (подумайте о Half Life, где вы столкнулись с командой морских пехотинцев), сложная часть уравновешивает внешний вид AI с игровой способностью. Заключительная часть состоит в том, что AI использует только ограниченный объем ресурсов - как с точки зрения времени процессора, так и использования памяти.

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

Пример AI 'cheating': в "Tycoon Transport" компании AI никогда не платили за изменение высоты местности. Я знаю это, потому что многие годы назад я перенес его на Mac.

Первый FPS, который я сделал, AI всегда направлялся к игроку, но направление взвешивалось с использованием случайной выборки из нормального распределения, поэтому большую часть времени направление было направлено на игрока, но иногда направление было способом - это помогло ИИ выйти из мертвых концов. Это было за несколько дней до того, как было достаточное количество попыток для поиска A *.

Ответ 4

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

Ответ 5

Если вам интересно узнать о различных ИИ, мне было весело с Xpilot-AI. "Звездный" бот, созданный людьми, управляющими проектом, был фиксированным контроллером на основе правил, который, в свою очередь, являлся продуктом генетического алгоритма. Вот как это получилось:

  • Они построили базовый бот, основанный на правилах (если мы собираемся ударить по стене, повернуть налево и полностью установить двигатели...)
  • Они разбили контроллер бота на параметры (так что вместо фиксированного "приближающегося к стене" условного вы разделили его на "расстояние до стены < X", "наш заголовок находится в пределах Y градусов стены," и "скорость > Z." )
  • Генетические алгоритмы использовались для обучения оптимальных значений X, Y, Z и т.д.
  • После периода обучения значения были скопированы в источник бота, и он был объявлен "сделано".

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

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

Ответ 6

Я не думаю, что машинное обучение очень распространено в коммерческих играх, но одним из примечательных примеров был Black and White, который был все о обучая домашнее животное, и заставляя жителей игры верить в игрока.

Ответ 7

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

http://nerogame.org/

Ответ 8

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

http://en.wikipedia.org/wiki/Game_AI

Ответ 9

Alpha-Beta Обрезка ведет настольные игры, в том числе Шахматы - более простые игры. Это способ сократить пространство состояний, чтобы обеспечить эффективный поиск. Варианты A * search позволяют исследовать доску в симуляциях роботов и т.д. Оба являются "классическими AI", а не алгоритмами машинного обучения как таковыми. Игрок Samuel Checkers и TD-Gammon являются примерами используя усиление обучения для игры в шашки и нарды соответственно.

Ответ 10

В дополнение к моему ответу выше, есть статья об этом:

Машинное обучение в цифровых играх: обзор

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

Ответ 12

Часто в AI-движке не должно быть никакого реального обучения (см. ответ Kylotan).

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

Вы можете взять Tic Tac Toe в качестве простого примера. Несколько месяцев назад я написал игру Tic Tac Toe с AI. Я просто дал компьютерные знания о правилах и как заблокировать выигрышный ход - это он. Затем вы можете настроить его, чтобы играть в себя и за кулисами, поддерживая список прошлых ходов и распознавая паттерны, когда он идет, становясь "умнее", когда он набирает опыт.

После 10 000 игр или около того, если вы затем сыграете сами, это может быть трудно победить. ИИ в этой игре можно было бы оптимизировать, чтобы учиться намного быстрее, если бы я учитывал отражения и вращение доски. Но это был еще забавный рабочий пример учебного AI-движка.

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