Unity: искусственный интеллект в мире книг

Games, Design, and Play (2016)

Авторы: Colleen Macklin, John Sharp.

Книга подробно рассказывает о работе над инди-проектами — в теории и на практике. Охвачено множество аспектов: от создания концепции до вывода игры в продакшн.

Обратите внимание: это не о разработке, а о гейм-дизайне. По выражению авторов, «архитекторы проектируют здание, но не строят его»

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

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

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

Примеры использования AI в Unity

AI в Unity может быть использован для создания различных типов ботов, которые могут выполнять различные задачи в игре. Ниже приведены некоторые примеры использования AI в Unity:

  1. Боты-враги

Боты-враги могут быть использованы в играх, чтобы создать более реалистичные боевые сцены. Они могут использовать NavMesh, чтобы двигаться по игровому миру и Behavior Tree, чтобы определить, как они должны атаковать игрока. Также можно использовать нейронные сети, чтобы обучить ботов более эффективно стрелять или использовать противников.

  1. Боты-союзники

Боты-союзники могут помочь игроку в выполнении задач и боевых действий. Они могут использовать NavMesh, чтобы следовать за игроком и Behavior Tree, чтобы определить, как они должны помогать. Например, бот-медик может использовать нейронную сеть, чтобы определить, когда нужно использовать аптечки или лечить игрока.

  1. Боты-торговцы

Боты-торговцы могут использоваться в играх, чтобы продавать игрокам различные предметы и улучшения. Они могут использовать NavMesh, чтобы перемещаться по магазину и Behavior Tree, чтобы определить, какие товары они должны предлагать и по какой цене. Можно также использовать нейронные сети, чтобы определить, какие товары наиболее востребованы у игроков и как изменять цены, чтобы максимизировать прибыль.

  1. AI управление транспортом

AI может быть использован для управления транспортом в играх, таких как гоночные симуляторы. Он может использовать NavMesh для определения маршрута и Behavior Tree, чтобы определить, какие маневры нужно выполнить в зависимости от условий на дороге. Нейронные сети могут также использоваться для определения оптимальной скорости и траектории движения.

  1. AI управление NPC

AI может быть использован для управления неписями (NPC) в играх. Они могут использовать NavMesh, чтобы перемещаться по игровому миру и Behavior Tree, чтобы определить, как они должны взаимодействовать с игроком и другими NPC. Нейронные сети могут также использоваться для определения оптимальных ответов на диалоговые выборы игрока.

Artificial Intelligence and Games (2018)

Авторы: Georgios N. Yannakakis, Julian Togelius.

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

По структуре и содержанию перед нами университетский учебник. Здесь нет кода, но за каждой главой следуют упражнения, полезные ссылки и рекомендации, что почитать по теме. Вы узнаете, где в интернете брать для анализа данные о тысячах игр и о поведении игроков. За дополнительными ресурсами для выполнения практических заданий нужно заходить на сайт книги — gameaibook.org.

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

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

Постановка задачи.

Задача алгоритмов обеспечения поведения — обеспечивать игровым объектам то поведение, которого от них требуют гейм-дизайнеры

Обращаю ваше внимание, что задача разработчика Unity в этих случаях — не самовыразиться путём изобретения какого-то особо извращённого алгоритма, а предоставить команде удобный инструмент для управления игровым контентом, имеющий:

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

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

Game Engine Architecture (2018)

Третье издание книги Джейсона Грегори «Game Engine Architecture» — обновленный рассказ профессионала игровой индустрии о работе над игровыми движками. Автор подробно описывает подходы, применяемые реальными студиями, где он трудился, в том числе Electronic Arts и Naughty Dog Inc. Сам он разрабатывал движки к серии шутеров Uncharted для PlayStation 3 и 4. Чтобы понимать материал, не обязательно быть опытным игроделом, но нужно знать C++.

Первая редакция книги вышла в 2009 году, вторая — в 2014. Особый акцент в новом издании сделан на параллельные вычисления и их применение в играх. Автор убежден, что даже в работе с высокоуровневым языком программист обязан понимать все происходящее на нижних уровнях, в том числе на аппаратном. Это сужает аудиторию книги, но если вы разделяете такой подход, у вас будет возможность «копнуть глубже» и разобраться в вопросах, которые вы раньше оставляли на потом.
Если вы задумали написать свой движок или разобраться, как работает чужой, «Game Engine Architecture» поможет в этом.

Ограничения использования AI в Unity

Несмотря на все преимущества использования AI в Unity, есть и ограничения, которые нужно учитывать:

  1. Сложность

Работа с AI может быть сложной и требует определенных знаний и навыков. Некоторые алгоритмы и технологии могут быть сложными для понимания и реализации.

  1. Ресурсоемкость

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

  1. Недостаток реалистичности

AI может не всегда создавать абсолютно реалистичное поведение для ботов. Например, AI может не учитывать эмоции и мотивации, что может сделать поведение ботов менее реалистичным.

AI Враг в UNITY 3D | pt.1

Что выбрать?

Подходите к проектированию игрового ИИ комплексно. С одной стороны, вам нужно обеспечить геймдизам удобные и простые средства конфигурирования поведения вашего внутриигрового зверья. С другой стороны, вам нужно уложиться в сроки и, будем уж говорить прямо, не перетрудиться. Также не забывайте что геймдизы — не разработчики, у них своих сложностей выше головы. Поэтому везде где возможно, применяйте наиболее простые решения. Для простых игр будет оптимальным применение возможностей анимации Unity и набора простых скриптов. Для игр сложнее можно, в зависимости от жанра игры, для обеспечения сложных поведений, добавлять к этой комбинации либо ролевую систему, либо конечные автоматы. Браться за алгоритмы ТАУ или нейросетевой ИИ в играх обычно не имеет смысла.

Структура книги[]

Глава 1

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

Глава 2

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

Глава 3

Мы превратим демонстрационную программу в шутер от первого лица, продемонстрировав метод испускания луча и основы искусственного интеллекта. Испускание луча (мы создаем в сцене линию и смотрим, с чем она пересечется) требуется во всех вариантах игр.

Глава 4

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

Глава 5

Научит вас создавать в Unity двумерные игры. Хотя изначально этот инструмент предназначался исключительно для создания трехмерной графики, сейчас в нем прекрасно поддерживается двумерная графика.

Глава 6

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

Глава 7

Знакомит с новейшей GUI-функциональностью в Unity. Пользовательский интерфейс требуется всем играм, а последние версии Unity могут похвастаться улучшенной системой создания пользовательского интерфейса.

Глава 8

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

Глава 9

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

Глава 10

Учит взаимодействию со Всемирной паутиной. Вы узнаете, как отправить и получить данные с помощью стандартных технологий, таких как HTTP-запросы на получение с сервера XML-данных.

Глава 11

Вы научитесь добавлять в игры звук. В Unity замечательно поддерживаются как короткие звуковые эффекты, так и долгие музыкальные фонограммы; оба варианта звукового сопровождения критически важны почти для всех видеоигр.

Типы АОП.

Физика, частицы, шейдеры и анимации. Вы будете шокированы, но примерно в 25% задач для того чтобы обеспечить поведение того или иного игрового объекта, в Unity вам не нужно ничего писать. Используйте физику и анимации Unity, события кнопок, и так далее. Партиклы добавят зрелищности. Также, изучайте новый Shader Graph, он позволяет очень эффектно менять внешний вид объекта без лишних скриптов. (У меня вот руки пока не дошли, но на следующих выходных сяду с ним поиграться!) Недостаток этого подхода очевиден — многие вещи с помощью только встроенных средств Unity сделать невозможно.

Простые скрипты. Простой скрипт в скроллере или платформере, говорящий цветку плеваться шариками при приближении главного героя — тоже ИИ. В 50% случаев в типичных играх на Unity таких скриптов достаточно для решения задачи. Пользуйтесь наследованием и другими возможностями ООП, а так же возможностями Unity по анимации, чтобы уменьшать себе количество работы, и обеспечьте гейм-дизайнерам удобные настройки — и будет вам девелоперское счастье. (И это относится и к гораздо более сложным задачам чем управление простым мобом. Например, применяя ECS — рекомендую LeoECS — вы можете реально простым скриптом управлять целыми армиями мобов!)

Ролевая система. Тоже, возможно, вызову у вас удивление, но тем не менее, ролевая система с привязанным к ней ГСЧ — тоже ИИ, причём очень удобный для разработчика и геймдизов. Достаточно просто подвести монстра (по гексам) к персонажу игрока на радиус саггривания, включить боевой режим, и дальше начинает работать ролевая система — только успевай подключать анимации. Такие АОП имеют единственный недостаток — большинство распространённых ролевых систем пришли из настольных игр и приспособлены к работе в пошаговом режиме, поэтому для работы в real time их потребуется править.

Конечные автоматы. В англоязычной литературе они называются state machine. Этот тип АОП используется относительно редко. Основная область его применения — обеспечение поведения «разумных» ботов в высокобюджетных играх, где требуется обеспечить «реалистичное» поведение (именно поведение) персонажей, и это уже не для всех. Они довольно сложны благодаря своей комплексности — трудно отслеживать многочисленные возникающие связи. В Unity их можно реализовывать различными способами, например, через скрипт или состояния аниматора. Также существуют и сторонние реализации конечных автоматов для Unity, например Visual State Machine или Playmaker.

Алгоритмы ТАУ (теории автоматического управления). Этот тип АОП не используется практически никогда, и это уже совсем не для всех. ТАУ — это фильтры Калмана, PID-регуляторы, цепи Маркова и много злобного и неприветливого матана. Чаще всего, для геймдева это всё дорого и не нужно. Но если вам действительно нужны реально злые и меткие турели, устойчиво летающие самолёты в симуляторах, автопилоты, хорошие самонаводящиеся ракеты и тому подобные «технические» вещи, то это решается именно через ТАУ. Применения ТАУ в коммерческом геймдеве я не видел никогда, а в своих проектах применял всего два раза и для очень узкой задачи (обеспечения быстрой и точной стрельбы), просто чтобы доказать самому себе что я умею

Нейросети и алгоритмы машинного обучения. Эти типы АОП применяются в геймдеве исключительно редко и обычно для решения каких-то частных, нишевых задач (кроме тех случаев когда на их основе строятся features игры). Преимущество нейросетей — их можно заставить самообучаться и тем самым вывести из процесса разработки игры долгий период отладки АОП. Недостаток нейросетей — плохая настраиваемость и отсутствие гарантии повторяемости результата. Обычно их используют для автоматизации каких-то продолжительных процессов в реальном времени, которые излишне геморрно реализовывать через алгоритмы ТАУ, например, для управления самолётом в симуляторе. Можно попытаться использовать нейросети и для управления игровым поведением сложного бота, но я не видел успешных примеров того чтобы нейросеть годно обеспечивала высокоуровневое управление в игре. То есть бот-то будет хорошо делать то чему его научили, но вот настраивать его геймдизам будет ну очень неудобно! В Unity нейросети представлены штатным пакетом Unity Machine Learning Agents, который обеспечивает интеграцию в Unity TensorFlow. В своей практике я так же использовал нейросетевые библиотеки от AForge, правда, сейчас они менее удобны чем ML Agents.

Learn to implement games with code (2017)

Книга быстро погружает в разработку игр на Unity, но главное — вы тренируетесь писать годные алгоритмы и код, что важно вне зависимости от движка. Опыта работы с C# не требуется — достаточно знать, что такое переменные, условия, циклы, массивы, функции

Если сомневаетесь в своих силах, посмотрите бесплатный курс «Основы программирования» на GeekBrains.

Автор — Джон Куик (John M.Quick) — имеет ученую степень Ph.D. в области образовательных технологий. Он исследовал развлекательную составляющую и проявление индивидуальности в играх. В своих научных работах он предложил модели GEM (Gameplay Enjoyment Model) и GGO (Gaming Goal Orientation). Преподавал компьютерную грамотность, гейм-дизайн и программирование в университетах США и технологическом институте DigiPen в Сингапуре.

Like this post? Please share to your friends: