
Intervista a Gianluca Alberico
A cura di Francesco Galluccio.
Oggi abbiamo il piacere di parlare con Gianluca Alberico, sviluppatore software con una grande passione per l’informatica, i videogiochi e la scrittura. Conosciamolo meglio attraverso questa intervista.
Ciao Gianluca, iniziamo con il raccontarci qualcosa di te: cosa fai nella vita, quali sono i tuoi hobby e le tue passioni?
Mi chiamo Gianluca Alberico, ho 46 anni e nella vita sono uno sviluppatore software. Fin da quando ero piccolo sono sempre stato affascinato dai computer e dalla loro capacità di dare forma a qualcosa di concreto attraverso la programmazione. Così ho iniziato presto a cimentarmi con il codice, muovendo i primi passi sul Commodore 64: nonostante le limitazioni del suo BASIC, è lì che ho appreso i rudimenti della programmazione.
Successivamente sono passato all’Amiga, e lì ho potuto dare libero sfogo alla mia creatività, sviluppando tante idee che mi hanno permesso di migliorare e approfondire quest’arte. Mi dedicavo soprattutto a progetti di tipo videoludico — quindi videogiochi, realizzati principalmente con AMOS Basic — ma non ho mai trascurato l’importanza di imparare a sviluppare anche applicativi più tradizionali.
In seguito sono approdato al PC, prima programmando in Pascal, C e C++ sotto MS-DOS, e poi in Visual C++ e C#.NET. Da quel momento ho scelto di intraprendere la carriera di sviluppatore .NET, che è diventata la mia professione attuale. Tuttavia, non ho mai smesso di dedicarmi anche ai videogiochi, che continuo a sviluppare nel tempo libero.
Non ho molti hobby, se non il ciclismo e le passeggiate, che mi aiutano a staccare e rilassarmi. Le mie passioni principali restano la programmazione, il gaming e, più recentemente, la scrittura, una scoperta che ho fatto solo da poco ma che mi sta dando molte soddisfazioni.
Come ti è venuta l’idea di sviluppare un motore per picchiaduro 1 vs 1?
L’idea di sviluppare un picchiaduro per Commodore 64 mi è venuta nell’ottobre del 2021, quindi esattamente quattro anni fa. Negli ultimi anni ho seguito con interesse sia la demoscene che i progetti homebrew dedicati al C64, e non ho mai smesso di cercare un gioco che potesse ricordare Street Fighter II a livello di gameplay. Street Fighter è infatti il mio gioco preferito, e mi sarebbe sempre piaciuto vedere una conversione ben fatta per C64.
Dopo alcune ricerche, mi sono accorto che nel 2021 non esisteva nessun picchiaduro per C64 in grado di soddisfare tutte le caratteristiche che cercavo. Ho visionato diverse demo di progetti simili trovati online in quel periodo, ma le ho trovate piuttosto deludenti: mancavano infatti molti degli elementi fondamentali dell’engine di Street Fighter II, che conosco molto bene. Così ho deciso di iniziare a sviluppare un picchiaduro per C64 a modo mio.
Nei primi anni 2000 avevo già realizzato un picchiaduro per MS-DOS, quindi ho pensato di sfruttare quell’esperienza per crearne uno anche per C64, e vedere fin dove potevo spingermi in termini di prestazioni e gameplay.
Il risultato è stato principalmente un motore di esecuzione, che ho chiamato RetroFighter, sul quale viene poi eseguito il gioco vero e proprio. Ho scelto di operare in questo modo più per deformazione professionale che per altro: lavorare da anni come sviluppatore .NET, e in generale nel mondo degli applicativi gestionali, mi ha abituato a ragionare in termini di codice riutilizzabile. Così anche nel caso dei picchiaduro ho finito per applicare lo stesso approccio.
Come conseguenza, il motore RetroFighter è strutturato in modo da essere multipiattaforma: è sviluppato per metà in C e per metà in Assembly. Le parti critiche — cioè quelle che richiedono altissime prestazioni — sono scritte in Assembly, come ad esempio il rendering degli sprite, mentre la logica principale è sviluppata in C. In questo modo risulta più semplice adattare lo stesso engine anche ad altre piattaforme.


Quali problematiche hai incontrato durante lo sviluppo?
Ho incontrato non poche difficoltà nella realizzazione del motore generale. I requisiti che mi ero prefissato erano molteplici.
Innanzitutto, gli sprite dovevano essere relativamente grandi: in un picchiaduro come Street Fighter II gli sprite devono essere abbastanza grandi da risultare non solo distinguibili, ma anche funzionali. Nel gioco originale, infatti, esistono colpi molto lunghi — come quelli di Vega (il guerriero spagnolo con l’artiglio) o di Dhalsim — che sono impossibili da riprodurre in modo adeguato sulle limitate capacità del C64 utilizzando soltanto i canonici otto sprite senza ricorrere a tecniche particolari di rastering.
Per evitare di dover deformare i fotogrammi dei personaggi, come invece ho visto fare in altre demo, ho scelto di utilizzare un multiplexer: gli otto sprite del C64 vengono usati soprattutto in orizzontale e riutilizzati in verticale, in modo da renderli più alti possibile. Dopo diversi tentativi sono riuscito a implementare un multiplexer molto veloce, in grado di disegnare sprite fino a 48×84 pixel, con la possibilità di estendere ulteriormente i fotogrammi sia in orizzontale che in verticale. Basta osservare i frame di Super Street Fighter II Turbo — in particolare T. Hawk o le pose di vittoria di Blanka e Zangief — per rendersi conto delle dimensioni dei personaggi. In questo modo sono riuscito a mantenere un rapporto di scala fedele tra gli sprite del C64 e quelli della versione arcade.
Un’altra sfida è stata quella degli effetti grafici. Il motore RetroFighter è in grado di gestire elementi come scintille durante i colpi, polvere che si solleva quando un personaggio cade a terra e altri piccoli dettagli che aggiungono profondità e richiamano l’atmosfera dei vecchi giochi arcade.
Per quanto riguarda le animazioni dello sfondo, inizialmente il motore non prevedeva alcuna componente dedicata: le prime demo caricavano lo sfondo come una semplice bitmap statica. Successivamente ho deciso di convertire le bitmap in tile mode, così da poterle animare. Come è noto, sul C64 la modalità bitmap offre una resa visiva migliore ma è quasi impossibile da animare, a causa della bassa frequenza della CPU. La modalità tile, invece, è più leggera dal punto di vista computazionale e — pur essendo meno dettagliata — è quella più utilizzata nei giochi commerciali. Il motore RetroFighter, infatti, è oggi in grado di caricare e animare gli sfondi in modalità tile.
Anche la gestione delle collisioni è stata una parte cruciale. Nei giochi arcade le collisioni vengono gestite tramite “rettangoli di collisione”: ogni fotogramma del personaggio contiene rettangoli che indicano le parti vulnerabili, quelle d’attacco, e così via. In Street Fighter esistono diversi tipi di rettangoli, e io li ho implementati tutti, con le rispettive logiche. In questo modo il comportamento del mio motore risulta quasi del tutto fedele a quello dell’engine originale di Street Fighter II.
Ho volutamente scartato le collisioni hardware pixel-per-pixel offerte dal chip grafico del C64 per diversi motivi:
- Non sono corrette dal punto di vista logico — un proiettile che sfiora un singolo pixel del piede di un avversario in salto genererebbe un falso positivo.
- Sarebbe frustrante per il giocatore sapere che basta un solo pixel per essere colpiti, limitando l’azione e incentivando un gioco troppo difensivo.
- Non favoriscono la portabilità del gioco su più piattaforme.
Un’altra parte impegnativa è stata la definizione del gameplay e delle dinamiche di gioco. Ho cercato di riprodurre tutto ciò che rende Street Fighter II unico: il motore consente di eseguire mosse speciali e super, a carica o con le classiche “mezze lune”, permette combo di colpi base e speciali, contrattacchi, rottura della guardia e prese di vario tipo. Alcune di queste caratteristiche, come la rottura della guardia e i contrattacchi, derivano in realtà da Street Fighter Alpha e Street Fighter EX. L’obiettivo del mio engine è proprio quello di ampliare le dinamiche di gioco rispetto al classico schema arcade.
Per quanto riguarda il formato di memorizzazione del gioco, dopo diverse valutazioni ho deciso di utilizzare la cartuccia. I vantaggi rispetto al dischetto sono notevoli: un gioco basato su floppy disk deve caricare continuamente dati in RAM, che sul C64 è molto limitata. La cartuccia, invece, sfrutta la tecnica del bank switching, che consente di leggere blocchi di memoria direttamente dalla ROM in tempo reale. In questo modo tutte le risorse — grafica, suoni, sfondi e dati di gioco — risiedono sulla cartuccia, migliorando prestazioni e fluidità, e permettendo animazioni più sofisticate.
Infine, un capitolo a parte merita lo scrolling. Sapevo fin dall’inizio che realizzarlo sul C64 non sarebbe stato facile. La versione del gioco senza scrolling gira già a 25 fps; aggiungere lo scorrimento avrebbe significato ridurre ulteriormente il frame rate, cosa per me inaccettabile. Ho quindi deciso di sfruttare la modalità Turbo Speed del Commodore 128, che permette alla CPU di raddoppiare la frequenza di clock in certe condizioni. La versione del gioco con scrolling, infatti, gira perfettamente su C128 proprio grazie ai 2 MHz della CPU. Sul C64 base, invece, funziona ugualmente, ma durante lo scrolling si notano inevitabili rallentamenti.


Che tool utilizzi per lo sviluppo?
Per lo sviluppo utilizzo Visual Studio Code sia per l’editing del codice che per la compilazione e il testing, che effettuo tramite l’emulatore VICE. Oltre a questo, uso anche diversi tool sviluppati da me, pensati per convertire sprite, immagini, font ed effetti sonori in formati compatibili con l’hardware del Commodore 64. In particolare, ho realizzato un’applicazione chiamata RetroFighter IDE — abbreviato RFIDE — un software per Windows che mi permette di modificare in modo visuale tutti gli elementi del gioco: personaggi, sfondi e quadri bonus. La creazione di questo strumento è stata necessaria a causa della complessità del progetto e dell’elevato numero di variabili legate alle animazioni e alle collisioni tra i personaggi.
L’engine alla base del progetto è stato sviluppato tenendo conto di molte informazioni provenienti dall’engine originale di Street Fighter II, soprattutto per quanto riguarda il sistema di collisioni. I bounding box che utilizzo, infatti, sono dello stesso tipo e ne rispettano pienamente la funzionalità.


Su che supporti è possibile provare i tuoi giochi?
Come accennato in precedenza, il formato di memorizzazione che ho scelto è la cartuccia. In particolare, SNK vs CAPCOM – Standard Edition, che comprende 16 personaggi, è distribuito su cartuccia EasyFlash da 1 MByte. È quindi possibile acquistare o procurarsi una cartuccia EasyFlash da 1 MB e scrivervi sopra il file del gioco. In alternativa, si può utilizzare anche una Kung Fu Flash, effettuando la stessa identica operazione.
Analogamente, anche SNK vs CAPCOM – Stronger Edition, che invece comprende 32 personaggi, è distribuito su cartuccia. Tuttavia, la quantità di dati necessaria per memorizzare tutti i personaggi mi ha costretto a chiedere a un amico di realizzare un nuovo formato di cartuccia in grado di gestire 2 MByte di ROM anziché uno solo.
Questo nuovo tipo di cartuccia si chiama Magic Desk 2 e, al momento, è ancora poco conosciuto e utilizzato. Attualmente è possibile provare la Stronger Edition solo su questo tipo di cartuccia, oppure utilizzando una TeensyROM.
I tuoi giochi richiedono espansioni particolari del computer?
Assolutamente no. È possibile giocare a qualsiasi versione dei miei titoli su hardware originale, quindi su Commodore 64 o Commodore 128, senza alcuna espansione aggiuntiva. Alcuni utenti, tuttavia, si sono lamentati del requisito del C128 per la versione con scrolling. In effetti, rispetto al C64, il C128 è molto meno diffuso, e questo fa sì che la versione con scrolling venga giocata meno frequentemente.
In realtà, è possibile sostituire il C128 con un C64 dotato di Ultimate-II+, poiché — come spiegato in precedenza — la versione con scrolling del gioco sfrutta unicamente la modalità Turbo della CPU del C128. Questa stessa modalità è disponibile anche sull’Ultimate-II+, permettendo così di ottenere le stesse prestazioni senza la necessità di possedere un C128.
Ho visto che esiste anche la possibilità di giocare con un controller a più pulsanti.
È vero. Il mio motore, e i giochi sviluppati su di esso, supportano i controller a due pulsanti. Dal momento che ho utilizzato esclusivamente l’hardware di base del C64, senza ricorrere a espansioni particolari, è possibile giocare con qualsiasi controller che implementi il fire standard e il segnale PotX (detto anche fire2).
Ad esempio, i controller del Sega Mega Drive possono essere collegati al C64 tramite l’adattatore appropriato e funzionare correttamente con i miei giochi.
Non è invece possibile utilizzare soluzioni che combinano i fire delle due porte del C64, poiché anche il secondo giocatore deve poter usare un controller a due pulsanti indipendente.
Quali altri progetti hai in mente per il futuro?
Attualmente, con questo motore, ho ultimato lo sviluppo di SNK vs CAPCOM – Standard Edition e Stronger Edition e sto completando la realizzazione di Super Street Fighter II Turbo, sempre per C64. Quest’ultimo, per il momento, verrà distribuito su EasyFlash da 1 MByte.
In futuro, mi piacerebbe portare SNK vs CAPCOM anche su Amiga 500, e ho intenzione di sviluppare altri picchiaduro.
Sto inoltre lavorando a una parte “parallela” del motore: quello che ho creato finora è specifico per picchiaduro 1 vs 1, ma esistono anche i picchiaduro a scorrimento. Attualmente sto espandendo l’engine per includere questa modalità, cercando di riutilizzare alcuni elementi già implementati per i picchiaduro 1 vs 1, come le animazioni e il modo in cui i personaggi si muovono.
Pagina ufficiale dei progetti di Gianluca Alberico
Concludendo questa intervista, posso affermare che parlare con Gianluca Alberico è stato un vero piacere. Non solo emerge la sua profonda competenza tecnica, ma anche la sua passione e dedizione per il mondo dei videogiochi retrò. Dalle sfide dello sviluppo su Commodore 64 alla creazione del motore RetroFighter, Gianluca dimostra come l’impegno, la creatività e la conoscenza tecnica possano dare vita a progetti straordinari, capaci di unire nostalgia e innovazione.
Il DumpClub64 desidera inoltre ringraziare Gianluca Alberico per aver reso possibile questa intervista, condividendo la sua esperienza e il dietro le quinte dei suoi lavori, offrendo così un prezioso contributo alla comunità dei videogiocatori e degli appassionati di retrocomputing.





