en
Problema

Automatizzare la guida dei piloti avversari all’interno di un videogioco di racing fino ad ottenere un livello di sfida e un comportamento il più possibile vicino a quello umano.

Situazione iniziale

Lo sviluppo di un videogioco richiede un importante quantitativo di ore spese nella programmazione di ogni singolo dettaglio, dall’ambiente virtuale alla simulazione dei comportamenti dei piloti in pista.
Tali attività sono svolte da team di programmatori esperti che impostano a priori ogni singola azione compiuta dai piloti, con tempi di sviluppo molto elevati e ottenendo risultati che a volte non soddisfano gli utenti finali in termini di realismo dei comportamenti di guida.

Soluzione messa in campo

L’introduzione di tecniche di Intelligenza Artificiale ha cambiato completamente l’approccio alle attività di sviluppo del cliente: i programmatori non impongono più dei comportamenti prestabiliti, ma forniscono all’AI una visione del mondo circostante, un obiettivo e le azioni da utilizzare per poterlo raggiungere. Attraverso un sofisticato meccanismo di rewarding, l’AI viene informata in merito a quali comportamenti sono utili al raggiungimento dello scopo e quali invece sono dannosi; sarà poi l’AI stessa ad imparare il modo migliore per raggiungere l’obiettivo prefissato.
Questo approccio si definisce in gergo tecnico “Reinforcement Learning” e permette di ottenere un’AI che percepisce l’ambiente che la circonda e quanto siano utili o controproducenti le azioni svolte: in questo modo la strategia di gioco emerge dall’interazione dell’AI con l’ambiente senza dover essere imposta a priori da un programmatore.

La soluzione infrastrutturale ad-hoc, messa in campo per la gestione della fase di training, ha permesso di simulare un numero incredibilmente alto di gare in poco tempo (circa 200.000 gare in una giornata di lavoro, più di quante un pilota professionista possa farne in tutta la vita). Durante il training l’AI cerca di capire se le conseguenze di ogni sua azione sono positive o negative in relazione al raggiungimento del proprio scopo (fase di exploration), e successivamente sfrutta la propria esperienza e la conoscenza accumulata per ottenere il miglior reward possibile (fase di exploitation).

Per l’implementazione della rete neurale è stato usato PyTorch, il framework di deep learning open source sviluppato dal Facebook AI Research group (FAIR). Il modello implementato è l’Actor-Critic, caratterizzato da due reti distinte che interagiscono tra loro. La rete Actor stabilisce l’azione da eseguire in un certo stato.
L’ambiente esterno (in questo caso la pista, le condizioni climatiche, le impostazioni della motocicletta) viene percepito e misurato tramite sensori di input collegati alla rete Actor che elabora questi input all’interno della valutazione dello stato. La stima dello stato e le eventuali ricompense vengono comunicate all’agente che compie un’azione. La rete Critic valuta le conseguenze di tale azione, modificando lo stato.

L’obiettivo dell’interazione tra le due reti è quello di massimizzare la ricompensa ottenuta per le diverse azioni intraprese nel tempo.

Risultati raggiunti

La soluzione messa in campo permette ai giocatori di avere un livello di sfida incredibile, con avversari più intelligenti, più veloci e che approfittano di ogni singolo errore del giocatore. Il risultato di questo lavoro è un comportamento di guida estremamente realistico e naturale, in cui le manovre e le tecniche di guida sono molto simili a quelle di un pilota professionista.

Anche dal punto di vista delle performance, il comportamento in pista dell’AI si avvicina a quello dei veri piloti, con tempi sul giro molto inferiori rispetto a un sistema programmato tradizionalmente.
Anche il comportamento in gruppo risulta più aggressivo ma corretto nei confronti degli altri piloti in pista.

Sviluppi in corso

Sono in corso diversi progetti interni relativi all’utilizzo di tecniche di Intelligenza Artificiale per l’ottimizzazione di altre componenti legate ai videogiochi. In particolare stiamo studiando una soluzione per aumentare il realismo del comportamento del pilota, sia in sella che durante la caduta tramite un approccio di motion synthesis guidato da reti neurali e basato sull’analisi di filmati esistenti.