Хотя я согласен с вступительным параграфом 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 .
Я действительно извиняюсь за длину этого поста, он превратился в чудовище :(
В любом случае, я надеюсь, что это поможет!