Il 10 aprile sarà il termine ultimo per partecipare alla Retro Snake Game Jam, sfida di retro-programmazione organizzata dal gruppo Retro Programmers Inside in collaborazione con Phaze101 e ospitata sulla piattaforma itch.io. Lo scopo della sfida è la realizzazione di un gioco in cui vi sia un serpentello, non importa che sia il protagonista del gioco o il “cattivo” da evitare o da sconfiggere. Sono ammessi giochi per computer e console a 8/16 bit basati sulle CPU appartenenti alle “famiglie” Z80, 6502 e Motorola 68K.
baSnake
Ho quindi pensato bene di candidare il mio baSnake, realizzato ormai 6 anni fa in BASIC per lo ZX Spectrum, proprio in occasione di un’altra game jam su itch.io e successivamente arricchito per sfruttare alcune caratteristiche dello ZX Spectrum Next. Per poter partecipare, ho dovuto preparare una versione ad hoc, contenente il messaggio “Partecipante alla Retro Programmers Inside (RPI) and Phaze101 Game Jam“, come richiesto dal regolamento della Retro Snake Game Jam. Tale versione è disponibile, insieme alle precedenti, sulla pagina itch.io di baSnake.
YAS
baSnake non è stato l’unico progetto in cui ho avuto a che fare con serpentelli pixellosi. Nel 2015, infatti, mentre mi dilettavo con lo sviluppo di CHIP-OTTO, il mio interprete CHIP-8 per ZX Spectrum e di WEB-OTTO, la controparte per browser web, ho realizzato un clone di Snake proprio per questa piattaforma, chiamato – guarda un pò – YAS – Yet Another Snake (ancora un altro serpente). Sebbene scritti in linguaggi completamente diversi, baSnake eredita da YAS la possibilità di selezionare lo scenario in cui giocare.
Recentemente, ho appreso con piacere che YAS è stato incluso nella distribuzione ufficiale di EMMA02, emulatore multipiattaforma in grado di eseguire l’interprete CHIP-8 originariamente sviluppato per i computer della serie Cosmac.
ZNAKE
Non è ancora tutto: per arrivare alla mia prima implementazione di un gioco in stile Snake, occorre andare ancora più indietro nel tempo, per l’esattezza al 2005. In quell’anno, infatti, realizzai ZNAKE, il mio primo progetto completo (seppur minimale) di videogioco per retrocomputer.
ZNAKE è infatti un semplice giochino in stile Snake, Worm, Nibbles, etc… per Sinclair ZX Spectrum. Lo scopo del gioco è pilotare il serpente (nelle direzioni alto / basso / sinistra / destra ) in modo che possa mangiare le mele che appaiono sullo schermo, evitando di urtare i muri o il serpente stesso. Per ogni mela ingerita, il giocatore guadagna punti, ma il corpo del serpente si allunga, rendendo così più difficile la partita.
ZNAKE nasceva dal desiderio di realizzare un gioco, seppur semplice, per il celebre computer ZX Spectrum, al quale sono particolarmente affezionato. Già da tempo avevo avuto modo di conoscere il fantastico Z88DK, ma non ero mai andato oltre qualche semplice prova finchè un giorno, nel 2005, ispirato da un tutorial (purtroppo ho perso il riferimento, si parla di troppi anni fa) sul sistema a finestre X, decisi di implementare il serpentello come lista concatenata. Giocando così con malloc e putchar, ho implementato ZNAKE quasi completamente in C, utilizzando un minimo di Assembly. Non pago, per completare l’opera ho poi provveduto a trasferire ZNAKE su nastro, in modo da poterlo giocare sul vero Spectrum, oltre che sugli emulatori.
Successivamente, grazie all’emulatore Qaop, avevo anche creato un widget di Dashboard (che adesso chiameremmo “app“) per MacOSX e una versione per qualche desktop di Linux.
ZNAKE è quindi un progetto doppiamente retro, in quanto si tratta di un gioco per retrocomputer, realizzato quasi 20 anni fa (l’iBook G4 che utilizzavo all’epoca è ormai un retrocomputer esso stesso!). Tuttavia, giocando a ZNAKE, si può già avere un’idea di quale sarà lo stile di baSnake.
Dopo questo tuffo nel passato, ho pensato che anche ZNAKE avrebbe potuto partecipare alla Retro Snake Game Jam, previo inserimento del succitato messaggio. Il programma originale non è compatibile con le versioni recenti di z88dk, per cui ho dovuto fare alcune modifiche, cogliendo l’occasione per migliorare il codice, eliminando parti scritte da me a favore delle funzioni presenti nelle librerie fornite con z88dk. Il risultato è quindi, come al solito, disponibile per il download o per giocare tramite browser web (grazie all’emulatore JSSpeccy3) sulla pagina dedicata nella piattaforma itch.io.
Direi, quindi, che 3 implementazioni di Snake bastano e avanzano!
Anche se una versione BASIC 10 Liner, magari… 🙂
Link e riferimenti
- baSnake
- Pagina del progetto su itch.io, con la possibilità di scaricare il gioco per ZX Spectrum e ZX Spectrum Next e di giocare alla versione per ZX Spectrum
- Video che mostra baSnake in esecuzione sullo ZX Spectrum Next
- YAS (Yet Another Snake) – CHIP-8
- Gioca / scarica YAS dalla pagina del progetto su itch.io
- Gioca a YAS sul tuo browser web con WEB-OTTO
- Video che mostra YAS in azione sul port per ZX Spectrum Next di CHIP-OTTO
- CHIP-OTTO, interprete CHIP-8 per ZX Spectrum (e Spectrum Next)
- WEB-OTTO, interprete CHIP-8 per browser web
- EMMA02, emulatore multi piattaforma che include anche YAS
- ZNAKE
- Retro Snake Game Jam, a cui partecipo con baSnake e ZNAKE
- ZX Spectrum BASIC Jam, a cui partecipai con baSnake