Complessità emergente - La raffinata intelligenza dei Fantasmi di Pac-Man
Di fantasmi, horror e soprannaturale vario non ne voglio sapere. Ho già difficoltà a giocare a Luigi’s Mansion da solo di notte, figuriamoci. I fantasmi, per me, funzionano molto meglio quando si prendono molto poco sul serio. Quindi farò la cosa che mi riesce meglio nei casi in cui non so come contribuire a una Cover Story: la butto sul tecnico.
Pac-Man non ha bisogno di presentazioni. La “pizza gialla a cui manca uno spicchio” più famosa del mondo è a suo modo il primo vero personaggio della storia dei videogiochi. Certo, c’erano stati i successi mostruosi di Pong e Space Invaders prima, tanto per fare qualche esempio, ma in quei casi si comandavano anonimi rettangoli o navicelle spaziali. Il disco giallo mangiapallette di Namco era invece un personaggio a tutto tondo (pun intended), la cui personalità trapelava non solo dalle illustrazioni del cabinato ma anche dalle piccole scenette di intermezzo che intervallavano i vari livelli, forse le prime cutscene nella storia dei videogiochi. Tutti amarono e amano Pac-Man anche per questo, anche se la storia ci ha insegnato che i veri protagonisti del gioco sono i bistrattati e malvagi fantasmini. Il comportamento dei quattro fantasmi colorati è stato uno dei motivi del successo di Pac-Man, in un mondo in cui i nemici erano solo semplici e stupidi bersagli dai comportamenti semplici e prevedibili, vedi ad esempio gli alieni di Space Invaders, che si muovono più o meno lentamente in direzione orizzontale, scendendo lentamente ogni volta che raggiungono i bordi dello schermo. Anche giocando oggi a Pac-Man ci si rende conto che i fantasmi sembrano avere un’intelligenza complessa: cercano di aggirare il giocatore, si allontanano velocemente quando Pac-Man mangia la super-palletta e, in generale, hanno un comportamento piuttosto difficile da prevedere. È un’intelligenza artificiale vera e propria, la loro, creata su un hardware molto limitato, grazie a poche, magistrali decisioni. Ma non voglio star qui a spiegare come funziona Pac-Man, darò per scontato che lo sappiate a grandi linee.
Inoltre, tutte le spiegazioni tecniche non sono ovviamente farina del mio sacco. Queste conoscenze sono state ricavate nel corso degli anni studiando il codice del gioco e trovate online molte altre spiegazioni, anche se questo forse è il primo articolo in italiano sul tema. In particolare, ho preso gran parte delle informazioni dall’interessantissimo Pac-Man Dossier e da un articolo del blog Game Internals.
Prima di buttarci nelle complessità della prima intelligenza artificiale nella storia dei videogiochi, è necessaria qualche nozione di base su come Pac-Man è programmato: ogni schermata è divisa in una griglia di caselle quadrate da 8x8 pixel e un’intera schermata è composta da 28x36 caselle, comprese le caselle esterne al labirinto, che contengono il punteggio e l’indicazione di quante vite sono rimaste al giocatore. Ognuna delle pallette presenti nel labirinto è al centro di una casella e alcuni degli sprite, come quelli dei fantasmini, sono più grandi di una casella. Tuttavia, il gioco controlla eventuali collisioni fra Pac-Man e i fantasmini basandosi su quale casella contiene il centro di quello sprite. Per questo motivo, ad esempio, è possibile schivare i fantasmi e rimanere vivi, anche se i rispettivi sprite si sono leggermente toccati. Oppure è addirittura possibile passare illesi attraverso un fantasmino, a patto che i centri dello sprite di Pac-Man e di quello di un fantasma non siano stati effettivamente nella stessa casella contemporaneamente, un’eventualità remota ma concreta.
Queste caselle sono particolarmente importanti per l’intelligenza artificiale dei fantasmini: in ogni momento del gioco in cui un fantasmino è attivo, ha una “casella bersaglio”, ovvero una casella che cerca di raggiungere. Questa casella bersaglio può cambiare continuamente o rimanere la stessa per un po’, a seconda di varie condizioni che discuterò a breve. Inoltre, l’intelligenza artificiale può funzionare in tre diverse modalità, a seconda di una serie di condizioni. In particolare, i fantasmi possono essere in modalità inseguimento, dispersione o fuga. I passaggi da una modalità all’altra possono essere dettati da condizioni temporali o da condizioni del gioco. Non è poi molto diverso da quello che succede nei giochi più moderni: prendendo un Metal Gear Solid a caso e semplificando un po’, i nemici possono essere in stato tranquillo, allarmato e inseguimento attivo e passano da una modalità all’altra a seconda delle azioni del giocatore. Se Snake si fa sgamare in malo modo, possono saltare dallo stato tranquillo a quello di inseguimento attivo, ma se sentono solo un rumore sospetto, passeranno semplicemente ad uno stato allarmato. In ogni caso, se passa una quantità di tempo sufficiente, i nemici tornano a uno stato di tranquillità. Questa, in termini tecnici, si chiama Macchina a Stati Finiti, una schematizzazione utilissima in tantissimi campi dell’elettronica e dell’informatica. Nel caso di Pac-Man, i fantasmi passano in modalità fuga solo quando Pac-Man mangia la super palletta; per intenderci, mi riferisco a quando i fantasmi diventano blu e vulnerabili al giocatore. In questa modalità, i fantasmi si muovono lontano dal giocatore, effettuando una svolta a caso ad ogni intersezione del labirinto che incontrano.
Le modalità di inseguimento e dispersione si alternano durante il gioco normale, seguendo uno schema temporale. Nel primo livello, i fantasmi si disperdono per sette secondi, poi inseguono il giocatore per venti secondi, poi tornano a disperdersi per sette secondi e poi lo inseguono per altri venti, poi ancora si disperdono per cinque secondi e poi lo inseguono per altri venti. Infine, si disperdono per altri cinque secondi e poi inseguono Pac-Man continuamente, fino alla fine del livello o alla morte del giocatore, le uniche due condizioni che resettano tutti questi timer. Andando avanti coi livelli, i tempi di dispersione si riducono e i tempi di inseguimento aumentano, in modo da aumentare la difficoltà gradualmente. Questo comportamento rende gli attacchi nemici simili a ondate da cui il giocatore deve difendersi, creando un’alternanza di tensione e liberazione almeno nelle prime fasi di ogni livello. Attaccare continuamente il giocatore sarebbe stato molto più semplice, ma in questo modo l’esperienza è meno stressante e più coinvolgente.
Andando più nel dettaglio di queste due modalità, il comportamento di dispersione è circa lo stesso per ognuno dei fantasmi.
Quando si entra in questa modalità, ogni fantasma lascia completamente perdere Pac-Man e si dirige verso il “proprio” angolo della mappa: il rosso in alto a destra, il celeste in basso a destra, l’arancio in basso a sinistra e il rosa in alto a sinistra.
In questo modo la tensione sul giocatore è allentata e Pac-Man può tirare un sospiro di sollievo per qualche secondo, prima che i fantasmi ritornino all’attacco.
La modalità più interessante è però quella di inseguimento attivo, perché qui ogni fantasma ha un comportamento completamente diverso. Ricordate quando dicevo che Pac-Man è forse il primo verso personaggio nella storia dei videogiochi? Lo stesso vale per i quattro fantasmini, definiti fin dalla schermata di demo del cabinato con nomi e caratteristiche diverse.
Il fantasmino rosso è conosciuto come “Blinky” nel mondo occidentale e viene descritto come “Shadow”, ovvero Ombra. In giapponese è invece 追いかけ, oikake, ovvero inseguitore. Questo perché la casella bersaglio di Blinky, in modalità inseguimento, è sempre la posizione del giocatore. In questo modo, Blinky insegue costantemente Pac-Man, cercando di raggiungerlo ovunque si trovi: diventa la sua ombra, appunto.
Il fantasmino rosa “Pinky” ha un comportamento completamente diverso e viene descritto come “Speedy”, ovvero Veloce, nella traduzione occidentale, anche se la sua descrizione originale in giapponese 待ち伏せ, machibuse, si può tradurre come “che tende agguati” o “intrappolante”. Questa descrizione è molto più calzante della traduzione occidentale, perché effettivamente la casella bersaglio di Pinky è sempre quattro caselle davanti a Pac-Man nella direzione verso cui si sta muovendo. In questo modo, Pinky cerca costantemente di intrappolare Pac-Man tagliandogli la strada lungo la sua direzione e si sinergizza involontariamente col fantasmino rosso, per effettuare delle vere e proprie manovre a tenaglia. A causa di un errore di programmazione, però, nel caso in cui Pac-Man si muova verso l’alto, la casella bersaglio è quella sbagliata ed è spostata di quattro caselle a sinistra. Sfruttate questa conoscenza nella prossima partita a Pac-Man per eludere i suoi attacchi.
Il fantasmino celeste ha il comportamento più complesso e difficile da prevedere: Inky viene descritto come “bashful”, timido, in inglese, mentre in giapponese è 気紛れ, kimagure, che significa “bizzarro” o “capriccioso”. La sua casella bersaglio è calcolata non solo in base alla posizione di Pac-Man ma anche in base a quella del fantasmino rosso Blinky, quindi è estremamente più erratica e caotica. In particolare, la casella bersaglio viene determinata prendendo il punto due caselle più avanti rispetto alla posizione e direzione di Pac-Man, per congiungerlo con la posizione di Blinky. Ottenuta questa linea, il gioco ne raddoppia la lunghezza e ottiene la casella bersaglio finale. Così facendo, Inky coordina la sua azione con quella di Blinky, “aiutandolo” nell’inseguimento e cercando di chiudere passaggi al giocatore nella direzione verso cui si sta muovendo.
Infine il fantasma arancione “Clyde”, descritto come pokey, o お惚け, otoboke, che vuol dire più o meno che fa lo gnorri. Infatti, il comportamento di Clyde è piuttosto bizzarro: se si trova a più di otto caselle di distanza da Pac-Man, ha la stessa identica programmazione di Blinky e punta costantemente alla posizione del giocatore. Quando arriva a otto caselle da Pac-Man, però, la sua casella bersaglio è la stessa della modalità dispersione, quindi Clyde punta il suo angolino di mappa in basso a sinistra. Questa combinazione di comportamenti fa sì che Clyde blocchi spesso le vie di fuga del giocatore alla lontana, mettendogli pressione nel suo eterno inseguimento a distanza.
Pur lontanissima dalla complessità dei moderni algoritmi di intelligenza artificiale videoludica, la singolare caratterizzazione dei fantasmini di Pac-Man è geniale sia dal punto di vista narrativo che da quello del gameplay. Narrativamente, affibbiare un nome e una personalità ad ognuno dei caruccissimi e inesorabili inseguitori della palletta gialla ha contribuito significativamente a renderli le icone del videogioco che sono oggi. Sul piano di gioco, invece, programmare ognuno dei fantasmi con un comportamento significativamente diverso dagli altri ha creato un’intelligenza artificiale piuttosto complessa, molto più della somma delle sue parti. In fondo, ogni algoritmo legato al comportamento dei fantasmini è piuttosto semplice e leggero in termini di cicli macchina, ma quando unito al comportamento corale con gli altri, e alle macro-logiche alternate di inseguimento e dispersione, crea una sfida mai banale, anche per un giocatore che conosce il gioco alla perfezione. È l’esempio perfetto di come un comportamento molto complesso possa emergere da un insieme di comportamenti piuttosto semplici ma ben congegnati.
Questo articolo fa parte della Cover Story dedicata a Luigi e ai fantasmi, che potete trovare riassunta a questo indirizzo.