Sebbene i tempi di massima produttività videoludica del Commodore 64 siano ormai un lontano ricordo, a mantenerlo vivo ci pensano tanti appassionati. Tra essi c'è Antonio Savona, il quale appartiene a quella cerchia ristretta anzi ristrettissima di programmatori italiani di videogiochi per C64. Antonio ha realizzato P0 Snake, un divertente arcade che si è aggiudicato il primo posto nella classifica "RGCD C64 16KB Cartridge Game Development Competition 2014". P0 Snake è stato commercializzato in versione cartuccia da RGCD nell'aprile 2015, andando praticamente a ruba. Fortunatamente dal mese di agosto è disponibile anche in versione floppy disk, nastro e digital download nell'e-shop di Psytronik. Abbiamo rintracciato Antonio per farci raccontare qualcosa su di sé, sul suo videogioco, sui progetti passati, presenti ma soprattutto... futuri!
Antonio, ben trovato e complimenti per aver vinto il primo posto dell'RGCD C64 16KB Cartridge Game Development Competition 2014! Raccontaci qualcosa di te, ad esempio di dove sei, cosa fai nella vita, quali sono stati i tuoi studi e, naturalmente, com'è nata la tua passione per il Commodore 64.
Sono nato a Sora in provincia di Frosinone e ho vissuto lì fino alla maggiore età, in seguito mi sono trasferito a Pisa, dove ho studiato informatica e ho iniziato a lavorare. Sono rimasto a Pisa fino a qualche anno fa, successivamente mi sono trasferito a Londra per lavorare in Microsoft. Da circa un anno mi occupo di Analisi di Dati e ML presso una società riassicurativa.
La mia passione per il Commodore 64 è nata grazie a mio fratello, che fu un "early adopter", almeno per gli standard italiani: il C64 arrivò a casa nostra nel Natale 1983. Mio fratello fu particolarmente precoce anche nell'approccio alla programmazione: ricordo che un anno dopo, nonostante la rudimentalità degli strumenti a disposizione, aveva già sviluppato un clone di Break Out in Assembly. Non possedendo un assembler per compilare il codice, faceva tutto con un monitor che si era programmato da solo. Io avevo 10 anni e mi sembrava magia nera (ancora oggi mi sembra un mezzo miracolo, a dire il vero). Ricordo che qualche volta mi lasciava giocare a Frogger e Mr. Robot, e mi bastava così.
Negli anni che seguirono iniziai anche io a scrivere qualche programmino finché nel 1986 mio fratello passò ad Amiga e mi lasciò il C64 in esclusiva. Sbirciando i suoi appunti e studiando i suoi sorgenti cominciai ad appassionarmi all'Assembly e realizzai qualche intro e demo, condividendole con gli amici. La scena locale era incredibilmente viva a quel tempo: quasi tutti i miei amici programmavano e ci scambiavamo quotidianamente le informazioni più recenti e le ultime demo. A pensarci ancora, appare assurdo come dei tredicenni parlassero di pagina zero e multiplexer mentre tiravano calci a un pallone, ma le cose andavano così. Nel 1988, dopo aver scritto parecchie intro e demo, decisi di provare a creare un gioco. Così come mio fratello 4 anni prima, anche io avevo strumenti molto rudimentali ma non avevo la sua determinazione, senza contare che il mio progetto era nettamente più complesso, quindi non riuscii a portalo a compimento, sebbene alla fine fossi riuscito a realizzar qualcosa di giocabile. Al compimento del diciottesimo anno di età mi trasferii a Pisa per studiare, come detto, e abbandonai il C64. Per me era finita lì.
Recentemente hai realizzato P0 Snake. Com'è nato il concept, cosa ti ha indotto a sviluppare un videogame per il C64?
Nel 2013, durante uno dei miei viaggi in Italia, recuperai i floppy con i sorgenti del gioco che stavo sviluppando esattamente 25 anni prima, Block Zone. Li portai con me a Londra e cercai di recuperare il tutto, seguendo info sul web. Ci misi parecchio tempo ad avere qualcosa di funzionante: tutto quello che doveva essere perfettamente chiaro al me stesso di 25 anni prima era diventato nebuloso, a dir poco. Ma alla fine Block Zone partì e per me fu come un ritorno di fiamma. Decisi che lo avrei terminato.
Prima di cimentarmi in questo progetto pensai di iniziare qualcosa di più semplice, per "ripassare" l'Assembly Cominciai a pensare a qualche gioco elementare, tipo Space Invaders, Snake, Pac Man, Pong, Break out... Così nacque il concept di P0 Snake, che è un mashup di tutto questo. P0 Snake doveva essere una specie di esercizio di riscaldamento, ma, man mano che prendeva forma, finì per diventare il mio focus principale. Venni a sapere della competizione RGCD e decisi di iscrivermi, così da avere una scadenza per non ripetere l'errore di 25 anni prima. Il gioco finì per vincere la competizione e quindi si guadagnò il diritto alla pubblicazione, ma fino a poche settimane prima della scadenza pensavo di ritirarmi, perché non mi sembrava una produzione all'altezza della compo: non sono evidentemente un buon giudice di me stesso. Il punto di svolta è stato l'incontro con Aldo Chiummo che mi ha scritto le musiche. Quando le ho inserite nel gioco tutto ad un tratto mi è sembrato un prodotto "vero". Oltre ad essere un musicista di talento, Aldo sa leggere i giochi meglio di chiunque altro, e certamente meglio di me.
Di quali strumenti ti sei avvalso per scrivere il codice e per disegnare la grafica?
Ho usato Kick Assembler per sviluppare (se penso che 25 anni fa scrivevo tutto il codice con carta e penna e poi lo ricopiavo con una Action Replay...) e alcuni strumenti autocostruiti per il level editing, il calcolo delle rotazioni, la compressione dell'audio eccetera, che ho sviluppato principalmente in Python, C# e C++. Il gioco è un po' particolare, quindi nessun tool generico come Spritepad o Charpad faceva al caso mio.
Per provare il concept ho scritto una versione semplice del gioco in Python su PC. Questa idea mi ha fatto risparmiare tanto tempo, permettendomi di testare di volta in volta alcune idee prima di lanciarmi nell'implementazione in Assembly. È un approccio che sto seguendo anche adesso per il mio nuovo gioco. A chi mi chiede perché perdo qualche ora per programmare qualcosa che non verrà mai rilasciato, rispondo mostrando il codice che disegna o cancella una pallina (usato per la coda del serpente in P0 Snake, che non è altro che una serie di palline sovrapposte) rispettivamente sul PC in Python e in Assembly su C64. Credo che valga la pena scrivere la prima versione per accorgersi di aver avuto una idea sballata, prima di lanciarsi a scrivere la seconda.
Utilizzi suoni e messaggi campionati all'interno dei programmi... Come mai hai scelto questa prerogativa? Che procedura hai utilizzato per crearli?
Così come il gioco è vettoriale per un motivo preciso: non sono bravo a disegnare grafica, allo stesso modo il gioco ha suono campionato (anche) perché non sono particolarmente bravo a fare effetti sonori con il SID. Sebbene ci siano alcuni effetti sonori classici nel gioco, lo speech la fa da padrone. È anche un omaggio a Block Zone. Il gioco doveva avere audio campionato, perché il mio "idolo" al tempo era Simon Nicol, che ne faceva largo uso, e volevo anche io averne, più che altro per spirito di emulazione.
La procedura usata per crearli è stata particolarmente complessa: il gioco doveva partecipare a una 16k coding competition, quindi non c'era molto spazio a disposizione per il parlato. Per questo ho dovuto implementare un sistema di compressione. Nella versione della competizione, lo speech occupa circa 4 kbyte. Le versioni commerciali contengo ugualmente suono compresso, ma la compressione è molto più blanda e il parlato è più chiaro. Se avete la voglia di leggere i dettagli, ho scritto 3 blog post in proposito.
Credo che ormai i sample siano diventati un po' un mio marchio di fabbrica, e probabilmente li userò anche nelle prossime produzioni.
Più in generale, ci racconteresti in che modo hai appreso la programmazione in assembly e quando hai iniziato a programmare?
Come già detto, il merito è di mio fratello maggiore, che è stato un po' un pioniere nella mia città. Ho imparato i primi rudimenti di Assembly da lui e poi ovviamente ho disassemblato tutti i giochi che sono riuscito a trovare, che è un po' il percorso seguito da tutti nell'era pre-internet. Avevo anche un libro che mio fratello comprò a Roma in una libreria specializzata e che mi lascìo in eredità quando passò all'Amiga: Programming the 6502, di Rodnay Zaks. Recentemente l'ho riaperto e devo dire che non ho la minima idea di come un tredicenne, che non spiccicava una parola di inglese, potesse leggere quella roba! Ma tant'è: evidentemente la passione ci conferiva doti sovraumane.
Comunque ho iniziato a scrivere i primi loop in Assembly a 13 anni. Inizialmente erano solo delle subroutine di supporto a programmi in Basic, successivamente abbandonai il Basic e mi dedicai totalmente all'Assembly scrivendo principalmente demo e intro. A 18 anni, come detto, ho abbandonato totalmente il C64, per poi riprenderlo solo tre anni fa.
Ci sono programmi o videogame che hai sviluppato in passato per C64 o per altri computer?
Limitatamente ai videogiochi (a meno che non siate interessati anche a quello che programmo per lavoro), a parte il già citato inedito Block Zone (che prima o poi devo finire), ho lavorato nell'industria del gaming per qualche anno tra il 2003 e il 2006, principalmente sul Gameboy Avance e Nintendo DS, con società come Atari, Activision e Disney Interactive. Tra i giochi a cui ho lavorato ci sono Spiderman 2, Driv3r, Kim Possible 2, Kim Possible 3, Totally Spies e altri.
Il Gameboy Advance è la mia seconda piattaforma preferita, dopo il C64. Una macchina eccezionale. Quando sarà abbastanza retro, magari tornerò a lavorarci.
Cosa bolle in pentola... c'è qualche progetto in cantiere?
Sto lavorando a un nuovo gioco, Planet Golf, di cui ho rilasciato una preview qualche tempo fa. La preview è stata accolta molto bene e RGCD e Psytronik si sono già detti disposti a pubblicarlo, quindi quella è la mia priorità al momento. Speriamo di averlo pronto entro l'inizio dell'anno prossimo, vita reale permettendo.
A parte Planet Golf ci sono un po' di cose iniziate con priorità minore che prima o poi vorrei terminare. Ho un paio di giochi 4k che sono quasi completi. C'è poi un porting di Phoenix su C64, che mi piacerebbe terminare. Al momento ho il primo livello più o meno giocabile, ma credo di essere al 20% dello sviluppo, volendo essere buoni.
Come vedi, non ho perso il vizio di iniziare le cose senza terminarle.
Per finire, durante lo sviluppo di P0 Snake ci sono parecchi livelli che non hanno trovato posto nella versione finale per svariati motivi: alcuni erano troppo difficili, altri troppo simili a quelli pubblicati, altri semplicemente troppo grossi per la versione 16k o 64k (I minigame inseriti nel gioco possono essere particolarmente esosi di memoria): mi piacerebbe raccogliere tutti questi livelli, magari aggiungendone altri, e pubblicare "P0 Snake: the b-sides", sfruttando magari supporti più capienti come floppy o cartucce da più di 64Kb. Magari ci lavorerò dopo Planet Golf.
Che opinione hai in merito al mercato attuale dei videogames per C64? Più in generale, segui la scena?
Sì, ho iniziato a seguire la scena recentemente. Ho anche programmato qualcosa per i miei amici in Atlantis e Hokuto Force, sebbene la mia priorità sia lo sviluppo di giochi. Ho fatto già troppe demo da ragazzino :-). Quello che veramente mi sorprende della scena è il supporto che ti viene offerto. Da giovane vedevo questi gruppi che si facevano una guerra spietata, ora mi sembra una grande famiglia e tutti hanno voglia di aiutarti. Per esempio, quando ho iniziato a sviluppare P0 Snake, inizialmente volevo usare una tecnica per campionare effetti sonori a 8-bit che Mahoney aveva inventato poco tempo prima, ma avevo dei dubbi sul timing, visto che doveva girare insieme al gioco. L'ho contattato senza alcuna speranza ma immediatamente mi ha risposto mettendosi totalmente a mia disposizione. Altro esempio, la musica di P0 Snake: io non ero in grado di comporla, quindi chiesi a James Monkman di pubblicare sul sito della compo una richiesta di aiuto: un'ora dopo la pubblicazione avevo già ricevuto 10 offerte. Io non avevo "storia" nel C64, e non c'era alcuna garanzia che avrei terminato il gioco, quindi il fatto che delle persone si mettessero al lavoro per me, gratis e senza nessuna prospettiva certa, mi sembrava incredibile.
Poi devo dire che vivere a Londra mi aiuta parecchio. Per dirne una, qualche giorno fa ho finalmente incontrato di persona Simon Nicol. Per me è stato come incontrare una rockstar. Il mio sogno è convincerlo a tornare a programmare il C64. Me lo lavorerò piano piano...
Per quanto riguarda il mercato dei videogame per C64, credo che sia ancora abbastanza sbilanciato rispetto alla scena, nel senso che ci sono pochi giochi commerciali sviluppati rispetto alle potenzialità e ai talenti che vedo in giro, e il focus mi sembra orientato principalmente su demo e intro. Ma immagino che questo sia frutto dei tempi che viviamo e della nostra età: lo sviluppo di un gioco è un processo molto più complesso rispetto a quello di una breve intro, e richiede del tempo che non tutti possono investire, visto che presumibilmente esistono altre priorità nella vita adesso. Quindi chi programma deve scegliere tra le demo, che garantiscono comunque una produzione più elevata, o i giochi, il cui sviluppo però potenzialmente richiede anni, visto il poco tempo a disposizione.
Lo stesso discorso si applica alla qualità: mega-produzioni degli anni 80 come Last Ninja, per fare un esempio, non sono minimamente concepibili al giorno d'oggi. A parte casi isolati, come Hessian (che infatti ha richiesto parecchi anni), i giochi sono più semplici e immediati. Ciò non è necessariamente un difetto, perché questo tipo di produzioni sono appetibili sotto altri punti di vista, ma il giocatore che cerca il titolo veramente appassionante su cui investire parecchie ore deve necessariamente rivolgersi ad altre piattaforme.
Mi sembra però che la tendenza stia lentamente cambiando sia dal punto di vista qualitativo che quantitativo. Credo che la produzione degli ultimi due o tre anni sia sensibilmente migliore di quanto visto in precedenza.
Ringraziamo Antonio per aver condiviso con noi così tante informazioni e retroscena su P0 Snake. Naturalmente il nostro plauso va alla sua volontà di proseguire nello sviluppo di nuovi videogames per il Commodore 64, cosa che speriamo accada presto. Ora scusate se sono così sbrigativo nel chiudere l'intervista ma devo scappare... sono nel bel mezzo di una sfida a P0 Snake!
Per chi gradisse approfondire, lasciamo a disposizione i sorgenti di esempio e l'indirizzo web degli articoli pubblicati sul blog, menzionati da Antonio nel corso dell'intervista!