Комплексний ігровий інтелект для покрокових стратегічних ігор


26

Я займаюся деякими дослідженнями покрокового проекту стратегічних ігор і шукаю хороших ресурсів на цю тему. Гра - це типова військова гра, в якій країни можуть воювати між собою, розгортати підрозділи і змушувати цих підрозділів рухатися по шестикутній мапі, атакувати один одного тощо.

Мене особливо цікавить, як організовано AI цивілізації V! Згідно з Вікіпедією, гра використовує чотири різні системи AI для різних шарів ІІ графіка:

  • тактичний АІ контролює окремі підрозділи
  • оперативний ШІ контролює весь військовий фронт
  • стратегічний ШІ керує всією імперією
  • грандіозний стратегічний ШІ встановлює довгострокові цілі та визначає, як виграти гру

Концептуально це виглядає так, що має багато сенсу досягти складного ШІ, і мені цікаво дізнатися про те, як працюють ці різні системи ШІ (і працюють разом). Тактичний ІІ, мабуть, найпростіший для розуміння, оскільки він справляється з прийняттям рішень для одного підрозділу (переміщення, атака, ремонт, відступ тощо), але я думаю, що інші системи AI - це там, де це дійсно стає цікавим. Наприклад, що робить операційний ШІ та як це робить? Я впевнений, що це найкраще збережені таємниці від Firaxis Games, але було б круто розпочати дискусію з цього питання, щоб дізнатися більше про неї.

Також якщо хтось знає якісь хороші книги, які обробляють покрокову стратегічну гру AI, було б чудово знати. Очевидно, це рідко насічена тема в Інтернеті. Я отримав "Ігра програмування AI на прикладі", але ця книга більше стосується AI поведінки одного агента, ніж AI, орієнтованого на цілі високого рівня.

Відповіді:


19

Хоча я згоден з початковим пунктом 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, тип карти може диктувати найкращу умову перемоги, у якій випадку дизайнери можуть бути жорстко кодовані або якоюсь функцією оцінки факторингу в різних змінних.

Резюме
Я думаю, що важливо відзначити цю систему в тому, що те, як підсистеми є багатошаровими, їм насправді не потрібно багато спілкуватися з іншими. Схоже, це архітектура зверху вниз зі складовими компонентами. З точки зору технічного дизайну, це чисто і гнучко, і, ймовірно, бере натхнення у надзвичайній поведінці та / або архітектурі підписки .

Я дійсно вибачаюсь за тривалість цієї публікації, вона перетворилася на трохи звіра :(

У будь-якому випадку, я сподіваюся, що це допомагає!


2
"Я думаю, що це, мабуть, найпростіший з цих букетів, і це створює враження, що це більш вражаюче, ніж є насправді". Я б не був дуже впевнений. Існує різниця між тим, що просто вирішити піти на перемогу завоювання та вирішити, кому оголосити війну, чи ми занадто розширені і чи потрібно подавати позов за мир, яка ціль є найслабшою для нападу, які підрозділи ми повинні будувати, набуваючи правильні стратегічні ресурси для посилення нашої армії, знаходження способу змусити двох ворогів боротися один з одним і т. д. Цей етап набагато складніший, ніж ви йому даєте заслугу.
Нікол Болас

1
Нічого собі, і я подумав, що моя відповідь стає трохи довгою. ЛОЛ. Гарне шоу.
DampeS8N

1
Варто зазначити, що Civ абсолютно не має простих умов перемоги. Є багато способів перемогти. Будуючи чудеса, просуваючи науку, завойовуючи, дипломатичні тощо. Вибрати, куди піти, часто буває дуже складно, і може змінитися залежно від умов карти. Ви можете, наприклад, виявити, що хтось, кого ви тільки що познайомилися, набагато випереджає вас у науці, і вам доведеться відмовитися від цього шляху і влаштуватися на новий. Часто успіх зводиться до того, щоб тримати ваші параметри відкритими на довгий час.
DampeS8N

@ NicolBolas це може бути дуже складним за це, але всі пункти, які ви зробили, виглядають як відповідальність за нижчі рівні ШІ. Вирішення, кому оголосити війну -> Оперативні. Яка ціль є найслабшою для атаки -> Оперативна / Тактична. Набуття потрібних ресурсів -> Оперативні / Стратегічні. Це цілком здогадується, але було б сенс, щоб нижчі системи відповідали за конкретні стратегії забезпечення нижчого рівня зв'язку.
Рей Дей

1
@RayDey: Найвищий рівень ШІ повинен бути залучений до таких речей, як придбання ресурсів, тому що йому потрібно вирішити, як його отримати. Дипломатія могла це отримати. Розширення ресурсу могло б отримати його. Операційний рівень не є належним місцем для вирішення питання про те, чи варто боротися за нього на відміну від інших тактик. З’єднання - необхідність для гри, такої як Civilization; все впливає на все інше в цій грі. Ви не можете мати ефективний інтелектуальний інтелект, який приймає рішення без великого зв’язку. Хоча це може пояснити, чому AI Civ V ... не особливо яскравий;)
Нікол Болас

9

Взагалі AI в іграх не слід вважати «складним», це все, щоб отримати те, що ви хочете, з найменшими зусиллями. Назва гри - Emergence.

У цьому випадку ваша фундаментальна концептуалізація неправильна. Цим 4 системам взагалі не потрібно працювати разом. Вони просто повинні виглядати як вони. Вони також можуть бути набагато більш позбавленими, ніж ви вважаєте, що потрібно.

Ви також змінили порядок складності. Найважчим компонентом Civ AI є тактичний ШІ, за яким уважно слідує Оперативний. Стратегічний, мабуть, дуже простий, а грандіозний ШІ, мабуть, ще простіший.

Комунікація між компонентами більше нагадує систему бурчання і менш схожа на реальну комунікацію. Від високого до низького рівня це виглядатиме так:

Великий ІІ

оцінити стан карти. З огляду на знання, які має AI (який може бути все або тільки те, що він би мав, якби це був гравець), він вирішує, яку кінцеву мету найшвидше досягти. Це, швидше за все, машина кінцевого стану, яка робить певну кількість хрускіт і підбирає мету. Можливо, це щось більш екзотичне; генетичний алгоритм або , можливо, на основі байєсівської Штучки . Потім воно бурчить за повідомленням на кшталт "більше науки".

Страт ІІ

потім розглядає, з чим він може працювати, використовуючи багато тієї ж інформації. Йдеться про спробу досягти цієї загальної мети, а також хвилює більш детальні аспекти гри. Я воюю? У мене є голодуючі люди? так далі. Це, мабуть, також машина з кінцевим станом , можливо, Fuzzy Logic (що насправді є лише еволюцією на FSM.) Припустимо, що це проста FSM. Він задаватиме вищезазначені питання у порядку, коли за певними критеріями він вирішить, що в цьому раунді потрібно зробити різні речі. Я воюю, виділяю кошти для підготовки солдатів. Мої люди голодують, будують тут зерносховище, а не будують щось наукове.

Вибір об'єктів для побудови може бути частиною Strat AI або Op AI залежно від того, як ми розбиваємо речі.

Op AI

візьме підрозділи, які є в наявності, і призначить їм перейти на різні фронти війни. Він вирішить загальну форму конфлікту, де нові підрозділи очолюватимуть, коли вони будуть розгорнуті. Це, мабуть, також FSM. Можливо, помітить, що противник на фронті А атакує слабкими підрозділами проти підрозділу В і направить туди більше підрозділів Б, а не на інший фронт, який є сильним проти підрозділу В. Він видасть загальні накази підрозділам у цілому. Атака за бажанням. Відступ. Так далі.

Тактичний ШІ

є одиничним. Кожен тип підрозділу по-різному реагуватиме на загальний порядок. Підрозділ, призначений для самогубства, може ігнорувати наказ про відступ. Підрозділи, що перебувають у вусі, можуть відступити навіть тоді, коли їм наказано битися. Civ, як правило, дуже легкий для подібних речей. Як правило, всі підрозділи в Civ виконують свої команди. Враховуючи більший порядок, під яким вони перебувають, вони (див. Зразок тут?) FSM. Я травмований? Я повинен відмовитися і вилікуватися. Чи маю я перевагу в цьому місці? Атака. Я занадто близький для нападу? Відступаємо. І складність цього FSM не повинна бути набагато більшою, ніж ці 3 речі, щоб бути ефективними та переконливими як розумні.

Чи можна це покращити?

Так, звісно. Питання в тому, чи помітять гравці. І 99% часу вони цього не роблять.

Тепер це все AI, що приймає рішення. Тут грають інші підсистеми ШІ. Існує A * або якийсь інший алгоритм пошуку шляху, який дозволяє одиницям знайти найкоротший шлях до місця. Існують алгоритми пошуку найкращого місця для початку нових міст. Так далі. Часто вони згруповані з ШІ, і часто є справді складнішими, ніж частина, що мислить. Насправді, код пошуку відповідей на запитання, які FSM повинен задати, часто на замовлення складніший, ніж сам ФДМ. Як саме це вирішує


Байезіанський заснований Духікі - приголомшливий
Брайан Мітла
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.