È il 2005, siamo nascosti dietro ad un riparo improvvisato, il team nemico ci inchioda con il fuoco di soppressione, due soldati sfruttano la loro posizione di vantaggio per aggirarci mentre siamo distratti, ci ritroviamo circondati: game over.

F.E.A.R è stato, e forse è ancora uno dei punti più alti in termini di qualità dell’intelligenza artificiale di un videogioco, ma se già nel 2005 eravamo a questo livello, perché l’IA non pare essere progredita nei giochi – almeno mediamente – quanto lo ha fatto ad esempio la grafica? 

Non esiste una risposta univoca a questa domanda, ma in questo articolo cercheremo di analizzare l’IA di alcuni titoli, provando a capire almeno alcune delle motivazioni che rendono ancora oggi l’intelligenza artificiale uno degli aspetti più complicati da creare e gestire per una software house.

Uno dei primi esempi di IA in un “videogioco” compare nel 1951 con Nimrod, un computer dalle modeste dimensioni di 3.7×2.7 metri in grado di sfruttare la propria potenza di calcolo per sconfiggere avversari umani a “Nim”, un gioco di strategia matematica che è stato risolto per tutte le sue combinazioni iniziali. Com’è ovvio che sia sono proprio la potenza di calcolo di un computer e la possibilità di “risolvere” matematicamente un problema, gli elementi che danno un sostanziale vantaggio all’intelligenza artificiale nell’ambito dei videogiochi.

Se da una parte abbiamo giochi strategici a turni dove un computer può “facilmente” dominare, basti pensare a Deep Blue per gli scacchi, dall’altra con il progredire dell’industria del videogioco ci troviamo di fronte a titoli che non sembrano prestarsi bene al “classico” modello di intelligenza artificiale, basti pensare al già citato F.E.A.R dove il numero di situazioni possibili è praticamente infinito. Come fa in questo caso un’IA a vincere sempre? La risposta giusta è che l’IA in un videogioco non vuole vincere sempre, ma vuole offrire un livello di sfida “giusto” al giocatore

Se volessimo un’IA che batte sempre il giocatore ci basterebbe sfruttare un po’ di machine learning per lasciare che il programma impari come giocare simulando un altissimo numero di partite in un tempo relativamente breve. Un esempio di ciò è OpenAI Five, un team di bot in grado di giocare in maniera più che competitiva al MOBA DOTA 2. Nel caso di OpenAI Five troviamo però già dei limiti imposti dai programmatori, come ad esempio tempi di reazione limitati per essere comparabili a quelli di un giocatore umano.

Il segreto di una buona IA non è quindi nello sfruttamento brutale e insensato del proprio potenziale, ma in un bilanciamento che riesca a renderla quanto più simile possibile ad un avversario umano. Per F.E.A.R i programmatori hanno sfruttato principalmente tre tipologie di intelligenze artificiali, le prime due sono particolarmente utilizzate nell’ambito dei videogiochi, trattasi di FSM e A*.

Finite-State Machines

Una Finite-State Machine, detta in italiano “automa a stati finiti” è un tipo di automa che lavora con un pre-determinato numero di stati, e che può trovarsi in un certo momento in uno di essi, cambiando a seconda delle condizioni al contorno. Nella realtà siamo circondati da automi a stati finiti, basti pensare ad esempio ad un carrello della spesa, esso – in particolare il suo lucchetto – può avere due stati: con una moneta inserita e sbloccato, senza una moneta inserita e bloccato. All’interno dei videogiochi le FSM sono presenti in maniera massiccia, aumentando il numero di stati e le condizioni per i quali la macchina passa da uno stato ad un altro, si può creare un sistema molto complesso, che se ben strutturato potrebbe far sembrare al giocatore di avere a che fare con qualcosa di “reale”. 

FSM che rappresenta il “cervello” di un nemico.

Tra i principali vantaggi di questo modello di automa abbiamo la sua semplicità di implementazione, tra gli svantaggi però abbiamo che FSM di grande complessità diventano molto difficili da gestire (almeno a livello concettuale). Per programmare un’IA tramite FSM dobbiamo avere cura di capire quali sono tutti gli stati nei quali vogliamo che il nostro oggetto possa trovarsi, altra cosa fondamentale è scegliere bene gli “switch” che facciano passare la macchina da uno stato all’altro. Se da una parte il concetto è molto semplice, dall’altra esso si traduce in un numero molto alto di stati intercambiabili che vanno gestiti in maniera precisa.

Un cambio di stato mal gestito è facilmente notabile: basti pensare a NPC che passano dall’aver visto un potenziale intruso al chiaccherare di tutt’altro nel giro di pochi istanti.

A* algorithm

Altro fondamentale algoritmo (e non solo per i videogiochi) che viene utilizzato nelle IA è l’A-star search algorithm, un modello matematico di scelta di percorso che riesce a trovare un “sentiero” tra due punti…

[…]Leggi di più su www.tomshw.it

Rispondi