Outcast

View Original

Post Mortem #47: Quella cosa bizzarra ma fondamentale che fu Pinball Construction Set

Post Mortem è una rubrica in cui vi raccontiamo le considerazioni a posteriori sull’esperienza legata alla lavorazione di questo o quel videogioco.

Dato che sono vecchio, quando vado alla Game Developers Conference, cerco sempre di non perdermi i Classic Post Mortem. Ogni tanto, però, è capitato di mancarne uno, tipicamente perché ero costretto a seguire altro per questioni lavorative. Ed è per esempio il caso dell’intervento di Bill Budge durante l’edizione 2013, quando salì sul palco per chiacchierare del suo Pinball Construction Set. Va detto che non ho un grande legame emotivo con quel gioco, dato che da ragazzino lo intravidi appena, ma è comunque difficile non esserne incuriositi, considerando il tipo di progetto avantissimo rispetto ai tempi che riuscì ad essere e anche tenendo conto che Will Wright ne parlò appena un anno prima, alla GDC 2012, citandolo come grandissima fonte d’ispirazione. Quindi, insomma, quando mi sono visto spuntare il video sul canale YouTube della GDC, l’ho messo da parte in attesa di recuperarlo e, magari, scriverne pure qua. “Magari”.

Bill Budge si presenta sul palco della GDC 2013 con addosso, parole sue, la maglietta più vecchia che ha in guardaroba, marchiata Hacker Conference e risalente a due anni dopo il completamento dei lavori su Pinball Construction Set (si parla quindi di metà anni Ottanta). Quel software, racconta Budge, genera in lui ancora oggi grande soddisfazione, divertimento e orgoglio, perché spingeva l’idea che programmare, creare, è divertente. L’allora capo di Electronic Arts Trip Hawkins, racconta Budge, accolse il progetto a braccia aperte, l’azienda lo pubblicizzò molto bene attorno al lancio, ne venne fuori un grande successo, e Budge guadagnò parecchio, a sufficienza da permettergli di costruirsi una carriera da sviluppatore indipendente. Quindi, insomma, bene. Ma la soddisfazione non è legata solo al suo successo personale: c’è la gioia di aver incontrato tanta, tantissima gente che ha apprezzato quel suo lavoro, tanta gente che, addirittura, gli ha detto di essere stata spinta a darsi allo sviluppo, alla programmazione, proprio dall’esperienza con Pinball Construction Set. Addirittura, all’insegna del MACCOSA, fra coloro che gli hanno confessato amore per la sua opera, che gli hanno detto di esserne stati ispirati e motivati, c’è Vint Cerf, anche noto come uno dei co-creatori di Internet. OK.

Ad ogni modo, pur orgogliosissimo del suo lavoro, Budge era un po’ perplesso all’idea di presentarsi sul palco della GDC. «È un onore, ma di che parlo, per un’ora?» Trent’anni dopo aver programmato il gioco, non ricordava nulla, non aveva materiali, niente codice sorgente… il panico. Ha però provato a contattare Electronic Arts e, beh, salta fuori che EA è, sul piano della preservazione, un publisher illuminato: hanno un archivio interno di tutto quello che hanno pubblicato! E così Budge ha potuto recuperare i dischi originali, ancora funzionanti e leggibili. Non solo: estrarre i dati non era banale, dato che il file sorgente era in Apple Text, ma ci ha pensato lo staff di EA. Quanto amore.

"Ogni programmatore sa che se vai a riguardare il tuo codice anche solo dopo un anno provi ribrezzo."

Avendo questo materiale a disposizione, Budge ha deciso di dividere il suo intervento su due binari: quello dedicato ai ricordi e quello basato sul codice sorgente. Siccome io di programmazione non capisco una fava, qui vi racconto soprattutto del primo binario. Se non vi basta, c’è il video là sopra. Comunque, procediamo: cos’è, Pinball Construction Set? Beh, di base, si tratta di un editor molto semplice, tramite cui assemblare dei flipper posizionando i vari “pezzi” grazie al joystick. Inoltre, è possibile modificare il tavolo di base, poligonale, e ci sono vari altri strumenti, come una lente di ingrandimento e un tool per modificare addirittura i singoli pixel. Considerando che stiamo parlando di un software pubblicato nel 1983, direi che non ci si può lamentare. Ma come è arrivato a svilupparlo, Bill Budge?

Beh, studiava programmazione su un «super computer», un mainframe enorme che «probabilmente oggi verrebbe surclassato da un iPad». Era un bestione farraginoso e complesso, ma gli mise addosso una gran voglia di dedicarsi alla programmazione. Voleva un computer a casa, ma era ancora presto: a Berkley aveva accesso dei personal computer, ma erano comunque scatoloni ingombranti e costosi. La svolta avvenne nel 1979, con l’uscita dell’Apple II. Non che fosse un computer economico o facilmente reperibile – dovette aspettare tre mesi – ma fu comunque un cambio di paradigma. Dopo aver quasi acquistato il Radio Shack TRS-80, meno potente e versatile ma anche meno costoso, decise di tenere duro e puntò verso la creatura di Jobs e Wozniak, che si portò a casa pagando quasi duemila dollari, senza lettore di floppy ma con RAM aggiuntiva. Fu il migliore acquisto della sua vita (pagato, per altro, dai genitori).

«Ovviamente un computer moderno è milioni di volte superiore ma, per l'epoca, era una macchina splendida». All'interno della confezione c'era un manuale incredibilmente tecnico, specie per come siamo abituati oggi. La parte più semplice e immediatamente comprensibile, si fa per dire, era sostanzialmente un manuale di programmazione in BASIC. C'era perfino della documentazione scritta a mano... e c'era anche, fondamentale, un listato. Copiandolo, era possibile riprodurre Breakout.

Copiare, ricopiare, inserire quel listato divenne subito una fissazione, per Budge. E ogni volta che ci si metteva, doveva rifare tutto da capo, dato che non aveva un lettore di floppy. Ogni singola volta, mezz'ora a battere codice per arrivare a quel rozzo Breakout e giocarci. Alla lunga, come sempre accade quando giochi e rigiochi alla stessa roba, divenne fin troppo bravo e iniziò a inventarsi obiettivi, tipo giocare usando solo un numero massimo di tocchi, colpire la pallina sempre con l'angolo della barretta, roba del genere. Dopo un po', si stancò di giocare sempre alla stessa roba e decise di modificare il programma. E fu così che ebbe inizio la sua carriera di programmatore: modificando il BASIC del listato di Breakout incluso nel manuale dell'Apple II.

Non fu banale, ma piano piano imparò. Lo riprodusse in assembly, cercò di ricrearlo in alta risoluzione e capì lentamente come programmare il chip 6502. Wozniak «aveva infilato un sacco di roba interessante nella system ROM» e tutti i programmatori che all’epoca lavoravano su Apple II ricordano con affetto varie funzioni specifiche. Budge studiò come far funzionare l’alta risoluzione, l’utilizzo di bit e byte per gestire i colori, i vari trucchetti di programmazione. I suoi primi giochi creati da zero furono tutti variazioni sul modello di Pong e, per riuscire a far muovere la pallina, si mise a gestire l’animazione “a mano”. La palla era un quadrato di quattro pixel per quattro e, ad esempio, per farlo spostare verso il basso, cancellava la riga di pixel più in alto e ne aggiungeva una sotto.

Un amico di Bill Budge, tale Andy, lavorava in Apple e gli suggerì di andare lì in azienda per provare a vendere i suoi giochi. Gli fecero addirittura un’offerta di lavoro, ma in Apple non sviluppavano videogiochi e lui voleva fare quello. Budge ricorda la sede come incasinatissima, piena di roba accatastata, forse perché si erano appena trasferiti. Chiese se volevano comprare il suo gioco e gli venne risposto che non avevano una struttura per l’acquisto di giochi. «Vuoi questa stampante?», gli proposero. E lui accettò. In cambio del suo gioco, si prese una stampante da settecento dollari. Che, insomma, buttala. Decise quindi di provare a insistere, assemblò altri giochi piuttosto rozzi e, grazie all’aiuto di un tizio che andava in giro a piazzarli nei negozi, si beccò un assegno da settemila dollari. Forse, era il caso di provare a insistere su questa bizzarra, improbabile prospettiva di carriera.

Nel 1980, poi, ci fu l’illuminazione sulla via di Damasco: Budge giocò a Space Invaders. Come era possibile avere uno schermo pieno di oggetti che schizzavano così velocemente, chiaramente mossi con tecniche diverse da quelle che aveva imparato a utilizzare? Era chiaro che doveva mangiarne, di pagnotte. Si fece allora convincere dal suo amico Andy, che continuava a tessergli le lodi di Apple, e andò a lavorare lì, venendo assunto per dedicarsi all’Apple III. Ed effettivamente era, racconta Budge, un posto pazzesco. Wozniak, ormai, era ricco, faceva il dirigente, eppure passava ancora un sacco di tempo mescolandosi coi peones e cazzeggiando con tutti. Budge lavorava con altri sul sistema operativo del nuovo computer e imparò tantissimo, occupandosi dei computer Apple III e, in un secondo tempo, Lisa. Allo stesso tempo, però, i suoi colleghi, appassionatissimi di flipper, lo spingevano a sviluppare nuovi giochi. Il suo esperimento successivo fu tale Raster Blaster, che, col senno di poi, dice Budge, fa impressione: appena un anno dopo il suo primo tentativo, probabilmente grazie a tutto quello che aveva imparato in Apple, era stato in grado di sviluppare un gioco enormemente migliore rispetto ai suoi lavori precedenti.

Fra le “novità” che Budge menziona per Raster Blaster c’è il sistema di collision detection, che non leggeva più lo schermo come nel suo primo flipper ma si basava su un database incasinatissimo: la situazione a schermo veniva costantemente confrontata con quello che, secondo il database, doveva accadere e questo rendeva il tutto enormemente complesso, soprattutto sul fronte del bug fixing. Inoltre, Budge trascorreva tantissimo tempo sulla grafica, che curava a mano, ritoccando i singoli pixel. Insomma, due palle. Raster Blaster, però, fu fondamentale. Così come Will Wright, nel suo Classic Post Mortem su Raid on Bungeling Bay, racconta di averlo sviluppato con un tool che avrebbe poi fatto da base a SimCity, Budge spiega che gli strumenti utilizzati per creare Raster Blaster sono poi diventati il punto di partenza per Pinball Construction Set.

E c’è proprio un esempio diretto, figlio della pratica e del contesto: siccome doveva modificare una valanga di pixel a mano, Budge “prese ispirazione” dall’interfaccia di Lisa e ne copiò senza vergogna la lente d’ingrandimento. Ebbene, questo piccolo tool, come detto, è il punto di partenza per Pinball Construction Set, che include del resto una lente d’ingrandimento tale e quale. Ma, ovviamente, l’ispirazione arriva anche da altrove, più da lontano, per esempio dai giocattoli di costruzioni che Budge aveva da bambino. Addirittura, la grafica della scatola di Pinball Construction Set, a ben vedere, richiama spudoratamente quella delle confezioni di Lego e Fischer Technik vari. Del resto, confessa, dopo Raster Blaster, gli sarebbe piaciuto creare un giocattolo, più che un videogioco.

E si mise quindi al lavoro. A casa aveva un prototipo di Mac («Ne esistevano appena una dozzina. Purtroppo, poi me lo fecero restituire. Peccato, oggi varrebbe parecchio!») che aveva al suo interno ancora un drive dell'Apple II. Lo utilizzò per sviluppare una prima versione di Pinball Construction Set, di cui ha fra l'altro caricato il codice sorgente su GitHub. Non fu semplice mettere assieme quelle ventiduemila linee di assembly come si faceva all'epoca, da completo autodidatta, senza automazioni di sorta, linkando a mano tutte le parti di codice. Voleva permettere agli utenti di fare ciò che preferivano con l’editor, di creare i propri poligoni, e per questo sviluppò un algoritmo tramite cui gestirli. Come? Beh, oggi cercherebbe informazioni su Google, all’epoca dovette trovare un libro che gli spiegasse come fare e studiarselo da cima a fondo. Ma fu divertente, perché adorava i libri di informatica, ed è comunque un’impresa di cui va molto orgoglioso, per la sua riuscita ma anche per gli intenti, perché fu uno sforzo finalizzato a garantire libertà di utilizzo.

Un’altra problematica? All’epoca non era possibile patchare i giochi, quindi Budge, per gestire i glitch nelle collisioni, ideò una specie di forbice che valutava a spanne la posizione della palla. E di difficoltà ce ne furono tantissime: invito chi mastica di programmazione (e l’inglese) a guardarsi il video là sopra per ascoltarle dalla viva voce dello sviluppatore.

Successivamente, appoggiandosi sullo stesso sistema utilizzato per sviluppare Raster Blaster e Pinball Construction Set, Bill Budge creò il bizzarro Virtual Pinball per Mega Drive, che però non funzionò per nulla e fu un insuccesso.

«Scrivere il programma mi richiese sei mesi. Sviluppare l’editor mi prese un anno e mezzo. Il problema è che non puoi solo fare una cosa che funzioni, deve essere utilizzabile dalla gente. E in partenza non mi rendevo conto di quanto fosse difficile assemblare una libreria accessibile per chiunque.» Alla fine, però, Budge comprese l’importanza di ciò che era riuscito a fare, dell’avere l’audacia di provare a tentare strade nuove e diverse. E anche l’importanza dell’ottimizzazione.

Fun fact: questo programma venne pubblicato prima che esplodesse il dramma dell’AIDS. Quella funzione, in Mac Paint, venne ribattezzata “Goodies”.