Intervista a Daniele Liverani

Autore: Raffox - Pubblicato il 14-01-2017.
(© https://ready64.org - Versione Stampabile. Riproduzione Vietata.)

Daniele LiveraniGenius - Into the Toy Warehouse

Daniele Liverani si è fatto recentemente notare per aver ideato il videogame GENIUS - Into the Toy Warehouse, un platform originariamente concepito su Apple II, successivamente convertito per Commodore 64 e, in tempi ancora più recenti, anche per Plus 4. Se provassimo a descrivere GENIUS potremmo semplicemente dire che è un viaggio nei sogni... Ma cosa rappresenti esattamente questo videogame, da dove sia stata tratta l'ispirazione, lasciamo che sia direttamente il suo creatore a raccontarcelo, magari anche con uno sguardo ai progetti futuri.


Come è nostra prassi vorremmo che iniziassi quest'intervista raccontandoci qualcosa di te, del tuo passato e del tuo presente.

Mi chiamo Daniele, sono musicista e programmatore. Ho 47 anni e mi divido tra informatica e musica, sia professionalmente che a livello hobbistico. Lavoro come programmatore in una azienda di Sistemi di Visione e controlli numerici. In parallelo produco musica in vari stili, a partire dal rock fino alla musica orchestrale pura, della quale mi sto occupando attualmente in modo prevalente. Nel passato ho pubblicato vari album, varie formazioni ma anche da solista, in stile progressive rock (sul tipo di Genesis, Dream Theater per dare un idea dello stile). Negli ultimi anni mi sono avvicinato al mondo del retrocomputing, sviluppando "GENIUS - Into the Toy Warehouse" che sto convertendo per i computer dei gloriosi anni '80.

Molto interessante... E come è nata la tua passione per la musica, l'informatica e più in particolare per i videogame?

La mia passione per l'informatica e la musica è nata nei primi anni '80, in maniera direi quasi coincidente e parallela con lo studio del pianoforte e con l'esplorazione dei primi modelli di computer Sinclair (ZX 81), della Apple (Apple II+) e della Commodore (Commodore 64). I miei primi ricordi di interazione con l'informatica risalgono alle scuole medie dove, per merito di un professore appassionato di computer, io e i miei compagni di classe abbiamo avuto la fortuna di poter sperimentare la programmazione BASIC con un Sinclair ZX81 fino alla realizzazione di un progetto che attivava/disattivava uscite in maniera programmata.

Più avanti, grazie alla frequentazione di un piccolo laboratorio elettronico che risiedeva nel mio paesino natale, ho potuto approcciare l'utilizzo dell'Apple II+, più o meno negli anni 1982-84. Si trattava di una piccola impresa specializzata in elettronica per dispositivi generici di piccola grandezza e che per qualche progetto si era appoggiata ad Apple II+ per la gestione di alcuni progetti. In quel periodo, con l'aiuto del proprietario di questo laboratorio, ho potuto costruirmi un clone dell'Apple II... si chiamava Lemon II, abbastanza diffuso all'epoca come alternativa in kit economica per l'Apple II che comunque risultava abbastanza costoso. A questo punto, avendo in casa un computer di mia proprietà ho avuto modo di approfondire maggiormente il suo funzionamento e di conseguenza anche la programmazione, entrando così in contatto con il mondo home dei videogame.

Il mio contatto con i videogame risale però a una data antecedente a tutto ciò. Ricordo infatti i mitici giochi coin-op come Space Invaders, Asteroid, Breakout, e quelli di automobili di casa Atari, che erano presenti nelle sale giochi o nei bar già alla fine degli anni '70, e in quel frangente si sono catalizzate la mia passione e curiosità in tutto ciò che riguardava la loro ideazione e realizzazione, ma ero anche interessato alle architetture hardware e software che erano celate all'interno di quelle magiche quanto futuristiche macchine.

Chi non ricorda i coin-op nei bar e le monetine spese per giocarci ogni volta che si aveva la possibilità! Quindi la piattaforma con cui hai iniziato a muovere i primi passi è stato un clone dell'Apple II. Come descriveresti la tua esperienza con il Commodore 64 se la dovessi metterla a confronto con Apple?

Diciamo che a mio parere si tratta di due piattaforme che hanno delle particolarità che le rendono entrambe uniche e allo stesso modo magiche. Apple II è stato commercializzato a partire dal 1976, prima rispetto al Commodore 64 che risale invece al 1982, quindi un paragone andrebbe fatto tenendo conto della differente collocazione temporale nel mercato delle due piattaforme. Il Commodore 64 è un home computer molto potente, possiede processori come il VIC per il video e il SID per l'audio che gli conferiscono possibilità enormi a livello di grafica e di sonoro. Considerando ad ogni modo che Apple II+ è uscito sul mercato cinque anni prima del Commodore 64, credo che si possa affermare che, a livello di innovazione e di potenza/capacità, i due computer abbiano pressoché le stesse qualità.

Il chip 6502, in comune tra le due macchine, mi ha comunque permesso un porting abbastanza veloce del mio gioco. Le principali differenze che ho rilevato in fase di conversione del codice sono ovviamente state in merito alla grafica, al suono e all'input/output (tastiera, joystick e lettura scrittura su floppy disk). L'Apple II possiede una gestione della grafica HiRes molto particolare, codificata a 7 pixel per byte, con una gestione dei colori che si lega a coppie pari e dispari di bit, che da un lato complica gli algoritmi relativi all'output grafico. Dall'altra l'Apple II offre una buona possibilità di abbinamento dei colori e di risparmio di memoria, in quanto essi sono codificati direttamente nel byte che contiene anche l'informazione on/off dei pixel da accendere/spegnere sullo schermo. Nel Commodore è necessario avere a disposizione ulteriore memoria per gestire i colori, oltre alla memoria dedicata alla gestione della bitmap di base, e in risoluzione massima ho dovuto ottimizzare di nuovo i colori, le procedure grafiche e i layout dei background relativi ai livelli per gestire la caratteristica dei 2 colori massimi per carattere in matrice 8x8. La scelta di una risoluzione multicolor, con una definizione più bassa rispetto alla HiRes, avrebbe reso necessarie più modifiche nel porting. In ogni caso la modalità HiRes con un certo tipo di disegno minimale rappresentava proprio lo stile che volevo dare al gioco fin dall'inizio.

Per quanto riguarda la generazione dei suoni, la versione base dell'Apple II non è provvista di un chip sonoro, quindi ho creato suoni molto elementari con il buzzer di sistema in mono, e poi ho gestito l'eventuale presenza di una Mocking Board con la quale ho aggiunto un suono più articolato e ricco a livello di arrangiamenti. Su Commodore 64 c'è il SID, un chip sonoro a dir poco meraviglioso, e quindi non ho avuto problemi nel gestire l'aspetto musicale.

L'Apple II e il Commodore 64 sono due computer meravigliosi senza dubbio. Ho avuto modo di scoprirli con grande divertimento. Ad ogni modo, per quanto riguarda la versione di GENIUS per Commodore 64, occorre specificare che non sfrutta tante delle feature che offre il computer (raster IRQ, hardware scrolling e tutto il resto), in quanto fin dall'inizio dello sviluppo del game, il mio obbiettivo e ciò che mi divertiva era la realizzazione di un codice compatibile con più piattaforme possibili, iniziando da quelle basate sul processore 6502. Quindi ho pensato che sviluppare un codice ad hoc e utilizzare il meno possibile le feature specifiche di ogni macchina mi avrebbe permesso di ottenere un'elevata compatibilità, oltre a un design più somigliante da piattaforma a piattaforma, dando così una certa riconoscibilità al gioco. Perciò ho programmato un motore per l'animazione degli gli sprite, per la gestione del testo in HiRes con caratteri ridefiniti, per le procedure geometriche di tracciamento delle linee, oltre alle routine per la costruzione dei background eccetera. Tutto questo è stato scritto in puro codice 6502, per permettere in seguito di eseguire un porting nel quale fosse solo necessario ridefinire la gestione della mappa di memoria, l'allocazione dei vari elementi grafici in memoria e l'interazione con i diversi chip sonori, l tastiere, i joystick e i disk drive.

L'idea di GENIUS da dove è scaturita? Tanto il concept, quanto il design del gioco sono due aspetti molto originali. C'è qualcosa a cui ti sei ispirato, ad esempio, per il design grafico?

GENIUS è un'opera rock in 3 episodi, su CD, che ho pubblicato nel 2002, 2004 e 2007. Essa narra le avventure del protagonista, GENIUS, all'interno di un ipotetico mondo dei sogni, nel quale si trova catapultato per una casuale fatalità e nel quale vive una serie di avventure. Il concept di tale opera rock lo scrissi nel 1997 in un breve libro dal titolo "Daily Trauma".

Ogni tanto, nel tempo libero, mi piace scrivere qualche storia. In particolare mi piace scrivere storie fantastiche, non tipicamente in stile fantasy, con spade, cavalieri ecc. ecc., preferisco concept psicologici, futuristici. Sono sempre stato affascinato da concetti di realtà alternative, virtualità, subconscio e sogni, soprattutto la loro genesi e la loro interpretazione. Quella rappresentata nel mio videogame infatti è la storia di un sogno vissuto dal personaggio principale, che è appunto GENIUS. Nel sogno egli si connette mentalmente per una serie di casuali circostanze con una dimensione parallela. Poi pian piano scopre di essere entrato in una realtà alternativa in cui esiste un intero mondo dedicato alla creazione dei sogni nelle menti umane. Una vera e propria fabbrica del sogno, da sempre esistita, dove ogni volta che un umano inizia a sognare, viene creata un'entità parallela (una sorta di alter ego chiamato Twinspirit, cioè spirito gemello) che era dedicata a controllare ed esaudire le fantasie dei sogni di GENIUS. Gradualmente ho arricchito di dettagli questo racconto, aggiungendo ulteriori elementi ed eventi. Poi ho cominciato a pensare che questa storia avrebbe potuto funzionare anche per qualcosa di musicale, e via via è nata l'opera rock in 3 atti/episodi.

Il videogame GENIUS si ispira a un preciso momento dell'opera rock che ho descritto: i magazzini di fantasie di giochi, dai quali i Twinspirit attingono le fantasie preconfezionate per utilizzarle e trasmetterle nelle menti dei sognanti. In particolare i magazzini di giochi contengono le fantasie degli oggetti utilizzati per i sogni dei più piccoli. A un certo punto della storia, GENIUS si trova a correre per questi magazzini di fantasie di giocattoli, nel tentativo di trovare e liberare il Principe del Regno Europeo dei Sogni, ingiustamente imprigionato in uno di questi antri segreti per volontà della Lega Globale del Sogno, che voleva punire il Re della Sezione Europea del Mondo dei Sogni, in quanto ritenuto responsabile di aver ammesso un umano nel Regno Proibito dei Sogni, che invece doveva essere mantenuto segreto agli umani.

Ho scelto questo particolare momento della storia come base di partenza per ideare il gioco perché mi sembrava particolarmente adatto ad essere trasformato in un action game relativamente semplice, basato principalmente sull'azione e sulla memoria/strategia. Ho creato questi magazzini di giocattoli basandomi su un livello crescente di difficoltà. Il giocatore deve scoprire una sequenza di apertura delle porte di tutte le stanze segrete, raccogliere i giocattoli fino a quello più grande che risiede nella target room principale, alla quale si può accedere solo dopo aver raccolto tutte le chiavi, aprendo nella giusta sequenza tutte le camere del livello. Ho diviso i livelli in gruppi di 10, attribuendo loro un design associato a un continente/sezione (Key Sequence) di questo ipotetico mondo alternativo dei sogni.

Non è facile spiegare tutto il concept della storia di GENIUS. Chi fosse interessato ad approfondire può leggere una spiegazione più dettagliata visitando il sito www.geniusrockopera.com, alla sezione "The Trilogy".

Anche le melodie, molto semplici ma coinvolgenti, sono state una tua creazione. Cosa ci puoi raccontare riguardo quest'aspetto?

Le melodie 8bit del gioco sono arrangiamenti minimali tratti dai ritornelli e dalle parti più salienti della mia opera rock, quindi si tratta di musiche originali da me composte. In pratica ho ripreso i temi principali delle musiche e le ho riscritte in modalità minimale così che potessero funzionare anche in una versione arcade oriented. È stato un procedimento molto divertente... un po' come riambientare nelle sale giochi degli anni '80 i brani della mia opera rock. Un salto nel passato... un viaggio all'indietro nel tempo...

Come mai hai deciso di realizzare il porting di Genius per il Commodore 64?

La mia idea di iniziare un'esplorazione e un porting del gioco era presente sin dall'inizio. Molte scelte che ho fatto appunto nella scrittura del codice erano già in partenza motivate dal favorire il porting su altre piattaforme, tra cui ovviamente anche Commodore 64. Già negli anni '80 avevo avuto modo di utilizzare il Commodore 64 nel mio percorso di conoscenza del mondo dei computer. Si tratta della macchina di maggior successo nella storia dell'home computing, una pietra miliare che non lascia dubbi in merito alla sua importanza storica, il suo valore e la sua innovatività di progettazione. Tra l'altro ho visto che ancora oggi vengono organizzati contest di demo per Commodore 64 che lasciano letteralmente a bocca aperta. Non c'è stato un punto preciso durante lo svilippo del gioco nel quale l'idea del porting si è insediata nella mia mente. Fin dall'inizio ho saputo che il porting per Commodore 64 sarebbe stato il passo successivo allo sviluppo del mio game su Apple II.

Quindi era stato tutto pianificato già in partenza. Ora, una domanda doverosa: in che modo hai imparato a programmare sia su Apple che su C64?

Sia all'epoca che oggi mi sono avvalso delle documentazioni disponibili in formato cartaceo e pdf. Oggi però è molto più facile trovare documentazione e informazioni grazie a Internet, rispetto agli anni '80. In quell'epoca c'erano solo libri e riviste. Reperire manuali e informazioni era un processo che richiedeva più tempo, naturalmente ciò rallentava il processo di apprendimento. Io iniziai a studiare la programmazione BASIC già dai primi anni '80, ma mi documentai anche un po' riguardo l'Assembly del 6502. Tuttavia quel linguaggio l'ho approfondito solo in seguito, da più adulto. L'Assembly è un linguaggio che richiede una certa consapevolezza dell'architettura della macchina, cosa che è arrivata solo più avanti nel mio percorso di formazione.

Certo oggi rispetto a 30 anni fa è più facile trovare informazioni e documentazione grazie a Internet, anche se rimane il fatto che per imparare la programmazione in linguaggio Assembly richiede comunque una certa predisposizione mentale. In particolare, di quali strumenti ti sei avvalso per creare Genius?

Anche se utilizzo molto gli emulatori delle varie macchine nella fase di sviluppo di base, a livello di metodologia e strumenti di sviluppo ho preferito utilizzare programmi dell'epoca (editor e programmi Assembler). So che molti si avvalgono di cross compiler che offrono la possibilità di lavorare su strumenti moderni e produrre codice eseguibile per le macchine dell'epoca, ma personalmente trovo che l'esperienza completa di retrocomputing abbia sil suo fascino a partire anche dall'utilizzo dei tool di sviluppo originali. Infatti io ad esempio ho usato l'Assembler "Merlin" di Glenn Breandon che è disponibile sia per Apple II che per Commodore64/128. Lo trovo uno strumento molto potente, facile da usare, garantendo una buona esperienza retrò, ma anche una velocità e versatilità di programmazione notevoli. Poi il test su real hardwere è molto importante nella fase conclusiva del test perchè, per quanto sia, l'emulazione non è mai la riproduzione perfetta di tutti i comportamenti prodotti dall'hardware reale, soprattutto per quanto riguarda temporizzazioni, gestioni/letture di ingressi analogici come il joystick, lettura dati da disk driver ecc. Secondo me, da un certo punto in poi, è sempre bene verificare il funzionamento di un programma su hardware reale.

Mi pare di capire che sei un purista in un certo senso, complimenti! Sicuramente programmare in questo modo old style contribuisce a rivivere esperienze, sensazioni e forse anche frustrazioni degli anni passati. Hai intenzione di fare il porting di GENIUS anche per altre piattaforme?

Da poco ho ultimato il porting di GENIUS per il Commodore Plus 4, in occasione del quale mi sono divertito a scegliere un layout di colori diverso e personalizzato. Questo perché il Plus 4 offre 128 colori. Quindi ho sfruttato le 8 luminosità per ognuno dei 16 color base. La prossima sfida sarà il porting per macchine BBC Micro della Acorn. Ho già iniziato a studiare l'architettura e le funzionalità di questi computer.

Non perdi tempo! Un'ultimissa domanda prima di congedarci... hai altri progetti in cantiere? Specificatamente per il C64, pensi che ti cimenterai nella creazione di altri videogame?

Essendo GENIUS un'opera rock in 3 episodi (una trilogia in sostanza) ho intenzione di fare 3 epsodi anche del videogame. Quindi in futuro mi dedicherò alla realizzazione dell'episodio 2 e, successivamente, del 3. Saranno disponibili per tutte le piattaforme per le quali avrò gia' sviluppato il motore base di gestione del gioco. Saranno comunque episodi che riproporranno lo stile del primo; anche il gameplay sarà simile. Cambierà solo il layout e saranno introdotti nuovi livelli con diverse morfologie e scenari. Ci sarà qualche nuova feature, ma di base si tratterà di una continuazione del gioco abbastanza omogenea con il primo episodio. Una piccola anticipazione per voi: l'episodio 2 si intitolerà "Into the Toy Caves" e sarà interamente ambientato nel sottosuolo.

Ci congediamo con una riflessione conclusiva. Un videogame è senz'altro equiparabile a un'opera d'arte... Ringraziamo Daniele per averci raccontato così tanto a proposito di GENIUS - Into the Toy Warehouse che  per l'aspetto grafico e sonoro, per il concept e anche per come è nata l'idea, possiede più che mai quel profumo tipico di un videogame "homebrew". Ora abbiamo tanta curiosità di vedere i prossimi episodi!