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!