Преферанс с гусариком - "бумажный" AI в играх и военных симуляциях.
Для изобретения
нужно осознание его необходимости. Для того, чтоб была создана дрель, нужно
понять, что в стене необходима дырка.
На протяжении большей части истории игры были
прежде всего формой социального взаимодействия. Игра предполагала партнёра,
соперника, компанию за столом; развлечение для одиночки долгое время оставалось
скорее исключением. Конечно, существовали пасьянсы и другие одиночные занятия,
но они находились где-то на границе между игрой, упражнением и головоломкой и
не слишком влияли на основную эволюцию настольных игр. Потребность-же в настольных
играх для одного игрока сформировалась, по историческим меркам, совсем недавно
и произошло это в рамках развития военных игр.
Бум варгеймов начался в 1958 году, после выхода игры Чарльза С. Робертса Gettysburg. Варгеймы хорошо продавались и непрерывно развивались, но почти сразу выявилась их неустранимая проблема – варгеймы были (и остаются) сложными в освоении и достаточно нишевыми. Что, в свою очередь, означало проблемы с поиском партнёров по игре. Люди приезжали играть на конвенты, размещали объявления о поиске партнёров в газетах – и в 70-е годы издатели варгеймов с некоторым удивлением обнаружили, что энтузиасты нередко играют в военные игры сами с собой, и существует вполне реальная и насущная потребность в играх для одного игрока – или опции играть в одиночку в игру для нескольких игроков.
Но, как не сложно предположить, удовлетворить этот спрос было не так уж легко. Конфликт – обязательная часть любой игры, он заложен в самом её определении. Было понятно, что нужна достаточно парадоксальная система – где, с одной стороны, игрок производит все действия за обе (или больше) стороны конфликта, а с другой – игра сохраняет вызов и элемент неожиданности. И это потребовало понять, как в принципе работает конфликт в игровом мире. Есть два основных подхода к конфликту в разработке игр:
1. Игрок против окружения
2. Игрок против [искусственного] игрока
(Есть и третий подход – игрок против себя самого, но он очень экзотичный и сегодня почти не встречается – его можно видеть в игре «Пелопонесская война», где игрок по очереди играет за каждую из трёх фракций, причём принимает командование над ней в том состоянии, в котором она была в конце предыдущего раунда – т.е. если игрок почти победил, но не добил противника – в следующем раунде он начнёт в очень тяжелых условиях и, скорее всего, проиграет.)
Первый подход - "мир против игрока"
Первый подход появился раньше других, и, в различных вариациях, до сих пор используется в соло- и кооперативных играх. Основной принцип игр этого типа состоит в том, что вместе с собственными действиями, игрок каждый ход узнаёт о том, как меняется игровой мир или какие действия окружающий мир предпринимает против игрока. Этот принцип, хотя и достаточно интуитивный, и даже примитивный, имеет несколько уровней сложности.
Самый базовый
уровень был использован в старых играх вроде B-17 Queen of the sky (1981). В этой игре игрок брал на себя роль командира бомбардировщика на
боевой миссии. Каждый ход игрок бросал кубики и проверял результаты по таблице
– в которой были указаны события. Волны вражеских бомбардировщиков, зенитный
огонь, неполадки – всё происходило с игроком по воле случая. Таблицы, как это
обычно для варгеймов, были очень детальными и содержали проверки для целых
серий событий – при повреждениях серией бросков проверялся тип повреждения, что
он означает для самолета, и получилось ли исправить неполадку – если такая
опция существует.
Время игры и продвижение игрока к цели являются модификатором – чем дальше
бомбардировщик продвигается во вражескую территорию, тем выше вероятность
боевых столкновений.
Агентность игрока проявлялась не столько в выборе маршрута, сколько в связанных с событиями решениях. Например, при событии «от холода заело пулемет стрелка нижней полусферы» игрок-капитан мог принять решение опуститься ниже, туда, где теплее – но тем самым он нарушал строй и рисковал попасть под зенитный огонь. Не сложно видеть, что у подобной игры есть большая проблема с агентностью игрока – т.е. набор решений очень сильно ограничен, и успех рейда нередко сводиться к чистейшей удаче – почти исключая влияние стратегического планирования. Поэтому не удивительно, что сегодня он практически не используется.
(Хотя сам по себе подход, при котором мир «бросает в игрока» череду случайных событий в каждом игровом цикле, получил продолжение – в его рамках реализован ряд кооперативных игр, самой известной из которых является любимая мной серия семейных игр Pandemic.)
Между миром и партнёром - игры семейства "Ambush!"
Но позже, в играх Ambush! (1983), Move Out! (1984) и ряде других, принцип «игрок против окружения» становится гораздо более интересным – поскольку создаёт иллюзию второго игрока, пусть и не идеальную.
В тактических военных играх этого типа игрок управляет отрядом, движущимся по вражеской территории. В отличие от B-17, здесь игрок выбирает маршрут для отдельных юнитов под своим командованием, т.е. изначально обладает значительно более высокой агентностью.
Здесь, как и в более ранних соло-играх «ИИ» реализован через таблицы, но механизм триггера событий отличается – можно назвать его «топологическим». Каждый гекс на карте имеет свой индекс, подобно координатам клеток в шахматах. При перемещении юнитов по карте, игрок сверяется со специальной таблицей – что происходит, когда его отряд находится на том или ином поле.
Связанные с координатами на поле номера отсылают игрока к книге сценария, где можно посмотреть, что происходит.
Если происходит столкновение с противником или отряд обнаружен - игра переходит в «тактический» режим, на карте появляются немецкие подразделения. Какие они, сколько, есть ли у них инициатива, что они делают, какие цели выбирают — всё это проверяется бросками кубиков по таблицам на карточках немецких подразделений.
Номера в таблицах также отсылали игрока к книге сценария, где были как описания действий противника, так и базовая логика типа «если – то». (Например «если в этом раунде в ближайшую цель уже стреляли, немецкое подразделение стреляет в следующего американского солдата»
При всей кажущейся простоте, система “Ambush!” позволяет большую гибкость в развитии сценария и большое количество неожиданных и, при этом, логичных событий. Выбор событий очень разнообразный – от обнаружения разведданных, разговоров с местными и сценарных описаний до активации вражеских подразделений – вплоть до того, что, сверяясь с таблицами, можно получить что-то вроде самостоятельных действий вражеских боевых единиц. Одновременно события повышают уровень тревоги и готовности противника к отражению атаки – придавая миссиям дополнительный реализм. Реализуется это следующим, достаточно занятным образом – для одной и той же карты может быть несколько таблиц событий – а какую из них использовать задают «условия» - которые могут сильно менять соотношение сил в миссии.
Ключевая идея и одновременно гениальная простота этой системы состоит в том, что условный ИИ не “играет”, а “происходит”. В Ambush! и его продолжениях «искусственный» противник не планирует и не “пытается выиграть” - он реализует ситуацию, в которую игрок попал. «Бумажный» игрок не имеет какого-либо стратегического замысла – это просто серия помех и стимулов, которые сопровождают игрока на пути к победе.
"Настоящий бумажный игрок"
Как мы помним, второй подход к ИИ в настольных стратегиях пытается напрямую симулировать мышление искусственного противника – и, хотя этот подход кажется самым естественным, в действительно он показал себя очень ресурсоёмким и используется крайне редко.
Варгеймы семейства COIN - AndeanAbyss, ADistantPlain и подобные им включают действия бота (или нескольких ботов) непосредственно в каждый ход. Когда до бота доходит очередь, как до одного из игроков, его действия проверяются по блок-схеме.
Грубо говоря, это была самая настоящая программа, где пошаговым транслятором выступал игрок. Блоки соответствуют состояниям в игре и выборам, которые нужно сделать. Искусственный игрок в играх COIN – это процедурный, реактивный ИИ на блок-схемах, где противник анализирует текущее состояние, проходит по дереву условий и выбирает заранее заданное допустимое действие – точнее, это, руководствуясь блок-схемой, делает за него игрок. Рандом (кубик) в решениях ИИ используется тогда, когда то или иное состояние игры допускает несколько равноценных действий.
Что важно отметить – правила для ботов в играх подобного типа отличаются от правил для игроков. Из-за того, что с помощью блок-схем тяжело достичь той-же глубины планирования и решений, правила для ботов облегчены – особенно в части менеджмента ресурсов и условий для экспансии. Позже этот принцип ляжет в основу популярной сегодня системы «Автома».
Венцом эволюции этого подхода стала появившаяся в 2018 году система «Erasmus Bot» - по сути, те-же схемы принятия решений, но значительно более сложные – бот этого типа должен был играть по основным правилам игры и, что важно, демонстрировать некую стратегию, пусть и без разнообразия – поскольку схемы предписывают определённые действия в ответ на действия живого игрока. Действия этого «картонного ИИ» симулируются большим набором блок-схем, предназначенных для разных фаз игры. Так же на выборы в рамках схемы могут повлиять события предыдущей фазы.
Собственно, этот подход – наиболее «настоящий» в плане мышления искусственного игрока. Но именно поэтому он очень трудоёмкий, требует большого дизайнерского опыта и длительной отладки.
Automa - "венец эволюции"
И, наконец, мы подходим к основному решению для симуляции игрока в современных стратегических играх - системе Automa. Система запатентована автором – дизайнером MortenPedersen и её главный принцип настолько же прост, насколько гениален – игроку не важно, как думает его оппонент и думает ли он вообще. Игроку важно, как оппонент действует. И именно на этом основана «Автома» - бот сосредоточен не на том, чтоб по-настоящему анализировать ситуацию и делать выборы, а на том, как игроки взаимодействуют друг с другом и какие действия могут помешать игроку достичь его целей. Искусственный игрок не подчиняется правилам – он лишь симулирует возможные интеракции между игроками.
Типичный ход автомы:
1. Вытянуть карту (игры в рамках этой системы обычно основаны на карточках)
2. Пройтись по списку приоритетов
3. Выполнить первое возможное действие – не обязательно лучшее в стратегическом плане.
Т.е. в действиях автомы нет оптимизации, нет перебора и нет “лучшего” хода – только допустимый. Так же автома не играет по тем же правилам, что игрок, не распределяет и не хранит ресурсы как игрок и часто не считает очки стандартным образом (получает их в ином количестве или за другие действия).
Первой игрой в которой использовалась автома была Viticulture (2014). С тех пор добавился еще ряд популярных игр – Scythe, Wingspan и ROOT.
Лучше всего я знаком с последней. Игра ROOT – ассиметричный варгейм, родственный игре «Риск». Различные фракции животных воюют за поляны в лесу. Победа определяется тем, кто из игроков раньше других наберет 30 победных очков. У каждой фракции есть собственные условия получения победных очков - например, фракция котов «Marquise» получает победные очки за строительство фабрик на контролируемых полянах. А фракция мелких зверюшек «лесной союз» как за строительство баз, так и за привлечение сторонников.
В соло/кооп ROOT используются механические фракции (Mechanical Marquise, Electric Eyrie и т.д.). Они не играют “по-честному”, а действуют, с одной стороны, по алгоритму, с другой – в рамках заданного правилами выбора приоритетов, поскольку игроку регулярно нужно выбирать, на какую поляну двигать свои войска или где создавать постройки.
Ход автомы в ROOT отличается от хода живого игрока – хотя автома симулирует экспансию и создание инфраструктуры, за её действиями не стоит настоящий стратегический выбор. Поскольку в отличие от предыдущих примеров «картонного ИИ» автома гораздо менее интуитивна, приведу пример хода «механической» фракции Котов.
На игровом поле изначально есть поляны с разных типов (они отличаются по связанным с ними видам животных – лисы, зайцы и мыши). Мы смотрим на момент, когда у Котов (автомы) уже есть воины и здания, а на поле уже есть несколько вражеских фигур и ход переходит к «автоматическому» игроку.
Цикл хода согласно планшету "механического" игрока:
1. Утро (подготовительная фаза хода). Сначала Коты открывают карту приказа. Потом, если на ней изображён доступный предмет, они его "создают" (т.н. "крафт" - это даёт победные очки наравне с завоеваниями и строительством).
2. День (основная часть хода). У котов день начинается с битвы. Бой начинается по системе приоритетных маркеров на карте; если нужно выбирать между равными вариантами, бот берёт поляну с более высоким приоритетом. Защитником поляны (т.е. тем, чьи юниты будут атакованы) выбирается игрок с наибольшим числом фишек в данной поляне (на одной поляне могут быть юниты разных игроков) если фишек равное количество — игрок с большим числом победных очков.
3. Следующий шаг - мобилизация, создание новых воинов. Коты размещают четырёх воинов среди полян, которые они контролируют, распределяя их максимально равномерно. Если подходящих полян три, четвёртый воин идёт на поляну с более высоким приоритетом.
4. Потом идёт строительство. Здесь важна вытянутая в начале хода карта. По правилам Коты строят в той поляне, которую она контролирует и где у неё больше всего воинов. Но тип постройки берётся с карточки приказа: Лиса - лесопилка, заяц - мастерская а мышь - призывной пункт.
5. Перемещение. Если на каких-то полянах есть больше трёх воинов, Коты двигают "лишних" солдат в соседнюю поляну с наибольшим числом вражеских фишек. Порядок движения опять-таки определён в правилах. Если количество вражеских воинов на соседних полянах равное - снова работает схема приоритета.
6. Специальное дополнительное действие "Expand" . Если в этот ход механические коты не смогли построить здание и у них на карте есть пять или меньше зданий, они сбрасывают текущую карту приказа, тянут новую, не создаёт указанный на ней предмет а сразу возвращается к началу Дня.
7. Вечер. Вечером Коты подсчитывают победные очки, добавляют их в счетчик, атем сбрасывают текущую карту приказа в отбой.
К данном описании важно не понять правила - правила ROOT доаольно сложны и требуют отдельного изучения - а понять, как простой алгоритм симулирует действия игрока не пытаясь создать симуляцию мышления, как такового.
Как было сказано ранее, автома не анализирует состояние партии, не думает о победных очках, не реагирует на стратегию игрока и не адаптируется. Но, она стабильно расширяется, системно атакует, блокирует пространство, создаёт ощущение активно противостоящего игроку оппонента. Не удивительно, что сегодня «автома» является чуть ли не самой распространённой системой для стратегических игр с кооп и соло потенциалом.
Картонный тактик - управление монстрами в игре Gloomhaven
Еще одна система, которая симулирует противника, это карточная тактическая система в игре GloomHaven.
Стратегически, на уровне мира, Gloomhaven устроен достаточно примитивно - мир игры описан в книге сценария – и то, где и какие сражения произойдут игроки узнают последовательно, переходи из одной локации в другую. Этим игра немного похожа на Ambush! Где описания заменяют ведущего. И, как и в играх Ambush! - типа, от этого сильно страдает реиграбельность.
Собственно, «ИИ» в Gloomhaven раскрывается в необычных тактических боях, где автоматический карточный движок управляет поведением монстров. Т.е. “Картонный ИИ” в Gloomhaven — это не искусственный игрок в полном смысле, а процедурный движок для поведения врагов, собранный из карт, базовых характеристик монстров и заранее заданных правил выбора цели, движения и атаки.
Каждый раунд для каждого типа монстров вскрывается карта способности; она задаёт инициативу и набор действий на этот раунд. Затем все монстры этого типа действуют по одной и той же инструкции, а их конкретное поведение уточняется общими правилами фокуса на цели, движения и атаки.
У этой системы три слоя. Во-первых, слой шаблона: у монстра есть базовые характеристики на карточке свойств - здоровье, базовое движение, базовая атака, дальность и постоянные особые свойства.
Во-вторых, слой тактических действий: карта способности на раунд сообщает, что именно этот тип монстров будет делать сейчас — например, раньше или позже ходить, двигаться, атаковать сильнее, лечиться, накладывать эффект и так далее. Одна карта вытягивается для каждого типа монстров на поле, и все монстры этого типа - и обычные, и элитные - исполняют именно её.
В-третьих, слой поведения монстров: когда карта говорит “двигайся” или “атакуй”, монстр выбирает цель согласно правилам (похоже на приоритеты в автоме), затем двигается минимально необходимым образом, чтобы атаковать эту цель с максимальным эффектом, а для дальнобойных атак старается избежать помехи от стрельбы вплотную. Если карта предписывает движение без атаки, монстр всё равно идёт к цели кратчайшим путём, как будто готовится к рукопашной.
Т.е. в, Gloomhaven мы имеем тактические бои, немного похожие по эффекту на систему Automa – хотя у монстров нет стратегии или тактики в бою, они создают ощущение разумно действующего противника и создают для игроков достаточно увлекательный вызов.
Заключение:
Как ни странно, задача создать в настольной игре искусственного оппонента или партнёра без электроники или сложной механики оказалась не только решаемой, но и удивительно плодотворной. За несколько десятилетий дизайнеры настольных игр выработали целый набор приёмов, позволяющих заменить живого противника: от таблиц и параграфов до сценарных триггеров и карточных алгоритмов. Сегодня соло- и кооперативных игр выходит всё больше, и почти все они, в той или иной степени, опираются на уже найденные принципы.
Поэтому, работая над собственной игрой, полезно смотреть не только на новинки, но и на старые системы. В них часто заложены решения, которые и сегодня остаются точными, изящными и неожиданно современными. Ambush!, игры системы COIN и другие игры показывают, что «искусственный интеллект» в настольном дизайне — это не обязательно попытка буквально воспроизвести человеческий разум, а искусство создать у игрока ощущение конфликта и сопротивления. Иногда это сопротивление выглядит как враждебная среда, иногда - как полноценный соперник с собственным стилем поведения.
Эти методы полезны не только дизайнерам настольных игр. Их принципы легко узнать и в цифровых стратегиях, и вообще в игровом дизайне как таковом. Например, опыт «автомы» помогает понять, почему компьютерный противник в некоторых RTS действует «нечестно»: он не обязан быть симметричным игроку, если его задача — не честно жить по тем же правилам, а создавать нужный темп, давление и игровой вызов. В этом смысле настольные игры особенно поучительны: они наглядно показывают, что искусственный оппонент — это не обязательно полноценный разум, а прежде всего тщательно спроектированная система реакций и приоритетов.
Настольные игры показывают, что для создания убедительного противника не всегда нужны вычислительные мощности. Иногда достаточно бумаги, нескольких таблиц и очень хорошего понимания того, какой именно вызов должен бросить игроку мир игры.
Если вам понравилась статья - подписывайтесь на сообщество "Шахматы плюс" - клуб и библиотеку любителей стратегических и тактических игр.
