Статья опубликована в рамках: CXXVII Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 10 июля 2023 г.)
Наука: Информационные технологии
Скачать книгу(-и): Сборник статей конференции
дипломов
СПОСОБЫ ПРИМЕНЕНИЯ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА В ИГРАХ
WAYS TO USE ARTIFICIAL INTELLIGENCE IN GAMES
Ilya Gaevsky
student, Department of Computer Engineering, Penza State University,
Russia, Penza
АННОТАЦИЯ
В статье обсуждаются некоторые области применения искусственного интеллекта, с которыми могут столкнуться разработчики игр в процессе создания игры. В статье основное внимание уделяется трем направлениям, которые, безусловно, окажут существенное влияние на индустрию разработки игр в ближайшем будущем, а именно на способы управления неигровыми персонажами по карте, на автоматическую генерацию ландшафта, формирование моделей поведения персонажей.
ABSTRACT
The article discusses some of the applications of artificial intelligence that game developers may encounter in the process of creating a game. The article focuses on three areas that will certainly have a significant impact on the game development industry in the near future, namely, the ways of managing non-player characters on the map, the automatic generation of the landscape, the formation of character behavior models.
Ключевые слова: искусственный интеллект, игровой искусственный интеллект, игровое приложение, агент, принятие решение искусственным интеллектом, ии, ai, artificial intelligence.
Keywords: artificial intelligence, game artificial intelligence, game application, agent, decision-making by artificial intelligence, ai, ai, artificial intelligence.
Введение
Игры всегда были популярной частью человеческой жизни. Область исследований и использований искусственного интеллекта (ИИ) в игровой индустрии за последние 20 лет претерпела немало крупных прорывов. В последние годы искусственный интеллект стал важнейшим инструментом для разработчиков игр, позволяющим улучшить игровой процесс и создать более увлекательный геймплей. С внедрением его, видеоигры эволюционировали, включив в себя адаптивную среду и сложных противников, способных обучаться и реагировать на действия игроков в режиме реального времени. ИИ начали применять в самой разработке игр, чтобы ускорить этот процесс, например, создание карты при помощи, создание 3D-моделей или написание сценариев сюжета.
Целью исследования является рассмотрение и разбор основных способов применения и реализаций искусственного интеллекта в играх и их разработки.
Методология проектирования неигровых персонажей
Агент — это все, что можно рассматривать как воспринимающее окружающую среду через сенсоры и воздействующее на эту среду через эффекторы. В дальнейшем понятия агент, NPC, бот, неигровой персонаж - будут рассматриваться как синонимы. Для этого исследования разработанный NPC должен был удовлетворять следующим свойствам:
- Автономность: Агенты действуют без прямого вмешательства человека или других лиц и имеют определенный контроль над своими действиями и внутренним состоянием. NPC кажутся более подлинными, поскольку они могут действовать независимо, без вмешательства. Это также может дать NPC возможность учиться.
- Реагирование: Агенты воспринимают окружающую их среду и своевременно реагируют на происходящие в ней изменения. NPC должны реагировать на раздражители из своего окружения. Некоторые ситуации требуют инстинктивных реакций, например, когда NPC подвергается нападению. Реактивные архитектуры подходят для интеллектуального управления из-за их надежности и простоты, часто обеспечивая основу для более сложных методов.
Активность: Агенты не просто действуют в ответ на свое окружение, они также могут проявлять целенаправленное поведение, проявляя инициативу. Например, NPC ищет игрока, если этот игрок покидает поле зрения, и двигается в сторону, где последний раз наблюдал игрока.
С точки зрения проектировщика крайне важно понимать тип среды, в которой будет использоваться агент. Классификация среды может помочь направить процесс проектирования агента. Это помогает установить ключевые компоненты, необходимые для правильной работы агента в этой среде.
Полностью или частично наблюдаемая среда. При полностью наблюдаемом сенсоры агента предоставляют ему доступ к полному состоянию среды в каждый момент времени или, по крайней мере, ко всем аспектам состояния среды, имеющим отношение к решениям агента. следующее состояние среды полностью определяется текущим состоянием и действием, выполняемым агентом. При частично наблюдаемом окружении агенту не доступна полная информация об игровой карте. Он может наблюдать только то, что происходит в радиусе его видимости, настроенном при разработке. Агент не может опираться на то, что произошло в прошлом при принятии решений. Все решения построены на текущих событиях, происходящих в его поле зрения.
Одноэтапное и последовательное планирование. При планировании единственного шага агент определяет свою среду, а затем выбирает и выполняет действие. Эти циклы, обычно называемые «чувство-план-действие», не зависят от предыдущих действий и основаны исключительно на текущей информации. Многие задачи классификации являются одношаговыми. Например, агент, которому требуется обнаруживать дефектные детали на сборочной линии, будет основывать свое решение независимо от предыдущей или следующей оцениваемой детали. В последовательных средах решение, принятое в текущем цикле «чувство-план-действие», может повлиять на все будущие решения. Примеры последовательной среды включают навигацию по лабиринту, игру в шахматы, вождение автомобиля, управление производственной линией завода или ведение беседы.
Принятие решений неигровыми персонажами
В играх искусственный интеллект может быть реализован различными методами. Искусственный интеллект играет разные роли в игре, но большая его часть определяется как получение информации из окружающей среды (входных данных) и принятие необходимых действий на основе целей. Эти шаги можно резюмировать как "чувствуй, думай и действуй".
Обычно в играх используется конечный автомат (FSM) или деревья поведения (BT) для реализации поведения персонажей, но есть и некоторые другие доступные методы. Машинное обучение - это один из способов создания NPC. Алгоритмы ML могут извлекать уроки из своих прошлых игр и становиться лучше с каждой проходящей игрой. Эти алгоритмы могут получить лучше всего это получается очень быстро. Например, для такой игры, как змейка, требуется чуть менее 200 ходов, чтобы ошибка составила менее 30%. Этот метод лучше, чем FSM, но проблема в том, что агент почти идеален, и игра против может показаться сложной и несправедливой. В ситуации, когда алгоритмы ML применяются к неигровым персонажам, игрок столкнется с чрезвычайными трудностями, играя против них. Другая проблема заключается в том, что, когда игры становятся больше, возможных вариантов исходов становится больше и в игре присутствует большая среда для взаимодействия, может потребоваться много времени для обучения агента. Таким образом, внедрение этого метода может оказаться осуществимым не везде.
Вместо этого можно использовать конечный автомат состояний или иерархический конечный автомат состояний на основе компонентов, где мы можем реализовать сложную структуру для нашего NPC с конечным набором правил. Это работает в ситуациях, когда в игровом мире много параметров, и нужно использовать только определенный параметр для агентов.
Конечный автомат (FSM) — математическая абстракция, модель дискретного устройства, имеющего один вход, один выход и в каждый момент времени находящегося в одном состоянии из множества возможных. Является частным случаем абстрактного дискретного автомата, число возможных внутренних состояний которого конечно.[3] FSM обычно разрабатывается с использованием графика, где узел (вершина) представлен в виде состояний, а ребра - в виде линий перехода. В FSM состояние может представлять действие или состояние для управляемого агента. Все состояния связаны по крайней мере с одним другим состоянием, так что до него можно добраться из какого-либо состояния. Переход из одного состояния в другое происходит, если выполняются заданные условия. Наконец, при построении FSM нужно определиться со входными состоянием и следить, чтобы ни одно состояние не было недоступным. Игровой цикл продолжает обновлять FSM, проверяя, выполнено ли условие перехода или нет. На рисунке 1 приведена диаграмма простого конечного автомата. [1]
Рисунок 1. Конечный автомат
Долгое время FSM был полезным и почти идеальным для агентов, но есть некоторые недостатки, которые делают FSM сложным. В реальных играх NPC должны учитывать огромной количество состояний и некоторые из них должны быть учтены одновременно. Таким образом, по мере роста сложности количество состояний начинает быстро увеличиваться, что затрудняет управление. Если нужно внести хотя бы небольшое изменение, нужно рассмотреть все его зависимые переходы. Чтобы решить эту проблему, мы используем иерархический конечный автомат (HFSM).
HFSM включает в себя иерархию, в которой FSM вложены в другой FSM. Группируя состояния вместе с одинаковыми исходящими переходами, можно сократить количество переходов. Это первоначальная интерпретация иерархии на государственном уровне. Вложенные состояния будут принимать только подмножество алфавита ввода/вывода. Если мы хотим внести изменения, нам нужно редактировать только на определенном уровне иерархии и ниже него. Это облегчает внесение изменений и понимание кода, а также снижает сложность. На рисунке 2 приведен пример того, как может выглядеть структура иерархического конечного автомата.
Рисунок 2. Иерархический конечный автомат
Управление неигровыми персонажами
Разработка ИИ для неигровых персонажей начинается на разработке простого поведении движения, которое позволило бы им легко перемещаться по окружающей среде, не сталкиваясь с игровыми препятствиями. Использование путевых точек, предварительно размещенных в игровой среде, позволяет NPC эффективно перемещаться без необходимости непрерывного расчета коллайдеров, с которыми он может вступить в контакт.
Навигация по пути для NPC в играх — сложная проблема, поскольку миры, в которых они обитают, сложны и могут быть динамичными. Навигация по пути для NPC жизненно важна для игр с большими средами, которые нужно исследовать и перемещаться. Чтобы неигровые персонажи в игре выглядели более правдоподобно, они должны сначала иметь возможность относительно легко ориентироваться в этом мире.
Еще одно соображение заключается в том, что используемые алгоритмы должны быть недорогими в вычислительном отношении для работы в режиме реального времени. Существует два различных подхода к решению навигационной задачи. Первым решением является агентно-ориентированные методы, при которых используется только локальная информация об окружающей среде, воспринимаемая посредством обнаружения столкновений или синтетического зрения. Изначально информация о структуре глобальной среды отсутствует. Основываясь на информации об окружающей среде таким образом, для определения оптимального пути используются методы, ориентированные на окружающую среду. Используя эти методы, бот перемещается по карте от узла к узлу вдоль ребер, которые обычно хранятся в некоторой дискретной структуре, такой как граф, используемый для планирования путей. При разработке интеллектуального NPC необходимо учитывать планирование пути.
Алгоритм A* является одним из наиболее известных алгоритмов планирования пути, который можно применять к метрическому или топологическому конфигурационному пространству. Этот алгоритм использует комбинацию эвристического поиска и поиска по кратчайшему пути. Базовый алгоритм A*, используемый для пространства конфигурации сетки, ограничен 8-связностью. Это означает, что он может найти путь, основанный на соединении между ближайшими возможными ячейками. Однако это не совсем полезно, так как между соединенными ячейками может быть много свободного места на больших расстояниях, и эти ячейки могут быть не связаны зигзагообразным стилем. Поэтому вводится поиск во всех углах.
Алгоритм, которые использует поиск под любым углом, это Basic Theta*. Basic Theta* является расширением алгоритма A*, который заключается в проверке видимости между ячейками. Это означает, что если тестируемая ячейка имеет прямой доступ к ячейке, входящей в выбранную последовательность, ячейки между ними игнорируются. Таким образом, только клетки, который робот должен пройти, найдены. Эти ячейки характеризуются и изменением ориентации робота.
Искусственный интеллект для разработки процедурной генерации ландшафта
Изучение игрового мира, в котором происходит движение, важно при разработке NPC. Большинство сред делятся на два компонента: структуру и детали. Структура играет важную роль в том, как работает физический движок, все движение определяется структурой. В то время как детали носят косметический характер, они включают в себя игровые объекты, на которые не влияет физический движок, и аналогичным образом не влияют на другие игровые объекты с коллайдерами.
Процедурная генерация контента может снизить затраты на наем новых сотрудников, чтобы создавать контент вручную. Кроме того, можно установить некоторые критерии, которым должен соответствовать сгенерированный контент, например, приспособить созданный уровень к стилю игры. Если процесс генерации осуществляется в режиме реального времени и контент достаточно разнообразен, то можно создавать бесконечные игры, которые предлагают совершенно новый игровой опыт каждый раз, когда он начинается новая игра.
При работе с процедурным генерированием контента и его процедурами можно провести множество различий. Что касается времени создания контента, то это может быть во время выполнения игры или во время разработки. Если говорить об основной цели генерируемого контента, то это может быть необходимо для развития игры, следовательно, обязательно следить за тем, чтобы контент был валидным, или он должен быть необязательным, как украшение уровней.
Другой вопрос — природа алгоритма генерации, то есть имеем ли мы чисто стохастический алгоритм, в котором контент создается из случайного начального числа, или, наоборот, детерминированный алгоритм, где контент генерируется вектором параметров.
Глядя на цели, которые должны быть достигнуты, процесс создания может быть выполнен конструктивно, обеспечивая достоверность контента на протяжении всего процесса. Другой вариант — следовать схеме генерации и тестирования, при которой создается большое количество контента, который проходит этап проверки и последующего удаления того, что не соответствует ограничениям. Последняя схема в настоящее время наиболее активно используется сообществом и основана на поиске содержания в пространстве возможных решений. Проверка осуществляется путем присвоения значений содержанию, чтобы его уровень качества оценивался количественно в соответствии с целями. Помимо карт и уровней существуют и другие примеры контента, которые могут генерироваться процедурно, такие как музыка, сюжеты для ролевых игр, правила игры и квесты.
Процедурная генерация игрового ландшафта может быть затруднена из-за необычных форм и узоров, встречающихся в мире природы. Одной из ключевых проблем создания ландшафта является имитация того, как естественный вид ландшафта не создается из евклидовых форм, таких как квадраты, треугольники и т. д. Вместо этого ландшафт обычно описывается как фрактальный по своей природе.
Термин «фрактал» первоначально был придуман Бенуа Мандельбротом, чтобы помочь объяснить некоторые из нерегулярных паттернов, которые обнаруживаются в аспектах мира природы, таких как береговые линии, облака и кора деревьев. У фракталов есть две фундаментальные черты: они самоподобны и хаотичны. Самоподобие относится к тому, как фрактал может быть разделен на более мелкие версии самого себя. Кроме того, фракталы также часто описываются как хаотические из-за их бесконечной сложности; фрактальные узоры являются продуктами рекурсии и, как следствие, могут рассматриваться в бесконечном количестве масштабов. С помощью компьютеров можно создавать кажущиеся случайными фрактальные ландшафты и текстуры с помощью функций шума; термин, который относится к набору инструкций, которые можно использовать для генерации псевдослучайного шума.
Данные ландшафта, созданные функцией шума, могут быть визуализированы напрямую и/или использованы для создания карты высот. Карта высот — это черно-белое изображение, которое можно использовать для хранения значения высоты каждой точки местности с использованием одного или нескольких цветовых каналов. Например, карта высот в градациях серого может интерпретировать данные о высоте как яркость, в результате чего белый цвет является самой высокой возможной точкой, а черный — самой низкой.Важно отметить, что многие шумовые функции по своей сути не являются фрактальными. Некоторые алгоритмы, такие как Value Noise и Perlin Noise, вместо этого используются в сочетании с дробным броуновским движением для создания фрактальных изображений.
Некоторые из основных функций шума, которые ранее bспользовались в процедурной генерации игрового ландшафта, включают: Алгоритм Diamond-Square, Value Noise, Perlin Noise, Симплексный шум и Worley Noise. В следующей таблице [Таблица I] показано сравнение между этими функциями шума на основе их скорости, требований к памяти и качества шума, который они производят.
Таблица 1
Сравнение алгоритмов процедурной генерации
Алгоритм |
Скорость |
Качество |
Требование памяти |
Diamond-Square |
Высоко |
Средне |
Высоко |
Value Noise |
Медленно |
Средне |
Низкая |
Perlin Noise |
Средне |
Высоко |
Низкая |
Симплексный шум |
Средне |
Высоко |
Низкая |
Worley Noise |
Переменная |
Средне |
Переменная |
За исключением алгоритма Diamond-Square, все упомянутые здесь функции шума не являются изначально фрактальными и обычно используются вместе с дробным броуновским движением для создания фрактальных изображений.
Наиболее подходящая функция шума зависит от системы генерации рельефа. Если важна скорость, алгоритм Diamond-Square является отличным вариантом, поскольку он намного быстрее, чем все другие алгоритмы, а его фрактальная природа означает, что для создания фрактальных изображений не требуется несколько октав шума. Value Noise — отличная альтернатива, если памяти не хватает, а также легко настраивается благодаря своей простоте. Worley Noise, тем временем, обеспечивает шум, который визуально намного более уникален, чем другие функции шума, и может быть желателен в определенных сценариях. Однако для общего качества симплексный шум является идеальным выбором, хотя классического шума Перлина, вероятно, будет достаточно в подавляющем большинстве случаев.
Список литературы:
- Bourg, D. M. & Seeman, G., 2004. AI for Game Developers. O’Reilly.
- Buckland, M., 2005. Programming Game AI by Example. Wordware Publishing.
- Wikipedia // Конечный автомат [электронный ресурс] — Режим доступа. — URL: https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D1%8B%D0%B9_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82
- Champandard, A. J., 2003. AI Game Development: Synthetic Creatures with Learning and Reactive Behaviours. New riders publishing
- Orkin, J., 2005. Agent architecture considerations for real-time planning in games. In Proceedings of the 1st artificial intelligence and digital entertainment conference.
- Zhukov, S. & Iones, A., 2000. Building the navigational maps for intelligent agents. Computers & Graphics
дипломов
Оставить комментарий