После статьи о книгах для саморазвития gamedev программиста, меня просили больше написать про аишную часть и том, что стоит почитать по этой теме. Для программиста ИИ в игрострое ситуация с книгами схожа, но с несколькими интересными особенностями. Здесь важна не только глубина знаний, сколько наработанность с инструментами, библиотеками и технологиями в целом, а с учетом что новые подходы развиваются с поразительной скоростью, поразительной для игростроя конечно. Казалось только лет 10 назад стали использоваться BT (behavior tree), но и они уже имеют редакцию 4.x (https://www.behaviortree.dev/). Но важно не зацикливаться на затаскивании в проект модных примочек, базовые знания остаются самым важным что можно получить. Это как в притче о удочке — дай человеку рыбу, и он накормит себя сегодня; дай ему удочку, и он будет кормить себя всю жизнь. Удочкой в этом случае выступает знание, как оно работает, а не как можно его использовать.
ИИ до сих пор стоит в игрострое особняком, потому что до сих пор нет стандартов построения игровой логики, каждая из студий решает свои уникальные технические и инженерные задачи, и вынуждена находить баланс между чем-то новым и общей стабильностью игры. Этот путь усеян пробами и ошибками, даже если вы уже прошли по нему в прошлом, и мало кто поможет вам увидеть ошибки заранее, банально потому, что прошел по другому пути, со своими граблями и костылями. Тем хуже когда, именитый разработчик приходит в команду и начинает продавать свои решения и опыт, которые часто не бьются с разработками команды. Но, статья не об этом, а о полезных книгах.
К сожалению хороших книг не очень много, а внутренние доклады и презентации с GDC и около игровых конференций, не говоря уже о собственных разработках и исходниках компании берегут и расшаривают ну очень редко, читай практически никогда.
AI for Game Developers
Это, вероятно, лучшая книга, если вы хотите начать изучать концепции построения ИИ для игр. Рассматривайте её как "ИИ для игр для чайников за 21 день"; когда-то существовала серия книг про разные языки программирования с похожим названием. В целом, эта книга является отправной точкой для всех, и скорее всего вам предложат прочитать её в студии и она будет в локальной библиотеке. Как всегда читать лучше в оригинале, потому что наши переводчики не всегд корректно переводят обороты.
Авторы объясняют довольно широкий спектр техник, решений и стратегий, используемых в разработке игр, простым и понятным языком, с небольшим условием, простым если вы уже успели прочитать другие кники по разработке, понятным если уже пробовали чтото делать. Информацию подают доступным языком для людей с разным уровнем опыта и общим бэкграундом в разработке игр. Книга хорошо структурирована, с балансом теории и практических примеров. Подход Бурга помогает понять некоторые концепции ИИ вроде BT, активностей, прерывания, мониторов и т.д. Неплохо рассмотрены такие концепции игрового ИИ, как принятие решений, обучение и восприятие (EOS, environment obstacle system), я затрагивал описание похожей системы в этой статье (https://habr.com/ru/articles/769696/).
Что еще можно будет узнать из книги:
Поиск пути и навигация: Одна из ключевых тем книги, которая необходима для движения и поведения NPC, здесь объясняются популярные алгоритмы, такие как A* и алгоритм Дейкстры, но вот A* c прыжками совершенно не затронут, хотя его применение в играх больше распростанено сейчас.
Конечные автоматы (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, если кто помнит эту игру, думаю многие увидят в этих описаниях решения тех лет.
Математика в проектировании ИИ: математика важна в проектировании ИИ, нужно понимать такие вещи как теорию вероятности, базовую статистику и линейная алгебра. И книго объясняет как эти математические инструменты могут быть использованы для создания более сложного и правдоподобного поведения ИИ.
Модели поведения: подробно рассматриваются (20-хх год) алгоритмы принятия решений, как математические модели могут быть использованы для моделирования рационального поведения, оценку рисков, ожидаемую полезности, весовые модели поведения.
Поиск пути и навигация: расписаны разные алгоритмы для навигации и поиска пути, включая алгоритмы A* и Дейкстры, и объяснено какик математические принципы лежат в основе этих алгоритмов
Динамическое и реактивное поведение: показаны проблемы создания игрового ИИ, который может динамично реагировать на изменения карты, предметов или действия игрока.
Теория игр: обсуждаются стратегии для NPC в многопользовательских средах и малоуправляемых средах (привет Majesty), где понимание поведения противников имеет решающее значение и основано на критериях, оценках, но не жестких сценариях.
AI Game Programming Wisdom
Серия книг, посвященная техникам в области искусственного интеллекта, применяемого в разработке игр. Это истории о существующих решениях в играх начала 2000-х годов. Серия акцентирует внимание на практических подходах и решениях реальных задач ИИ.
Почему я могу порекомендовать эту серию:
Целевая аудитория: Книги ориентированы на тех, кто уже имеет базовые знания в программировании и разработке игр. Однако важно помнить, что многие советы основаны на опыте начала 2000-х, и не все из них могут быть актуальны сегодня.
Практическая направленность: Серия включает практические примеры и решения, что делает её хорошей отправной точкой для новичков в индустрии, предлагая ретроспективный взгляд на решения, принятые в различных играх разными авторами.
Легко читать: Многие мои коллеги, в том числе и я, прошли всю серию за один раз, часто воспринимая её как художественное произведение. Однако, как уже было сказано, большинство предложенных решений могут быть спорными в своём применении сегодня.
Почему я не могу порекомендовать эту серию:
Это книга по истории развития игрового ИИ, исторический справочник, не стоит перенимать и перености решения тех лет на современные игры, тем более что плохие и хорошие решения идут вперемешку и автор зачастую не говорит к чему они привели.
К сожалению, серия фактически завершилась на второй книге, третья была почти 700 страниц, но реальных и интересных примеров гдето на 200, остальное вода и размышлизмы, что совсем не вяжется со стилем изложения первых двух. Лично мне показалось, что последняя книга была написана другой командой авторов, так как подача материала сльино отличалась от предыдущих томов, поэтому читать лучше первые две, а третью по желанию.
Заключение:
Спасибо, что дочитали. Докидывайте интересные книги и мнения о них в коментах, добавлю их тоже.
Эта статья на английском (страница на linkedin)
Комментарии (13)
Edreyn
18.11.2024 18:12Меня давно интересует эта тема, только мне интересно почитать про то, как работает ИИ в играх типа 4X таких как серии Цивилизация или Master of Orion. Или например на сайте codingame передически устраивают соревнования как раз на создание игрового ИИ такого типа. Как я понимаю это все таки отличается от ИИ который используется в шутерах или тех же Dark Souls из первого комментария. Подойдет ли для изучения одна из предложенных книг? Или разница между жанрами куда меньше чем мне это представляется, и то что работает для шутера будет работать и для стратегии?
Не злитесь, не спросив я не узнаю.
dalerank Автор
18.11.2024 18:12Общие принципы одни и те же, реализация в каждой игре своя. Может быть бт анреловский более широко используется, но это в силу большего распространения движка. llm ещё мало используются для логики, больше для матчинга анимации, драфта звуков и текстов.
Edreyn
18.11.2024 18:12Спасибо за совет, думаю мне по любому надо начинать с чего-то относительно простого, вроде деревьев принятия решений. Я понимаю что они из себя представляют, но с трудом могу представить как их подгоняют в играх под все возможные случаи.
dalerank Автор
18.11.2024 18:12Начните лучше с FSM, если будет понятно как реализовать свою минилибу стейтов, то потом BT зайдет намного проще.
Edreyn
18.11.2024 18:12Это Finite State Machine? Почитаю, спасибо.
Если можно спросить про конкретное упражнение.
https://www.codingame.com/multiplayer/bot-programming/ghost-in-the-cell
Захват и контроль баз которые создают роботов-солдат.
Это тоже предельно упрощенная стратегия. Что можно почитать на эту тему? Меня эта задача давно интересует, но пока непонятно как подступиться.
Ilya_JOATMON
Тут еще важно не перестараться с ИИ мобов. Например если бы босс в каком соуслайке запоминал бы те атаки которые по игроку прошли, а после каких он получил в бубен и соответствено выставлял приоритеты в их выборе, то от него пригорело бы у мнооогих.
Synoecium
Это разве плохо? Тем более что уровень продвинутости ИИ можно вынести в качестве параметра, выставляемого игроком, чтобы каждый получил себе противника по скиллам.
Ilya_JOATMON
Это отбалансировать очень сложно. Сейчас идут по простому пути - коэффициэнты здоровья и демеджа. Как игрока так и мобов. А вот чтобы ИИ мобов менялся, это очень редко, в основном это будут боты во всяких дефматч стрелялках.
uxgen
Как вариант - чем дольше идет бой, тем тупее становится босс и скатывается к простой механике. Тоже реалистично. Игроку нужно только продержаться в самом начале и немного измотать противника.
dalerank Автор
С тупыми неинтересно играть, это сразу палится игроками и посылаются лучи добра в сторону разработчиков. Игроки хорошо чувствуют когда босс "поддается" а когда просто тупит или деревянный, и вот второго стараются избежать, это гарантированно снизит оценку игры и добавит негативных отзывов. Если деревянность еще можно както обыграть сюжетом или лором, то тупых болванчиков никак.