Комплексный игровой ИИ для пошаговых стратегий


26

Я изучаю пошаговый стратегический игровой проект и ищу полезные ресурсы по этой теме. Игра представляет собой типичную военную игру, в которой страны могут сражаться друг с другом, размещать юниты и заставлять их перемещаться по гексагональной карте тайлов, атаковать друг друга и т. Д.

Меня особенно интересует, как организован ИИ Цивилизации V! Согласно Википедии, в игре используются четыре разные системы ИИ для разных уровней ИИ игры:

  • тактический AI контролирует отдельные юниты
  • оперативный ИИ контролирует весь военный фронт
  • стратегический ИИ управляет всей империей
  • великий стратегический ИИ ставит долгосрочные цели и определяет, как выиграть игру

Концептуально это выглядит так, как будто имеет смысл иметь сложный ИИ, и мне любопытно узнать о том, как эти разные системы ИИ работают (и работают вместе). Тактический ИИ, вероятно, наиболее прост для понимания, поскольку он принимает решения для одного подразделения (перемещение, атака, ремонт, отступление и т. Д.), Но я думаю, что другие системы ИИ действительно интересны. Например, что делает операционный ИИ и как он это делает? Я уверен, что это лучшие секреты Firaxis Games, но было бы здорово начать обсуждение этого, чтобы узнать больше об этом.

Также, если кто-нибудь знает какие-нибудь хорошие книги, посвященные пошаговому ИИ стратегической игры, было бы здорово знать. Очевидно, что эта тема редко встречается в Интернете. Я получил «Программирование AI игры на примере», но эта книга больше посвящена искусственному поведению одного агента, чем высокоуровневому целевому AI.

Ответы:


19

Хотя я согласен с вступительным параграфом DampeS8N (т.е. игровой ИИ должен быть достаточно умным, чтобы заставить игрока думать, что он умный), но я чувствую, что этот вопрос нуждается в некоторой доработке. Используемые структуры данных могут быть FSM для всех уровней, но на самом деле это не отвечает на вопрос о том, как работают отдельные системы.

Отказ от ответственности: я почти не играл в игры Civilization, поэтому мое понимание игрового процесса ограничено. Если есть какие-либо очевидные ошибки, я прошу прощения. Пожалуйста, поправьте меня, и я с удовольствием отредактирую.

Я буду брать цитаты из оригинальной статьи IGN .

1. Тактический ИИ

На самом низком уровне тактический ИИ использует имеющиеся силы, чтобы выиграть битву в локальном масштабе.

Это, наверное, самая стандартная часть подсистемы. Есть безграничные способы сделать это, используя FSMs, Trehavior Trees (или даже выполняя произвольные действия, в зависимости от сложности ИИ).

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

Затем результат рассчитывается примерно так:

If (AI unit score >> (much greater) enemy unit score) Then Completely destroy enemy unit
If (AI unit score > (somewhat greater) enemy unit score) Then Partially destroy enemy unit
If (AI unit score < (somewhat less) enemy unit score) Then Partially destroy AI unit
If (AI unit score << (much less) enemy unit score) Then Completely destroy AI unit

Имеет смысл, что ИИ будет пытаться максимизировать этот счет в бою.

Добавьте значение эпсилона (например, небольшой случайный шанс неудачи / успеха), и вы получите довольно прилично выглядящий ИИ (никто не хочет идеального противника, это просто не весело!).

2. Операционный ИИ

На шаг впереди от этого операционный ИИ выбирает, какие сражения сражаться, и обеспечивает наличие необходимых сил.

Я думаю, что есть пара моментов для этого:

  • Оценка силы тока
  • Армирование блоков
  • Оценка того, какие бои выбрать / избежать

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

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

Оценка того, какие бои выбрать / избежать - здесь может возникнуть пара ситуаций. Если ИИ обнаружит, что отряд находится под угрозой, И поблизости нет отрядов, которые могли бы ему помочь, то он может а) принять решение пожертвовать отрядом (если они просто пехотинцы, вместо незаменимого генерала, например) или б) заказать отряд отступать. И наоборот, если ИИ обнаружит слабый вражеский отряд возле армии, он может приказать отрядам убить этого врага.

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

3. Стратегический ИИ

Продвигаясь еще выше, стратегический ИИ управляет империей в целом, концентрируясь на том, где строить города и что с ними делать.

"Где я должен построить город?" просто звучит как оценка позиции. Шахматные программы и другие игры используют его для определения желательности данной позиции. Например:

Hex A: близко к ресурсам, на большой местности, близко к союзникам, близко к врагу Hex B: далеко от ресурсов, на средней высоте, на среднем расстоянии от союзников, далеко от врага

Функция оценки позиции может принимать следующие три фактора:

Score = Proximity to resources (closer yields a higher score) + 
terrain elevation (higher yields higher score) + 
proximity to allies (closer is better) + 
proximity to enemies (farther is better)

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

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

4. Большой стратегический ИИ

На вершине лестницы находится грандиозный стратегический ИИ, который решает, как выиграть игру.

Я думаю, что это, пожалуй, самый простой из всех, и создается впечатление, что он более впечатляющий, чем на самом деле. В такой игре будет только конечное количество типов побед. В статье упоминается победа над завоеванием, при условии, что есть победы Альянса и т. Д., Это может быть так же просто, как случайный выбор одного из типов и затем передача его в другие системы.

РЕДАКТИРОВАТЬ: Конечно, как указал DampeS8N, тип карты может диктовать наилучшее условие победы, в этом случае он может быть жестко закодирован проектировщиками или какой-либо функцией оценки, учитывающей различные переменные.

Резюме.
Я думаю, что действительно важно отметить, что система такого типа состоит в том, что, как подсистемы являются многоуровневыми, им не нужно много общаться друг с другом. Это выглядит как нисходящая архитектура со слабосвязанными компонентами. С точки зрения технического дизайна, он чистый и гибкий, и, вероятно, черпает вдохновение из Emergent Behavior и / или Subsuration Architecture .

Я действительно извиняюсь за длину этого поста, он превратился в чудовище :(

В любом случае, я надеюсь, что это поможет!


2
«Я думаю, что это, наверное, самый простой из всех, и создается впечатление, что он более впечатляющий, чем на самом деле». Я не был бы слишком уверен. Существует разница между простым принятием решения о победе завоеванием и принятием решения о том, кому объявить войну, о том, слишком ли мы чрезмерно растянуты и должны ли мы подавать в суд на мир, какая цель является самой слабой для атаки, какие подразделения нам необходимо построить, приобретая правильные стратегические ресурсы, чтобы сделать нашу армию сильнее, найти способ заставить двух врагов сражаться друг с другом и т. д. Этот этап намного сложнее, чем вы думаете.
Николь Болас

1
Вау, и я думал, что мой ответ становится немного длиннее. СМЕШНО. Хорошее шоу.
DampeS8N

1
Стоит отметить, что у Civ нет абсолютно простых условий победы. Есть много способов выиграть. Создание чудес, развитие науки, завоевания, дипломатии и так далее. Выбор, к которому можно обратиться, часто очень сложен и может меняться в зависимости от условий карты. Например, вы можете обнаружить, что тот, кого вы только что встретили, намного опережает вас в науке, и вам придется отказаться от этого пути и согласиться на новый. Часто успех сводится к тому, чтобы держать ваши варианты открытыми как можно дольше.
DampeS8N

@NicolBolas это может быть очень сложным, но все пункты, которые вы выдвинули, выглядят как обязанности для нижних уровней ИИ. Решать, кому объявить войну -> Оперативно. Какая цель является самой слабой для атаки -> Операционная / Тактическая. Приобретение подходящих ресурсов -> Операционные / Стратегические. Это полностью угадано, но имело бы смысл, чтобы низшие системы отвечали за конкретные стратегии, обеспечивающие самый низкий уровень связи.
Рэй Дей

1
@RayDey: Наивысший уровень ИИ должен быть связан с такими вещами, как приобретение ресурсов, потому что он должен решить, как его получить. Дипломатия может получить это. Расширение до ресурса может получить его. Операционный уровень не является подходящим местом для решения вопроса о том, следует ли бороться за него, в отличие от других тактик. Соединение является необходимостью для такой игры, как Civilization; все влияет на все остальное в этой игре. У вас не может быть эффективного ИИ, который принимает решения без большого количества связей. Хотя это может объяснить, почему ИИ в Civ V ... не особенно яркий;)
Никол Болас,

9

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

В этом случае ваша фундаментальная концепция неверна. Эти 4 системы вообще не должны работать вместе. Им просто нужно выглядеть так, как они. Они также могут быть намного более урезаны, чем вы думаете, они должны быть.

Вы также изменили порядок сложности. Самым сложным компонентом Civ AI является тактический AI, за которым следует операционный. Стратегия, вероятно, очень проста, и великий ИИ, вероятно, еще проще.

Связь между компонентами больше похожа на систему хрюканства и меньше похожа на реальное общение. С высокого уровня на низкий уровень это будет выглядеть так:

Великий ИИ

оценить состояние карты. Учитывая знания, которыми обладает ИИ (которым может быть все или только то, что он имел бы, если бы был игроком), он решает, какую конечную цель достичь быстрее всего. Скорее всего, это машина с конечным числом состояний , которая решает некоторые задачи и выбирает цель. Возможно, это что-то более экзотическое; генетический алгоритм или , возможно, на основе байесовской Штучки . Затем он проворчал сообщение типа «больше науки».

Страт А.И.

затем смотрит на то, что у него есть для работы, используя большую часть той же информации. Речь идет о попытках достичь этой общей цели, но также и о более детальных аспектах игры. Я на войне? Есть ли у меня голодные люди? скоро. Вероятно, это также машина с конечным состоянием , возможно, Fuzzy Logic (которая на самом деле является просто эволюцией в FSM.) Давайте предположим, что это простой FSM. Он задаст вышеупомянутые вопросы в том порядке, в котором, учитывая определенные критерии, он решит, что в этом раунде должны произойти разные вещи. Я на войне, выделяю деньги на подготовку солдат. Мои люди голодают, строят здесь зернохранилище, а не строят что-то научное.

Выбор единиц для сборки может быть частью Strat AI или Op AI в зависимости от того, как мы делим вещи.

Оп AI

возьмет отряды, которые доступны, и назначит их для перехода на разные фронты войны. Это решит общую форму конфликта, куда новые подразделения возглавят, как только они будут развернуты. Это, вероятно, также FSM. Он может заметить, что враг на фронте А атакует юнитами, слабыми против юнита В, и отправит туда больше юнитов В, а не на другой фронт, который силен против юнита В. Он будет отдавать общие приказы юнитам в целом. Атака по желанию. Отступление. Скоро.

Тактический ИИ

это конкретная единица. Каждый тип юнитов будет по-разному реагировать на общий порядок. Подразделение, предназначенное для самоубийства, может игнорировать приказ об отступлении. Отряды, которые являются воинами, могут отступать, даже когда им приказывают сражаться. Цив обычно очень легок в такого рода вещах. Как правило, все подразделения в Civ следуют своим командам. Учитывая больший порядок, в котором они находятся, они (видят образец здесь?) FSM. Я ранен? Я должен отступить и исцелиться. Есть ли у меня преимущество в этом месте? Атака. Я слишком близко к атаке? Отвали. И сложность этого FSM не должна быть намного больше, чем эти три вещи, чтобы быть эффективными и убедительными как интеллектуальные.

Можно ли это улучшить?

Да, конечно. Вопрос в том, заметят ли игроки. И 99% времени у них не будет.

Теперь, это все AI принятия решений. Здесь действуют другие подсистемы ИИ. Существует A * или другой алгоритм поиска пути, который позволяет юнитам найти кратчайший путь к локации. Существуют алгоритмы поиска лучшего места для начала новых городов. Скоро. Их часто группируют с ИИ, и зачастую они действительно более сложны, чем «думающая» часть ИИ. На самом деле, код для поиска ответов на вопросы, которые должен задать ФСМ, часто на несколько порядков сложнее, чем сам ФСМ. Как именно можно решить, что


Байесовский doohicky - потрясающе
Брайан Брум
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.