Rendere divertente AI quando è abbastanza buono è abbastanza buono

Fare una buona intelligenza artificiale per gli avversari informatici è difficile. Programmare un gioco come bozze non è molto difficile; l'aggiunta di IA convincente, tuttavia, potrebbe richiedere più tempo del semplice gioco. Ma cosa stiamo facendo quando facciamo questa IA? E 'importante esaminare ogni possibile mossa sulla scacchiera o possiamo imbrogliare e farlo muovere in modo casuale? Cosa deve fare un'IA e (cosa più importante) come possiamo garantire che il gioco sia divertente?

Buona AI vs AI divertente

Il termine "AI" è un concetto molto ampio e il tipo di IA dipende dal gioco. Asimmetrico i giochi, come Space Invaders, Mario o Tower Defense, consentono al giocatore di attraversare senza sforzo fasce di nemici. Poiché le "squadre" (giocatore vs tutto il resto) sono sbilanciate, questi giochi tendono ad usare l'intelligenza artificiale. simmetrico giochi, come Starcraft, Street Fighter o Civilization, si aspettano che il giocatore batta gli avversari su un piano di parità, e quindi richiedono un AI più complesso.

Space Invaders sulla sinistra, Starcraft sulla destra. Il giocatore sta combattendo un'orda aliena in entrambi; in Starcraft, tuttavia, tendono a contrattaccare.

Tuttavia, i giochi devono essere divertenti, prima di tutto. I giocatori godono di una sfida, senza perdere ripetutamente. In effetti, alcuni giochi come Dama sono stati "risolti", il che significa che è possibile costruire un'IA che gioca un gioco imbattibile.

Quando io e la mia squadra stavamo lavorando al nostro computer / gioco da tavolo Infected, dovevamo rendere l'intelligenza artificiale del primo livello intenzionalmente terribile per non spaventare i giocatori. L'intelligenza artificiale del gioco era inizialmente piuttosto semplicistica, e il computer avrebbe giocato in modo iper aggressivo, concentrandosi interamente su giochi ad alto punteggio senza alcun pensiero di difesa o presenza a bordo. 

Anche se l'intelligenza artificiale era scarsa, abbiamo scoperto che i nuovi giocatori si sarebbero schiacciati e avrebbero perso interesse. Abbiamo rivisto l'IA più volte, anche se è stata comunque una sfida eccessiva per i giocatori. Alla fine, abbiamo semplicemente rimosso l'intelligenza artificiale, quindi il gioco avrebbe fatto una mossa casuale ogni volta. Anche se alcuni giocatori ancora è riuscito a perdere, questo ha massicciamente migliorato la fidelizzazione del giocatore, permettendoci di reintrodurre l'IA "seria" ai livelli più alti.

Infetto, un gioco piuttosto pesante basato su un gioco Amiga con lo stesso nome.

Il problema dell'IA "troppo buona" può essere visto in una varietà di giochi: giochi FPS con robot che hanno una visione a 360 gradi, o battiti contro robot con riflessi perfetti. Giocare contro queste IA non significa insegnare al giocatore a giocare bene: insegna a "giocare" i robot, per cercare di trovare un difetto nell'algoritmo che permette di uccidere facilmente.

Questo non vuol dire che tutta l'intelligenza artificiale dovrebbe essere povera, ma piuttosto che una buona intelligenza artificiale è sfaccettata. Fa errori, ma cerca di evitare di cadere negli stessi schemi prevedibili. Dare all'IA la possibilità di adattarsi - e, quindi, di fornire una variazione nel gameplay - fornirà probabilmente molto più divertimento per il giocatore di un'IA che gioca sempre lo stesso gioco perfetto.

"Non sei altro che un mazzo di carte!" piange Alice. L'intelligenza non realistica potrebbe farci chiamare qualcosa di simile: "Non sei altro che un mucchio di codice!".

Renderli umani

Dopo aver realizzato Infected, abbiamo brevemente giocato con un sequel, Infected 2. Era la stessa premessa, ma su una scala più grande, simile al classico gioco da tavolo Risk. Dato che il gioco era più grande, era importante avere un'IA drasticamente migliorata: qualcosa che potesse intrattenere il giocatore nel corso di un gioco molto più lungo, e in cui più IA potevano competere l'una contro l'altra. 

Abbiamo collegato la vecchia IA e ci sono stati diversi problemi. L'intelligenza artificiale era prevedibile, ma era qualcosa che poteva essere migliorato con un po 'di lavoro. Il problema più grande riguardava l'atteggiamento generale dell'IA e il suo funzionamento. 

C'erano tre problemi principali:

  • In primo luogo, giocare contro le IA non è stato particolarmente divertente.
  • In secondo luogo, battere l'intelligenza artificiale non era particolarmente gratificante.
  • In terzo luogo, l'intelligenza artificiale "ingannerebbe" lanciando deliberatamente il gioco.

Il gioco è stato divertente contro altri giocatori, ma non contro l'intelligenza artificiale. Anche se c'era ancora lo stesso livello di sfida, perché c'era una grande disparità tra il giocatore contro l'intelligenza artificiale e giocare contro un'altra persona, se il gameplay era lo stesso?

Abbiamo poi ricordato che gli umani hanno una cosa che i computer non fanno: le emozioni.

Parte del gioco sta diventando emotiva; amiamo una vittoria elettrizzante, odiamo una sconfitta schiacciante. Amiamo sfregare le nostre vittorie nei volti dei nostri amici e diventiamo insignificanti e vendicativi quando ci tradiscono. I giochi sono intrinsecamente legati alle nostre emozioni, ed è qualcosa che un'IA non può mai sperimentare ... ma è qualcosa che noi sviluppatori possiamo emulare.

The Vital Spark

Perché non stava giocando il divertimento dell'IA? 

Perché l'intelligenza artificiale era così evidente artificiale. Tutti i robot hanno giocato allo stesso modo; avevano tutti gli stessi approcci al gioco; erano tutti ugualmente prevedibili nei loro schemi di movimento.

Anche in Pac-Man, i quattro fantasmi - Inky, Blinky, Pinky e Clyde - hanno le loro personalità e i loro schemi di movimento.

Avevamo bisogno di qualcosa che li distinguesse l'uno dall'altro. Così abbiamo introdotto personalità: spericolate, difensive, esploratrici. L'intelligenza artificiale darebbe un peso artificiale a certe strategie, e poi si muoverà in quei modelli di attacco.

Anche in una forma base, questo è stato un enorme miglioramento: non era più lo stesso ogni gioco, ma aggiungeva imprevedibilità alle mosse nemiche e rendeva più difficile formulare un'unica strategia "vincente al gioco". Se le IA fossero state randomizzate all'avvio del gioco, il giocatore non sarebbe stato in grado di prevedere come si sarebbe svolto il gioco.

Le personalità sull'intelligenza artificiale non sono una nuova idea. La civiltà conferisce personalità ai suoi leader (Gandhi ama le persone con armi nucleari), le IA di Age of Mythology determinano la probabilità che usino strategie come il turtling o il rushing, mentre i robot Unreal Tournament hanno armi preferite.

Gandhi in Civilization 5: evita di invocare la sua ira.

Perché non batteva l'IA premiante?

Il problema principale era che l'IA giocava quello che considerava una "mossa migliore" ogni round. Ha semplicemente valutato il tabellone di gioco, senza riguardo per la diplomazia. Se dovesse attaccarti, lo farebbe. Se l'hai attaccato, semplicemente non gli importava. Ha considerato il gioco come un puzzle matematico da risolvere, piuttosto che un gioco contro complessi giocatori umani. Giocare contro la nostra intelligenza artificiale ha portato a un gioco artificiale.

La nostra soluzione proviene da un gioco Amiga del 1989 chiamato Nuclear War. Nella guerra nucleare, hai combattuto contro vari leader mondiali e hai cercato di distruggere il loro paese dall'esistenza. Chi riuscì a sopravvivere avrebbe vinto. Anche se semplicistico, è stato sorprendentemente divertente osservare i tuoi nemici catturati in vendette personali e lanciare testate di guerra l'un l'altro.

Questo sistema "amici e nemici" utilizzava una metrica molto semplice: la felicità. Ogni leader mondiale aveva una varietà di espressioni facciali che rendevano facile giudicare il loro atteggiamento verso di voi. Non sorprende che le persone nuke tendessero a renderle infelici molto rapidamente. Inoltre, i tuoi nemici non si arrabbieranno solo con te, ma tra loro. Ciò significava che un singolo missile ribelle poteva degenerare in una lotta prolungata fino alla morte.

Ancora una volta, questo sistema è stato utilizzato in molti giochi, tra cui Civilization. Una nazione nemica con un alto livello di "felicità" ha più probabilità di allearsi con te e di inviarti doni, mentre un nemico che ti odia potrebbe investire un sacco di risorse per schiacciare le tue città.

Aggiungendo un metro rudimentale di felicità nel nostro gioco, abbiamo permesso alle amicizie e alle rivalità di produrre. Un gioco è più eccitante quando sviluppi una nemesi o quando si formano squadre e alleanze. All'improvviso, il gioco divenne personale e le azioni sembravano avere peso. Abbiamo anche scoperto che un indicatore di felicità visibile era importante, altrimenti il ​​giocatore non avrebbe capito cosa stava succedendo. Un'icona di un semplice volto felice trasmette immediatamente l'idea che i nemici possono essere "sconvolti" e osservare il volto cambiare dopo aver preso certe azioni ha chiarito quali conseguenze stavano avendo queste azioni.

Il dilemma del prigioniero è un concetto di teoria dei giochi ben noto, e molti programmatori hanno dedicato del tempo a cercare di costruire il bot definitivo per competere nel dilemma del prigioniero iterato. Curiosamente, la strategia vincente per molti anni è stata anche la più semplice: nota come tit-for-tat, ha semplicemente copiato la mossa dell'avversario.

Come sarebbe l'ingannare l'intelligenza artificiale?

Il problema in Infected 2 era spesso che l'IA stava semplicemente guardando la prospettiva a breve termine. L'intelligenza artificiale mira a massimizzare il proprio punteggio in ogni turno: se ciò significasse fare una mossa generale, allora lo farebbe comunque.

Il modo più semplice per immaginarlo è questo scenario:

  • Alice, Bob e Carol stanno giocando alla guerra.
  • Alice ha 100 soldati. Bob ha 75 soldati. Carol ne ha 150.
  • Né Alice né Bob possono battere Carol.
  • Tuttavia, Alice e Bob messi insieme possono battere Carol.

Il problema era che l'IA avrebbe fatto qualunque cosa avrebbe segnato il maggior numero di punti. Nello scenario sopra, ciò significava che Alice avrebbe attaccato Bob: a breve termine, una mossa eccellente, ma a lungo termine, disastrosa. Alice non solo sta facendo una mossa che condanna se stessa, ma sta anche condannando Bob ad una certa sconfitta. Bob è comprensibilmente sconvolto.

Questo tipo di situazione è difficile da evitare, poiché vedere l'immagine più ampia richiede un ragionamento complesso oltre la semplice IA. Abbiamo cercato di garantire "equità" rendendo i giocatori meno propensi ad essere attaccati se stavano perdendo o se erano stati attaccati di recente. Anche se non tutti i giochi possono applicare una soluzione semplice, è importante rendersi conto che i giocatori odiano essere attaccati senza una ragione apparente.

Mentre Infected 2 non ha mai superato la fase alpha, ci ha insegnato alcune preziose lezioni. La cosa più importante è che non è sufficiente giocare contro i robot nemici: vuoi essere coinvolto nel gioco, sviluppare rivalità e annientare tutti quelli che ti stanno contro.

AI fatto bene

Molti anni fa è stato pubblicato un gioco che sembrava un passo avanti rispetto alla concorrenza. Anche se un gioco multiplayer di design, i bot erano abbastanza buoni da poter essere goduti il ​​singolo giocatore. E, anche se per gli standard odierni è scadente, questo gioco-Unreal Tournament-ha avuto un'IA che ha fatto saltare in aria altri giochi.

Possiamo guardare uno screenshot in-game per vedere un po 'di quello che è successo facendo un bot:

Bot 19, alias Tamerlano.

L'abilità era il fattore principale nel determinare il comportamento dei robot: i robot inesperti erano lenti, dovevano stare fermi per sparare ed erano lenti a girarsi, mentre i robot di livello più alto erano più veloci, potevano schivare, avevano un campo visivo più ampio e potevano usare avanzato tecniche combinate di armi.

I robot potrebbero quindi essere ulteriormente modificati con precisione, prontezza, camper e livelli di mitragliamento. La "personalità" sarebbe determinata dallo stile di combattimento e dall'arma preferita, determinando se il bot amava avvicinarsi e personale, o tentare di beccarlo a distanza. Anche i bot deridono il giocatore e cercano vendetta. Ciascuno dei 32 robot potrebbe essere personalizzato individualmente, il che significa che potresti avere 32 personalità distinte. Alcuni robot, come Loque, divennero famosi tra i giocatori.

Tutti questi fattori hanno aiutato a creare bot che sentivano di più umano. Mentre il gioco sarebbe ancora buono senza questa sofisticazione, aggiunge uno strato di divertimento in più, quasi impercettibile.

Conclusione

Alla fine della giornata, devi chiedere: cosa vuoi dalla tua intelligenza artificiale? I nemici affronteranno irrimediabilmente il giocatore e cammineranno di testa in buca, o stai cercando di sviluppare qualcosa di più, qualcosa che fornisce un livello più personale di interazione con il giocatore? Qualunque cosa tu decida, ricorda tre punti chiave:

  • Se i robot fanno errori, allora si sentono più umani e meno come un "mazzo di carte".
  • Se deliberatamente creano giochi basati sulla personalità individuale (o sull'emozione, come la vendetta), è più probabile che il gameplay sia imprevedibile ed eccitante.
  • Se i robot cercano di giocare intelligentemente, piuttosto che miopi, sono più propensi a rendere il gioco giusto ai nostri occhi.

Riferimenti

  • Immagine in anteprima: Ghost di Andres Flores del progetto Noun
  • Immagine in anteprima: Pacman di Andres Flores del progetto Noun
  • Illustrazione Alice nel paese delle meraviglie: di John Tenniel, nel pubblico dominio