После статьи о книгах для саморазвития gamedev-программиста меня просили больше написать про аишную часть и о том, что стоит почитать по этой теме. Для программиста ИИ в игрострое ситуация с книгами схожа, но с несколькими интересными особенностями. Здесь важна не столько глубина знаний, сколько наработанность с инструментами, библиотеками и технологиями в целом — а с учётом того, что новые подходы развиваются с поразительной скоростью, поразительной для игростроя конечно. Казалось, только лет 10 назад стали использоваться BT (behavior tree), но и они уже имеют редакцию 4.x (behaviortree.dev). Но важно не зацикливаться на затаскивании в проект модных примочек: базовые знания остаются самым важным, что можно получить. Это как в притче об удочке — дай человеку рыбу, и он накормит себя сегодня; дай ему удочку, и он будет кормить себя всю жизнь. Удочкой в этом случае выступает знание того, как оно работает, а не как можно его использовать.
ИИ до сих пор стоит в игрострое особняком, потому что до сих пор нет стандартов построения игровой логики: каждая из студий решает свои уникальные технические и инженерные задачи и вынуждена находить баланс между чем-то новым и общей стабильностью игры. Этот путь усеян пробами и ошибками, даже если вы уже прошли по нему в прошлом, и мало кто поможет вам увидеть ошибки заранее — банально потому, что прошёл по другому пути, со своими граблями и костылями. Тем хуже, когда именитый разработчик приходит в команду и начинает продавать свои решения и опыт, которые часто не бьются с разработками команды. Но статья не об этом, а о полезных книгах.
К сожалению, хороших книг не очень много, а внутренние доклады и презентации с GDC и около-игровых конференций, не говоря уже о собственных разработках и исходниках компании, берегут и расшаривают ну очень редко, читай практически никогда.
AI for Game Developers
Это, вероятно, лучшая книга, если вы хотите начать изучать концепции построения ИИ для игр. Рассматривайте её как «ИИ для игр для чайников за 21 день»: когда-то существовала серия книг про разные языки программирования с похожим названием. В целом эта книга является отправной точкой для всех, и скорее всего вам предложат прочитать её в студии — она будет в локальной библиотеке. Как всегда, читать лучше в оригинале, потому что наши переводчики не всегда корректно переводят обороты.
Авторы объясняют довольно широкий спектр техник, решений и стратегий, используемых в разработке игр, простым и понятным языком — с небольшим условием: простым, если вы уже успели прочитать другие книги по разработке, понятным, если уже пробовали что-то делать. Информацию подают доступным языком для людей с разным уровнем опыта и общим бэкграундом в разработке игр. Книга хорошо структурирована, с балансом теории и практических примеров. Подход Бурга помогает понять некоторые концепции ИИ вроде BT, активностей, прерываний, мониторов и т. д. Неплохо рассмотрены такие концепции игрового ИИ, как принятие решений, обучение и восприятие (EOS, environment obstacle system) — я затрагивал описание похожей системы в этой статье.
Что ещё можно будет узнать из книги:
- Поиск пути и навигация: одна из ключевых тем книги, которая необходима для движения и поведения NPC; здесь объясняются популярные алгоритмы, такие как A* и алгоритм Дейкстры, но вот A* с прыжками совершенно не затронут, хотя его применение в играх больше распространено сейчас.
- Конечные автоматы (FSM): обсуждаются конечные автоматы как способ управления различными состояниями игровых персонажей. Есть примеры того, как создавать и управлять конечными автоматами для контроля поведения персонажей и их взаимодействий.
- Деревья поведения (BT): базовое понимание работы с деревьями поведения как альтернативе конечным автоматам. Объяснены структура и то, как их можно использовать для создания более сложных и гибких алгоритмов поведения NPC.
- Принятие решений и системы полезности: в целом почитать можно, но мне не понравилось — слишком много воды. Описаны системы на основе полезности, активностей и весов целей.
- Боевой ИИ и стратегии: также рассказывается про стратегии ИИ для боевых сценариев, когда NPC могут адаптироваться к поведению игрока и принимать стратегические (групповые) решения в ходе игры — вроде обороны места, удержания точки, областей наблюдения.
- Обучение и адаптация: немного затрагиваются концепции машинного обучения, но не в том понимании, как это можно делать с LLM — всё же книга вышла почти 20 лет назад. Здесь больше про классическое обучение, с весами, отсечением веток поведения по триггерам и базовыми принципами вроде «преследования игрока», «резиночки» или «пряток», которые делают игровой процесс более динамичным и отзывчивым. Большинство этих моделей хорошо палятся игроками, ибо применяются давно и в большом числе игр, но знать про их сильные и слабые стороны нужно.
Game AI Pro
Серия книг, посвящённая искусственному интеллекту в компьютерных играх. Каждая книга представляет собой сборник статей и опыта реальных разработчиков, которые делятся своими знаниями и практическими подходами. Каждая книга организована в главы, посвящённые темам, с которыми разработчики часто сталкиваются. Читать лучше параллельно с первой книгой в списке — те главы, что пересекаются по темам. Так будет больше материала для осмысления и возможность увидеть больше примеров по теме.
- Навигация и поиск пути — алгоритмы поиска пути, движение персонажей и прокладка маршрутов.
- Поведение персонажей — реализация поведения NPC с использованием таких техник, как конечные автоматы и деревья поведения.
- Осведомлённость об окружении — адаптация ИИ к изменениям в игровом мире, а также взаимодействие с игроками и другими NPC.
- Оптимизация производительности — техники и советы по улучшению производительности ИИ в реальном времени.
- Машинное обучение — использование продвинутых методов для создания адаптивного поведения персонажей.
Game Engine Gems
Серия книг предлагает истории о создании уже выпущенных игр — что-то вроде напечатанного подкаста с ценными советами, техниками и лучшими практиками от опытных разработчиков. Формат состоит из коротких историй и статей от мэтров, что делает её увлекательным ретроспективным обзором ошибок и рекомендаций по тому, что следует (а главное, чего не стоит) делать в разработке игр. Не дайте себя обмануть названием — это не только про игровые движки; со временем выпуски стали охватывать практически все аспекты разработки. С одной стороны, такая подача материала делает её лёгкой для чтения — я осилил все книги всего за месяц вечерами; с другой стороны, если вы уже что-то делали сами или шипнули игру, вы увидите, что темы раскрыты поверхностно. Справедливости ради стоит отметить, что все главы выполнены на хорошем литературном уровне (напомню, это байки от мэтров про разработку игры и зелёную траву). Первую лучше читать отдельно, ибо там в основном про движки, а вот вторая и третья уже более близко рассказывают про ИИ-шку или темы около неё.
! Читать лучше в оригинале — наши переводчики криво используют контекст, а зачастую убирают целые абзацы!
Чтобы было ясно: эти книги не дадут вам полного понимания того, как создать игровой движок или написать хороший и интересный ИИ противников, нет. В книге почти не обсуждается техническая часть; вместо этого внимание уделено некоторым узким специфическим темам, которые возникли при разработке, и описанию ошибок уже постмортем. Как дополнение к более техническим книгам, которые можно найти по архитектуре игровых движков и игровому ИИ, книга достойная и безусловно заслуживает места в этом списке.
Особенности:
- Анализ ошибок — думаю, тут понятно, но стоит учесть разницу во времени почти в десять лет, последняя вышла в 2016. Разработчики делятся тем, что пошло не так в их проектах, и объясняют, как избежать подобных проблем.
- Best practices и как делать не стоило — советы о том, что оказалось эффективным на практике: от оптимизации производительности до улучшения взаимодействия с игроком.
- Тулы — успешные и неудачные примеры использования различных движков, библиотек и фреймворков.
- Культура разработки — как наладить эффективное сотрудничество в команде и поддерживать проект в здоровом состоянии в условиях сжатых сроков и давления со стороны инвесторов.
The Pyramid of Game Design
Книга описывает модель для проектирования ИИ в компьютерных играх. Эта модель предназначена для того, чтобы помочь разработчикам игр связать различные аспекты игрового дизайна. Это теория того, как надо строить связи в игре: между квестами, между предметами, между NPC, между игроком и окружением. За годы разработки я не встречал практических примеров её применения полностью, как она описана в книге. Как теория, выглядит вполне хорошей и стройной, но как практический подход я нигде её не видел. Отдельные части — да, используются достаточно широко, об этом ниже, а вот про «эмоциональное программирование игроков» — даже звучит стрёмно, хотя вот последние игры вроде Inscryption или Buckshot Roulette, похоже, попытались применить определённые главы этой книги на практике.
Темы, которые могут быть интересны программистам ИИ и дизайнерам:
- Структура пирамиды: пирамида разделена на различные уровни, каждый из которых представляет собой важный аспект игрового дизайна. Эта иерархическая модель подчёркивает, что фундаментальные элементы должны быть надёжно построены перед тем, как переходить к следующему уровню.
- Игрокоцентричный дизайн: Лавелл подчёркивает важность понимания мотивации игроков и их опыта. Он призывает дизайнеров учитывать, как каждый элемент игры влияет на удовлетворение игроков и их вовлечённость.
- Итеративный процесс дизайна: книга отстаивает итеративный подход к проектированию игр, когда идеи постоянно тестируются и уточняются на основе отзывов игроков. Этот подход помогает дизайнерам создавать более отшлифованные и увлекательные игры.
- Практические применения: хотя книга представляет теоретические концепции, Лавелл даёт практические советы по применению этих идей в реальной разработке игр. Он обсуждает общие ошибки и трудности, с которыми могут столкнуться дизайнеры, и предлагает пути их преодоления.
Behavioral Mathematics for Game AI
Это ценное пособие для разработчиков игр и AI-программистов, но очень скучное. Я осилил книгу после трёх попыток. Тем не менее, если вы хотите понимать математические основы моделей поведения NPC в играх и апеллировать этим в спорах с дизайнером, эта книга определённо будет полезной. Написано достаточно запутанно — тут, возможно, были ещё сложности перевода, — и бывало, что концепции из прошлой главы забывались к началу следующей. Это больше похоже на справочник для тех, кто хочет увидеть, как определённые игровые концепции воспринимаются дизайнерами в теории. Помните, что автор передаёт знания конца 90-х или начала 2000-х годов, и некоторые подходы серьёзно устарели и сейчас едва ли используются. Не читайте всё подряд — это справочник: не зашла глава после пяти страниц, смотрите следующую. Из-за того, что главы неправильно организованы, кмк, их надо читать не в порядке расположения, а в порядке возникающих в голове вопросов. Ну что есть, то есть, уже не исправишь. Меня книга зацепила автором, который участвовал в создании ИИ для первой части Majesty — если кто помнит эту игру, думаю, многие увидят в этих описаниях решения тех лет.
- Математика в проектировании ИИ: математика важна в проектировании ИИ, нужно понимать такие вещи, как теория вероятности, базовая статистика и линейная алгебра. И книга объясняет, как эти математические инструменты могут быть использованы для создания более сложного и правдоподобного поведения ИИ.
- Модели поведения: подробно рассматриваются алгоритмы принятия решений, как математические модели могут быть использованы для моделирования рационального поведения, оценки рисков, ожидаемой полезности, весовые модели поведения.
- Поиск пути и навигация: расписаны разные алгоритмы для навигации и поиска пути, включая A* и Дейкстру, и объяснено, какие математические принципы лежат в основе этих алгоритмов.
- Динамическое и реактивное поведение: показаны проблемы создания игрового ИИ, который может динамично реагировать на изменения карты, предметов или действия игрока.
- Теория игр: обсуждаются стратегии для NPC в многопользовательских и малоуправляемых средах (привет, Majesty), где понимание поведения противников имеет решающее значение и основано на критериях, оценках, но не жёстких сценариях.
AI Game Programming Wisdom
Серия книг, посвящённая техникам в области искусственного интеллекта, применяемого в разработке игр. Это истории о существующих решениях в играх начала 2000-х годов. Серия акцентирует внимание на практических подходах и решениях реальных задач ИИ.
Почему я могу порекомендовать эту серию:
- Целевая аудитория: книги ориентированы на тех, кто уже имеет базовые знания в программировании и разработке игр. Однако важно помнить, что многие советы основаны на опыте начала 2000-х, и не все из них могут быть актуальны сегодня.
- Практическая направленность: серия включает практические примеры и решения, что делает её хорошей отправной точкой для новичков в индустрии, предлагая ретроспективный взгляд на решения, принятые в различных играх разными авторами.
- Легко читать: многие мои коллеги, в том числе и я, прошли всю серию за один раз, часто воспринимая её как художественное произведение. Однако, как уже было сказано, большинство предложенных решений могут быть спорными в своём применении сегодня.
Почему я не могу порекомендовать эту серию:
- Это книга по истории развития игрового ИИ, исторический справочник; не стоит перенимать и переносить решения тех лет на современные игры, тем более что плохие и хорошие решения идут вперемешку, и автор зачастую не говорит, к чему они привели.
- К сожалению, серия фактически завершилась на второй книге: третья была почти 700 страниц, но реальных и интересных примеров где-то на 200, остальное — вода и размышлизмы, что совсем не вяжется со стилем изложения первых двух. Лично мне показалось, что последняя книга была написана другой командой авторов, так как подача материала сильно отличалась от предыдущих томов, поэтому читать лучше первые две, а третью по желанию.
Заключение
Спасибо, что дочитали. Докидывайте интересные книги и мнения о них в комментах — добавлю их тоже.
← Все статьи