L'intelligenza artificiale nei videogames: capire il gioco, Parte I

Come sono implementate le AI nei videogiochi? Perché sono diverse dai bot che è possibile trovare nei giochi attuali?

speciale L'intelligenza artificiale nei videogames: capire il gioco, Parte I
Articolo a cura di

Chi ci segue su Everyeye Tech avrà letto i nostri articoli sull'intelligenza artificiale (da qui in poi AI, artificial intelligence), la nuova frontiera dell'informatica che si sta insinuando nel mondo tramite diverse applicazioni. Dai bot in Dota2, alle armi intelligenti e al riconoscimento del volto di iPhone X, l'AI è oggetto di ricerca di molti settori tecnologici. Negli studi vengono spesso sfruttati i videogames per realizzare e testare le AI: il già citato Dota2, Starcraft 2, Ms. Pacman ed ora anche Super Mario Bros. Nel presente articolo e quelli successivi vogliamo spiegarvi come viene implementata un'AI in un videogioco, quindi analizzeremo nello specifico a livello concettuale (quindi senza vedere nessuna linea di codice) cosa fa un algoritmo basato sul machine learning e perché questo impara mentre acquisisce dati. L'obiettivo è capire esattamente perché le future AI sono algoritmi intelligenti che si differenziano da quelli attuali e quali sono i loro limiti, sfruttando come caso di studio proprio un videogioco: Super Mario Bros.


Comprendere la struttura di un videogioco per adattarla ad un AI

L'Automated Game Understanding è il campo di studio recente che applica l'AI ad un videogames, ovvero un sistema che è in grado di svolgere determinate azioni senza che venga esplicitamente programmato per farle. L'idea è che il programma sia scritto in modo che accetti degli input e decida gli output dopo l'analisi dati, dunque che sia in grado di variare la decisione finale in corrispondenza di quello che sta accadendo sullo schermo in quell'istante. In linea di principio lo schema logico è quello che seguirebbe un essere umano: chi sta attraversando la strada si guarda nei dintorni per individuare un potenziale pericolo, così da decidere se procedere verso le strisce pedonali oppure fermarsi ed aspettare il passaggio di un'eventuale automobile. Nel nostro caso del gioco Super Mario Bros. (che non ha bisogno di nessuna presentazione) l'algoritmo effettuerà lo scan di quello che succede sullo schermo, sfruttando il singolo pixel che rappresenta la sensibilità minima, ovvero l'unità di misura dello schermo intero.

L'idea è far sì che il risultato sia un motore che derivi le regole del platform game semplicemente analizzando quello che accade nei pixel istante per istante, ovvero creare un nuovo engine che sia simile al game engine. Per game engine si intendono tutte le meccaniche regolate da un principio di causa/conseguenza: ad esempio se Mario è in caduta libera e atterra sul pavimento, allora smetterà di cadere (questa è una meccanica di base che costituisce il game engine). Perché creare un algoritmo che simuli Super Mario Bros. analizzando il gioco in base a quello che accade sullo schermo? I ricercatori dietro a questo studio hanno come obiettivo l'avanzamento della conoscenza in ambito di AI e chiaramente è necessario partire da videogiochi semplici per realizzare intelligenze artificiali più complesse. Una volta che il learned engine avrà imparato come funziona il game engine, in linea di principio potrà giocare a Super Mario Bros. autonomamente, senza che venga riprogrammato.

Imparare le regole del gioco per dominare il gioco

Come tutti i videogiocatori sanno, per essere dei veri e propri ‘pro player' è necessaria molta dedizione verso un singolo gioco, così da capire tutte le sue meccaniche e i suoi limiti. L'AI che analizzeremo viene creata allo stesso modo: analizza il gioco e ne impara il funzionamento. Questa è la vera differenza tra un'AI e tutti i bot e gli script che da anni vengono implementati nei videogames: un bot in Ultra Street Fighter IV non ha la facoltà di analizzare lo stile di gioco del player umano, deve per forza obbedire alle regole che gli sono state imposte dai programmatori. Un'AI agisce come un essere umano, perché è programmata per ricevere in input le mosse del suo avversario ed agire di conseguenza.

Se un bot in un gioco di avventura non è stato ‘scritto' in modo che sia in grado di saltare, quello non potrà mai saltare, a meno che non venga rilasciato un update che inserisca nel suo codice questa possibilità. Un bot programmato per essere un AI invece è in grado di saltare se il gioco prevede quell'azione nelle sue meccaniche di base, senza che nessuno gli dica esplicitamente di farlo. Per contro però, l'AI necessita del tempo per essere addestrata, altrimenti sarà totalmente incapace di compiere qualunque azione. A seconda della complessità del gioco ci vorrà diverso tempo per l'apprendimento: ad esempio per il caso di Dota2 ci sono volute diversi mesi per addestrare un bot affinché potesse sconfiggere i migliori giocatori, un tempo lungo ma infinitamente minore degli anni che hanno impiegato i pro player a diventare tali.

In questo primo articolo abbiamo analizzato cosa fa un algoritmo di un AI, mentre nel prossimo vedremo la differenza tra l'automated game understanding e l'automated game playing, ovvero cosa cambia tra un'AI che cerca di capire il funzionamento del gioco (il caso che vogliamo analizzare) e un'AI che cerca di capire come giocare ad un gioco.