Intelligenza Artificiale – Sotto la Scocca

scocca-intelligenza-artificiale-1280x720

Cos’è l’Intelligenza Artificiale nei videogiochi?

Ancora una volta parlerò di un argomento scelto dal pubblico: l’intelligenza artificiale, che nei videogiochi è un argomento molto nebuloso ed estremamente complesso. Come al solito inizio il discorso offrendovi un’infarinatura generale. In un videogioco l’Intelligenza Artificiale ha lo scopo di simulare un comportamento intelligente, e non quello di creare una vera e propria intelligenza artificiale per come è inteso il termine in ambito accademico. L’IA, al pari di altri fattori, è uno strumento costruito per un gioco, estremamente specifico e tarato per uno scopo. Tutte le IA dei giochi possono essere definite come dei grossi condizionali ovvero se succede X, fai Y, per poi ovviamente costruirne di più avanzate, ad alto livello.

Come interagisce l’IA con il mondo di gioco? In generale ci sono due sistemi: Push e Pull. In un sistema Push, l’IA è vista come un sistema separato, che spende tempo a fare calcoli per prendere una decisione in base alle informazioni date dal gioco. Una volta raggiunta una conclusione, comunica la sua scelta a tutte le entità di gioco. Questo sistema ad esempio è usato nei giochi strategici. Il sistema Pull invece, le singole entità del gioco chiamano l’IA quando si aggiornano. Questo sistema è usato nei giochi dove non tutte le entità devono pensare nello stesso momento come un metroidvania, che attiva i nemici solo quando il giocatore è nella stanza ad esempio.

ai-on-video-games-3-638

L’IA dei videogiochi è completamente diversa e semplicistica rispetto alla vera IA

A questo punto, bisogna trovare un modo per dare informazioni all’IA sul mondo di gioco, dotarla di una percezione. Prendiamo i vecchi giochi sidescrollers: in quei giochi i nemici entrano nella schermata e seguono una routine preimpostata di volo e sparo. Non devono sapere assolutamente niente del mondo di gioco e quindi non si parla ancora di intelligenza, in quanto la sfida deriva dalla diversità dei pattern e dei nemici, non da un loro comportamento studiato ad hoc.

I sistemi più semplici tendono a seguire regole preimpostate. Prendiamo PAC-MAN. I fantasmini del gioco visti nell’insieme sembrano un sistema complesso. In realtà il gioco era impostato in modo che un fantasmino girasse sempre a destra, uno sempre a sinistra, uno in una direzione random ed un altro seguisse il giocatore. Il gioco era costruito su regole semplici sia per ragioni computazionali che per questioni di sfida. Un pattern simile è analizzabile ed anticipabile dal giocatore. Questo sistema di impostare una IA è definito sistema basato su regole.

CatturabandieraIA

Un flowchart di una IA per “cattura la bandiera”

Quando i giochi hanno iniziato a diventare più complessi, è nata la necessità che l’IA avesse più comportamenti diversi e che li attivasse in determinati momenti. Questo ha portato le IA ad essere pensate come macchine a stati finiti. Questi sono costrutti atti ad organizzare in diversi stati determinati comportamenti. Posso portare due esempi: i soldati di Metal Gear o un distributore di merendine! Un distributore ha un software organizzato come una macchina a stati grazie al quale attende i soldi e la pressione dei tasti in uno stato di ascolto, così come i soldati di MGS girano per la mappa in attesa di vedere il giocatore o di sentire un suono. Una volta ricevuto il giusto input, i soldati passeranno allo stato di allerta a quello di caccia e successivamente a quello di combattimento mentre il distributore prenderà la merendina per voi. Entrambi ritorneranno allo stato iniziale a lavoro finito.

Annidare in questo modo più comportamenti semplici offre l’idea di maggiore complessità, anche se a conti fatti i singoli stati possono avere la complessità dei fantasmini di Pac-Man. Un modo più complesso per gestire le IA si trova nel metodo GOAP, Goal Oriented Action Planning, implementato in F.E.A.R. in modo fantastico. In questo caso l’IA ha a disposizione un set di azioni ed un obiettivo ed è lei a concatenare in modo autonomo le azioni. Il criterio di solito segue una funzione di costo: qual è la sequenza di azioni più efficiente per raggiungere il mio scopo? L’impressione di avere un avversario intelligente è ottima. Ovviamente questo non è più il migliore modo per fare le cose quando c’è bisogno di elevata competenza da parte dell’IA. In quel caso bisogna effettivamente creare una IA in grado di capire ed adattarsi ai comandi del giocatore. Serve un’IA predittiva.

shodan

Forse le migliori IA rimangono i vari NPC creati nel corso degli anni

Per generale algoritmi predittivi bisogna tenere uno storico delle azioni del passato ed associare loro una misura del successo. Un esempio stupido: un’IA di un picchiaduro esegue un attacco e ferisce il giocatore. È un successo e quindi ci riprova. Poi il giocatore entra in parata e gli attacchi dell’IA non funzionano più. Questo provoca un cambio di strategia. Potrebbe fare una presa o un attacco da una direzione diversa. Questo loop accade velocissimo ed è in costante evoluzione. In generale questi loop vengono calcolati anche a diversi livelli di efficacia per renderli scalabili con il livello di difficoltà e questo avviene per cercare di rendere una IA meno prevedibile possibile. Blizzard sono anni che sperimenta con Starcraft II per creare un’IA in grado di battere un umano, anche usando più di un’IA insieme.

L’IA per quanto avanzata, difficilmente potrà essere migliore di un umano in un videogioco e quindi spesso viene farcita di facilitatori. In giochi come Starcraft  o Civilization, l’IA a livelli elevati ha dei bonus numerici alle proprie risorse, partendo avvantaggiata, oppure non ha limite al numero di comandi che può eseguire. Bisogna stare anche attenti a non esagerare. Soul Calibur per esempio a difficoltà massima legge i comandi del giocatore e risponde prima che questi si siano verificati, rendendo l’esperienza abbastanza frustrante.

Come ogni elemento di gioco, lo sforzo fatto dietro un’IA può venire vanificato o valorizzato dagli altri elementi di game design. Prendiamo l’ultimo Zelda. Già nei giochi Bethesda, se una persona è disarmata andrà a recuperare armi.  I goblin di Zelda, da un punto di vista dell’IA fanno la stessa cosa: controllano delle variabili e decidono il da farsi. Ma mentre lo fanno si guardano attorno, se trovano qualcosa esclamano ed hanno un’animazione per raccogliere l’arma. L’IA da sola fa tanto, ma senza il contorno il giocatore può non accorgersi che ci sia, ed in alcuni casi è un vero peccato.

  • Le rubriche di Cap non deludono mai

  • Damiano Pauciullo

    Argomento interessante che spesso diamo per scontato!

    In effetti mi domandavo sempre, nei picchiaduro ad esempio, come facesse la CPU a “giocare” contro di noi se tanto già sapeva che mossa facevamo visto che poteva leggere l’input. Da quel che ho capito, in pratica, la CPU “sbaglia” appositamente altrimenti sarebbe imbattibile?

    Altra domanda a Cap, in giochi come FIFA, la CPU come si comporta? È qualcosa di più complicato visto che deve muovere tanti giocatori contemporaneamente?

    • Ogni picchiaduro la implementa a modo suo. Forse l’esempio migliore è quello degli amiibo con Smash, che imparano in base contro chi lottano e quindi mantengono delle “personalità” di combattimento e possono eccedere la CPU di livello 9 facilmente. Studiandone l’apprendimento si possono intuire molte cose sull’IA.

      Per i giochi come FIFA, ma anche Pikmin o Starcraft, si usano approccio ad IA multipla. Una IA generale pensa gli schemi di gioco e come attuarli e gestisce il movimento generale di tante IA più piccole che rappresentano le singole unità. Come sempre, ogni gioco avrà codice adeguato.
      In termini di CPU, siccome l’IA deve poter prendere decisioni sapendo le informazioni precedenti, è generalmente difficile da parallelizzare (specie in un gioco online) perché introduci un sacco di problemi di timing tra i diversi core (uno può finire prima di un altro e via dicendo). Usando un approccio ad IA multiple è possibile smezzare, ma è un campo in continua evoluzione e non esiste una soluzione generale per ogni gioco.

      • Damiano Pauciullo

        Esaustivo come sempre!

  • Ah si, per idee per l’argomento successivo, usate sempre i commenti (a questo post così vedo le notifiche)

  • Molto interessante come articolo!

    Mi entusiasmano molto sia l’intelligenza artificiale che i videogiochi e mi interesserebbe lavorare in questi campi. Purtroppo, come percorso di studi sono andato nella direzione probabilistico/statistica e, come in effetti dici tu, gli algoritmi di IA stocastici non trovano molto spazio nei videogiochi. Beh, spero che questo possa cambiare!
    Facendo qualche ricerca, in effetti, sembra che si preferisca una IA più semplice ma prevedibile piuttosto che una IA complessa (e che impara) ma imprevedibile.

    • Si, principalmente perché stai comunque costruendo un “gioco” che deve essere compreso, studiato, analizzato dal giocatore e vinto. Questo è il motivo “ideologico” che frena l’implementazione di roba più complessa.
      Inoltre nei videogiochi hai molti problemi sulle risorse. In generale algoritmi che imparano in modo complesso fanno uso di molta potenza di calcolo, sia su CPU che su GPU a seconda…
      Nei videogiochi però quelle risorse servono per la grafica, la fisica, la logica, quindi hai un continuo conflitto di interesse.
      Probabilmente con l’aumentare sempre più della potenza di calcolo si arriverà in un punto dove inserire algoritmi IA più complessi, ma c’è sempre il problema che si passerà da 4k all’8k al 12k e con mondi sempre più grandi, con più personaggi, più dettagli… Classica coperta corta!

  • Draco

    Non sapevo la cosa di PacMan :O
    Dovresti fare un approfondimento sugli Amiibo di Smash Bros se ne sai qualcosa :3

  • Sull’argomento, consiglio il video di Mark Brown se masticate l’inglese. Lui parla dell’implementazione dell’IA nel gameplay, non di come funziona e quindi complementa bene l’articolo
    https://www.youtube.com/watch?v=9bbhJi0NBkk

    • SkullKid

      Se non l’avessi trovato nei commenti l’avrei messo io XD

  • usodabada

    La gestione dell’IA è un campo che da sempre affascina. E dire che tutto è partito con Turing.

  • Fede

    Stupida cpu lv9 su Smash.

  • Mauro

    Serve una sigla per queste rubriche

    • Prendi come riferimento l’intro di Brinstar di Metroid.

logo-bianco

NINTENDON EVENTI

Per la tua pubblicità su NINTENDON.IT

Regolamento Forum - Contatti - Nicer Design

Privacy Policy

Informativa estesa sui Cookie

©2017 NintendOn Tutti i diritti riservati. Tutti i marchi appartengono ai rispettivi proprietari.

Log in with your credentials

or    

Forgot your details?

Create Account