Хоча я згоден з початковим пунктом DampeS8N (тобто гра AI повинна бути лише розумною, щоб змусити гравця думати, що це розумно), я вважаю, що це питання потребує трохи більшого розробки. Використовувані структури даних можуть бути FSM на всіх рівнях, але це насправді не відповідає на питання про те, як працюють окремі системи.
Відмова: Я навряд чи грав у ігри Civilization, тому моє розуміння ігрового процесу обмежене. Якщо є явні помилки, я вибачаюся. Будь ласка, виправте мене, і я з радістю відредагую.
Я буду брати цитати з оригінальної статті про IGN .
1. Тактичний ШІ
На найнижчому рівні тактичний ШІ використовує сили під рукою, щоб виграти битву на місцевому рівні.
Це, мабуть, найстандартніша частина підсистеми. Існує необмежений спосіб здійснити це за допомогою використання FSM, дерев поведінки (або навіть виконання випадкових дій, залежно від складності ШІ).
Однак, оскільки це покрокова гра, схожа на 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
Має сенс, що AI спробує і максимізувати цей рахунок, коли в бою.
Додайте значення epsilon (наприклад, невеликий випадковий шанс невдачі / успіху), і ви отримали досить пристойний зовнішній вигляд AI (ніхто не хоче ідеального суперника, це просто не весело!).
2. Операційний ШІ
Один крок від цього, оперативний ШІ визначає, які бійки ведуть боротьбу, і гарантує наявність необхідних сил.
Я думаю, що є кілька моментів до цього:
- Оцінка сили струму
- Армування підрозділів
- Оцінка яких боїв вибрати / уникати
Оцінка поточної сили - Це просто кричить на мене карту впливу . Його можна легко представити на шестигранній сітці. Оскільки ця підсистема орієнтована на бойові дії, значення впливу можуть бути репрезентативними для показників міцності кожної одиниці, яка знаходиться поблизу. Якщо у вас є масивна армія, зосереджена на невеликій ділянці шестикутників, значення впливу буде величезним, і оперативний ШІ врахує це при оцінці боїв для вибору. Не забувайте, також будуть розраховані значення впливу протиборчих армій. Це дозволяє оперативному ШІ прогнозувати можливі вхідні загрози.
Підсилення підрозділів - Отримавши інформацію про протилежні фракції з карти впливу, ШІ може визначити, які підрозділи знаходяться під найбільшою загрозою. Тоді AI може дати команду наближеним підрозділам для переходу та посилення загрозливих сторін.
Оцінка того, які бійки вибирати / уникати - тут може статися кілька ситуацій. Якщо AI виявить, що підрозділ знаходиться під загрозою, і немає поблизу підрозділів, які допомогли б йому: а) вирішити принести в жертву підрозділ (якщо вони просто пехота, замість незамінного генерала, наприклад) або б) замовити підрозділ відступити. І навпаки, якщо ШІ виявить слабкий ворожий підрозділ біля армії, він може наказати підрозділам вивести цього ворога.
Ось гідний документ, який використовує карти впливу в іграх стратегії реального часу.
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)
І той, де шестикутник має вищий бал, буде там, де будується місто. Більше інформації про функції оцінювання можна знайти тут .
Я вважаю, що стратегічний AI також має купу псевдозаздалегідь розроблених стратегій у грі залежно від типу перемоги.
4. Великий стратегічний ШІ
На вершині трапа - грандіозний стратегічний AI, який вирішує, як виграти гру.
Я думаю, що це, мабуть, найпростіша з купки, і це створює враження, що це більш вражаюче, ніж є насправді. У такій грі, як перемога, буде лише обмежена кількість видів перемоги. У статті згадується перемога завоювання, припускаючи, що є також перемоги Альянсу тощо, це може бути таким же простим, як випадковий вибір одного з типів, а потім передавання його іншим системам.
EDIT: Звичайно, як вказував DampeS8N, тип карти може диктувати найкращу умову перемоги, у якій випадку дизайнери можуть бути жорстко кодовані або якоюсь функцією оцінки факторингу в різних змінних.
Резюме
Я думаю, що важливо відзначити цю систему в тому, що те, як підсистеми є багатошаровими, їм насправді не потрібно багато спілкуватися з іншими. Схоже, це архітектура зверху вниз зі складовими компонентами. З точки зору технічного дизайну, це чисто і гнучко, і, ймовірно, бере натхнення у надзвичайній поведінці та / або архітектурі підписки .
Я дійсно вибачаюсь за тривалість цієї публікації, вона перетворилася на трохи звіра :(
У будь-якому випадку, я сподіваюся, що це допомагає!