AI di gioco complessi per giochi di strategia a turni


26

Sto facendo delle ricerche per un progetto di gioco di strategia a turni e sto cercando buone risorse su questo argomento. Il gioco è un tipico gioco di guerra in cui i paesi possono combattere l'un l'altro, schierare unità e far muovere queste unità su una piastrella esagonale, attaccarsi a vicenda, ecc.

Sono particolarmente interessato a come è organizzata l'IA di Civilization V! Secondo Wikipedia, il gioco utilizza quattro diversi sistemi di intelligenza artificiale per diversi livelli di intelligenza artificiale del gioco:

  • l'IA tattica controlla le singole unità
  • l'IA operativa sovrintende all'intero fronte di guerra
  • l'IA strategica gestisce l'intero impero
  • la grande AI strategica stabilisce obiettivi a lungo termine e determina come vincere la partita

Concettualmente sembra che abbia molto senso raggiungere un'IA complessa e mi incuriosisce scoprire come questi diversi sistemi di intelligenza artificiale funzionano (e lavorano insieme). L'intelligenza artificiale tattica è probabilmente la più facile da capire poiché gestisce il processo decisionale per una singola unità (spostamento, attacco, riparazione, ritirata, ecc.), Ma penso che gli altri sistemi di intelligenza artificiale siano davvero interessanti. Ad esempio, cosa fa l'IA operativa e come lo fa? Sono sicuro che questi sono i segreti meglio custoditi da Firaxis Games, ma sarebbe bello iniziare qualche discussione su questo per saperne di più.

Inoltre, se qualcuno conosce qualche buon libro che gestisce l'intelligenza artificiale a turni, sarebbe bello saperlo. Ovviamente questo è un argomento scarsamente seminato sul web. Ho ottenuto "Programmazione dell'intelligenza artificiale dei giochi per esempio", ma quel libro riguarda più l'IA comportamentale per singolo agente che un'intelligenza artificiale di alto livello orientata agli obiettivi.

Risposte:


19

Mentre sono d'accordo con il paragrafo di apertura di DampeS8N (cioè gioco AI ha solo bisogno di essere abbastanza intelligente per rendere il giocatore pensa che è intelligente), ritengo che la questione ha bisogno di un po 'più di elaborazione. Le strutture di dati in uso potrebbero essere FSM per tutti i livelli, ma ciò non risponde alla domanda su come funzionano i singoli sistemi.

Disclaimer: ho appena giocato ai giochi di Civilization, quindi la mia comprensione del gameplay è limitata. Se ci sono errori evidenti, mi scuso. Per favore, correggimi e lo farò volentieri.

Prenderò citazioni dall'articolo IGN originale .

1. AI tattici

Al livello più basso, l'IA tattica usa le forze a portata di mano per vincere una battaglia su scala locale.

Questa è probabilmente la parte più standard del sottosistema. Esistono modi illimitati per eseguire questa operazione utilizzando FSM, alberi comportamentali (o persino eseguendo azioni casuali, a seconda della difficoltà dell'IA).

Tuttavia, poiché si tratta di un gioco a turni, simile a Rischio, penso che ciò che è più probabile che accada sia che ad ogni unità venga assegnato un punteggio. Ci sono quindi moltiplicatori collegati a questo punteggio a seconda delle diverse variabili (fedeltà, bonus terreno, ecc.).

Il risultato viene quindi calcolato da qualcosa del genere:

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

Ha senso che l'IA cercherà di massimizzare questo punteggio durante la battaglia.

Aggiungi un valore epsilon (ad esempio una piccola possibilità casuale di fallimento / successo) e hai un'intelligenza artificiale abbastanza decente (nessuno vuole un avversario perfetto, non è divertente!).

2. AI operativo

A un passo da ciò, l'IA operativa sceglie quali battaglie combattere e si assicura che siano disponibili le forze necessarie.

Penso che ci siano un paio di punti a questo:

  • Valutazione della forza attuale
  • Rinforzo di unità
  • Valutare quali combattimenti scegliere / evitare

Valutazione della forza attuale - Questo mi urla solo la Mappa dell'influenza . Può essere facilmente rappresentato su una griglia esadecimale. Poiché questo sottosistema è orientato al combattimento, i valori di influenza possono essere rappresentativi dei valori di forza di ciascuna unità nelle vicinanze. Se hai un enorme esercito focalizzato in una piccola area di esagoni, il valore dell'influenza sarà enorme e l'IA operativa ne terrà conto nel valutare i combattimenti da scegliere. Non dimenticare, verranno calcolati anche i valori di influenza degli eserciti avversari. Ciò consente all'intelligenza artificiale operativa di prevedere potenziali minacce in arrivo.

Rinforzi di unità - Ricevendo informazioni sulle fazioni opposte dalla mappa dell'influenza, l'IA può determinare quali unità sono maggiormente minacciate. L'intelligenza artificiale può quindi impartire un comando alle unità vicine per andare a rafforzare le parti minacciate.

Valutare quali combattimenti scegliere / evitare - Qui possono verificarsi un paio di situazioni. Se l'IA rileva un'unità in pericolo E non ci sono unità vicine per aiutarla, potrebbe a) decidere di sacrificare l'unità (se sono solo una fanteria umile, invece di un generale insostituibile, per esempio) oppure b) Ordinare l'unità ritirarsi. Viceversa, se l'IA rileva un'unità nemica debole vicino a un esercito, potrebbe ordinare alle unità di eliminare questo nemico.

Ecco un articolo decente che utilizza le mappe di influenza nei giochi di strategia in tempo reale.

3. AI strategico

Andando ancora più in alto, l'IA strategica gestisce l'intero impero, concentrandosi su dove costruire città e cosa farne.

"Dove dovrei costruire una città?" sembra solo una valutazione della posizione. I programmi di scacchi e altri giochi lo usano per determinare l'opportunità di una determinata posizione. Per esempio:

Esagono A: vicino alle risorse, su terreno elevato, vicino agli alleati, vicino al nemico Esagono B: lontano dalle risorse, su terreno di medio livello, distanza media dagli alleati, lontano dal nemico

La funzione di valutazione della posizione potrebbe assumere questi tre fattori in questo modo:

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)

E qualunque esagono abbia il punteggio più alto, sarà dove viene costruita la città. Ulteriori informazioni sulle funzioni di valutazione sono disponibili qui .

Suppongo che l'IA strategica abbia anche un sacco di strategie pseudo-pre-cotte nel gioco a seconda del tipo di vittoria che l'IA sta cercando.

4. Grand Strategic AI

In cima alla scala c'è la grande AI strategica, che decide come vincere la partita.

Penso che questo sia probabilmente il più semplice del gruppo, e dà l'impressione che sia più impressionante di quanto non sia in realtà. In una partita come questa, ci sarà solo un numero finito di tipi di vittoria. L'articolo menziona una vittoria della conquista, supponendo che ci siano anche vittorie dell'Alleanza, ecc., Potrebbe essere semplice come scegliere casualmente uno dei tipi e poi passarlo agli altri sistemi.

EDIT: Naturalmente, come sottolineato da DampeS8N, il tipo di mappa potrebbe dettare la migliore condizione di vittoria, nel qual caso potrebbe essere codificato dai progettisti o una sorta di factoring di funzione di valutazione in variabili diverse.

Riepilogo
Penso che la cosa veramente importante da notare su questo tipo di sistema sia che il modo in cui i sottosistemi sono stratificati, in realtà non hanno bisogno di comunicare molto tra loro. Sembra essere un'architettura dall'alto verso il basso con i componenti liberamente accoppiati. Dal punto di vista della progettazione tecnica è pulito ed è flessibile e probabilmente prende ispirazione da Emergent Behavior e / o Subsumption Architecture .

Mi scuso davvero per la lunghezza di questo post, è diventato un po 'una bestia :(

Ad ogni modo, spero che sia d'aiuto!


2
"Penso che questo sia probabilmente il più semplice del gruppo, e dà l'impressione che sia più impressionante di quanto non sia in realtà." Non ne sarei troppo sicuro. C'è una differenza tra il semplice decidere di ottenere una vittoria sulla conquista e decidere su chi dichiarare la guerra, se siamo troppo estesi e dobbiamo fare causa per la pace, quale obiettivo è il più debole da attaccare, quali unità dobbiamo costruire, acquisire le giuste risorse strategiche per rafforzare il nostro esercito, trovando un modo per far combattere due nemici, ecc. Questa fase è molto più complicata di quanto tu gli dia credito.
Nicol Bolas,

1
Wow, e ho pensato che la mia risposta sarebbe stata un po 'lunga. LOL. Bello spettacolo.
DampeS8N,

1
Una cosa degna di nota è che Civ non ha assolutamente semplici condizioni di vittoria. Ci sono molti modi per vincere. Costruire meraviglie, far progredire la scienza, conquistare, diplomatici, ecc. Scegliere quale scegliere è spesso molto difficile e può cambiare in base alle condizioni della mappa. Potresti scoprire, per esempio, che qualcuno che hai appena incontrato è molto più avanti di te nella scienza, e dovrai abbandonare quel percorso e accontentarti di uno nuovo. Spesso il successo si riduce a mantenere le opzioni aperte il più a lungo possibile.
DampeS8N,

@NicolBolas potrebbe benissimo essere più complesso di così, ma tutti i punti che hai sottolineato sembrano essere responsabilità per i livelli inferiori dell'IA. Decidere su chi dichiarare guerra -> Operativo. Quale bersaglio è il più debole da attaccare -> Operativo / Tattico. Acquisire le giuste risorse -> Operative / strategiche. Questo è del tutto indovinato, ma avrebbe senso che i sistemi inferiori siano responsabili delle strategie specifiche per garantire il livello più basso di accoppiamento.
Ray Dey,

1
@RayDey: il massimo livello di intelligenza artificiale deve essere coinvolto in cose come l'acquisizione delle risorse, perché deve decidere come ottenerlo. La diplomazia potrebbe ottenerlo. L'espansione alla risorsa potrebbe ottenerlo. Il livello operativo non è il posto giusto per decidere se uno dovrebbe combattere su di esso rispetto ad altre tattiche. L'accoppiamento è una necessità per un gioco come Civilization; tutto influenza tutto il resto in quel gioco. Non puoi avere un'intelligenza artificiale efficace che prende decisioni senza molto accoppiamento. Anche se questo potrebbe spiegare perché l'intelligenza artificiale di Civ V non è ... particolarmente brillante;)
Nicol Bolas,

9

In generale, l'intelligenza artificiale nei giochi non dovrebbe essere considerata "complessa", ma si tratta solo di ottenere ciò che si desidera con il minor sforzo possibile. Il nome del gioco è Emergence.

In questo caso, la tua concettualizzazione fondamentale è sbagliata. Questi 4 sistemi non devono lavorare insieme. Devono solo sembrare come loro. Possono anche essere molto più spogliati di quanto pensiate debbano essere.

Hai anche invertito l'ordine di difficoltà. La componente più difficile di Civ AI è l'IA tattica, seguita da vicino dall'Operazionale. La strategia è probabilmente molto semplice e la grande intelligenza artificiale è probabilmente ancora più semplice.

La comunicazione tra i componenti è più simile a un sistema di grugniti e meno come una vera comunicazione. Dall'alto al basso sarebbe simile al seguente:

Grand AI

valutare lo stato della mappa. Data la conoscenza dell'IA (che potrebbe essere tutto o solo ciò che avrebbe se fosse un giocatore) decide quale obiettivo finale è più veloce da raggiungere. È probabilmente una macchina a stati finiti che fa un certo scricchiolio di numeri e sceglie un obiettivo. Forse è qualcosa di più esotico; un algoritmo genetico o forse un doohickey a base bayesiana . Quindi grugnisce un messaggio come "più scienza".

Strat AI

poi guarda cosa ha a disposizione per lavorare con gran parte delle stesse informazioni. Cerca di raggiungere quell'obiettivo generale, ma si preoccupa anche di aspetti più dettagliati del gioco. Sono in guerra? Ho delle persone affamate? presto. Probabilmente è anche una macchina a stati finiti , forse Fuzzy Logic (che in realtà è solo un'evoluzione su un FSM.) Supponiamo che sia un semplice FSM. Porrà le domande di cui sopra in un ordine in cui, dati determinati criteri, deciderà che cose diverse devono accadere in questo round. Sono in guerra, stallo denaro per addestrare i soldati. La mia gente muore di fame, costruisce qui un granaio piuttosto che costruire qualcosa di scientifico.

Scegliere quali unità costruire potrebbero far parte di Strat AI o Op AI a seconda di come stiamo dividendo le cose.

Op AI

prenderà le unità disponibili e le assegnerà per spostarsi su diversi fronti di guerra. Deciderà la forma generale del conflitto, in cui le nuove unità si dirigeranno una volta schierate. Probabilmente è anche un FSM. Può notare che il nemico sul Fronte A sta attaccando con unità deboli contro l'Unità B, e invierà lì più Unità B, piuttosto che all'altro Fronte che è forte contro l'Unità B. Emetterà ordini generali alle unità in generale. Attacco a volontà. Ritiro. Presto.

AI tattico

è specifico per unità. Ogni tipo di unità reagirà in modo diverso all'ordine generale. Un'unità destinata al suicidio può ignorare un ordine di ritirata. Le unità che sono wusses possono ritirarsi anche quando viene loro richiesto di combattere. Civ è in genere molto leggero su questo tipo di cose. Generalmente tutte le unità di Civ seguono i loro comandi. Dato l'ordine più grande in cui si trovano, sono (vedi uno schema qui?) Un FSM. Sono ferito? Dovrei tirarmi indietro e guarire. Ho un vantaggio in questa posizione? Attacco. Sono troppo vicino per attaccare? Indietro. E la complessità di questo FSM non deve essere molto più di queste 3 cose per essere efficace e convincente come intelligente.

Questo può essere migliorato?

Sì, naturalmente. La domanda è se i giocatori se ne accorgeranno. E il 99% delle volte non lo faranno.

Ora, questo è tutto AI decisionale. Ci sono altri sottosistemi AI in gioco qui. Esiste A * o qualche altro algoritmo di ricerca del percorso che consente alle unità di trovare il percorso più breve verso una posizione. Esistono algoritmi per trovare la posizione migliore per iniziare nuove città. Presto. Spesso sono raggruppati con l'IA e spesso sono davvero più complessi della parte "pensante" dell'IA. In effetti, il codice per trovare le risposte alle domande che l'FSM deve porre è spesso ordini di grandezza più complessi rispetto all'FSM stesso. Come lo si decide esattamente


Doohicky di Bayesian - fantastico
Brian Broom il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.