Cos'è TIC-80?
TIC-80 appartiene a quel filone di software che puntano a ricreare il look & feel delle console anni '80 e '90 (in alcuni casi anche '70), filone che ha il suo maggiore esponente nel PICO-8.
Questi software vengono comunemente definiti fantasy console o fantasy computer, hanno un set di istruzioni (API) ben definito ed emulano persino la RAM in maniera virtuale permettendo grande flessibilità su quello che viene portato a schermo. Le community che le riguardano sono molto vive: vi invito a fare un giro sul Discord ufficiale di questo mondo in rapida crescita.
Tornando a TIC-80, arrivato alla versione 0.60.3, è evidente il look & feel retro: se questo è vero per i fruitori finali, i videogiocatori, è soprattutto vero per chi ci sviluppa. Alcune delle caratteristiche essenziali di questa fantasy console sono:
- Risoluzione fissa a 240x136
- Palette a 16 colori
- 256 sprite di dimensione 8x8
- Sonoro a 4 canali
- Supporto ai gamepad
Questa fantasy console è gratuita, con una versione PRO acquistabile su itch.io alla modica cifra di 5$ con alcune feature interessanti (alcune già presenti, altre in via di sviluppo). Il suo creatore è molto presente e disponibile per nuove richieste e bugfix. Oltretutto, è stata resa open source dal suo creatore, nonostante solo pochi contribuiscano attivamente a nuove feature.
Una volta avviato il software (che gira anche all'interno del browser) ci ritroveremo davanti ad una linea di comando. Alcuni dei comandi classici come "mkdir", "cd" e "dir" hanno il medesimo funzionamento della loro controparte Windows. Per la lista completa rimando alla wiki.
Premendo ESC si entra in modalità editor e si viene portati alla schermata del code editor. Con i tasti funzione F1 F2 F3 F4 F5 o cliccando sulle tab corrispettive si accede agli altri editor (sprite, map, sound e music): è subito possibile andare a scrivere, disegnare o comporre i vari aspetti del nostro gioco.
Si può impostare un linguaggio di programmazione a scelta tra Lua (default), MoonScript e JavaScript attraverso un commento nei metadati del file di codice. In futuro potrebbero essere aggiunti nuovi linguaggi come Wren. Di default, utilizzando Lua, saranno disponibili tutte le funzionalità di questo linguaggio (libreria standard, math, ecc.) con alcune ovvie limitazioni per l'I/O.
Una volta scritto il nostro codice e realizzati sprite e suoni, si può eseguire il gioco semplicemente premendo CTRL+R o premendo ESC e scrivendo in console "run". Se in un primo momento ottenete un errore di "Missing cart name" non preoccupatevi: prima di eseguire il gioco, è necessario salvare la "cart" (ovvero la cartuccia, un file in formato .tic che contiene tutto il gioco) con il comando "save" seguito dal nome che vogliamo dare al nostro gioco. Una volta eseguito questo primo passo si può eseguire il gioco.
Estremamente essenziale, il codice di default mette a schermo uno sprite animato (2 frame) che può essere mosso tramite le frecce direzionali: non un vero gioco ma le prime basi per capire la struttura del codice di una cartuccia. La funzione TIC() viene chiamata a ogni frame. Al suo interno è possibile gestire la logica e disegnare sprite/mappe. Per tutte le API che è possibile utilizzare rimando alla wiki.
Quelle che vi saranno più utili e compariranno più spesso nel vostro codice saranno senza dubbio spr e btn, rispettivamente per disegnare a schermo uno sprite con vari parametri e per rilevare la pressione di un tasto. Nel codice di default vediamo infatti che a seconda del tasto premuto rilevato con btn (0 = freccia su, 1 = freccia giù, 2 = freccia sinistra, 3 = freccia destra) vengono alterate due variabili globali x e y. Successivamente al rilevamento dell'input, viene eseguito il disegno tramite la funzione spr, passando l'indice dello sprite e le nostre due coordinate x e y, fresche di modifica se un tasto è stato premuto.
Questo primo frammento di codice, interpretabile anche dai principianti più assoluti, contiene altre istruzioni come cls ("clear screen", con un parametro che indica l'indice del colore di riempimento) o print (che stampa un testo alle coordinate specificate). Partendo da queste poche istruzioni arrivare a buoni risultati è molto rapido e intuitivo rendendo TIC-80 un buon strumento anche per la realizzazione di prototipi. Spingendosi oltre le limitate possibilità tecniche della macchina, lo sviluppatore può andare ad agire direttamente sulla RAM con le funzioni peek e poke, realizzando effetti particolari (palette swap, screen shake) e rendendo via via tecnicamente più avanzato il gioco stesso.