Come Italy '90 Soccer per Commodore 64 della Simulmondo fu sviluppato a tempo di record
Ovvero, come una volta fosse possibile creare un gioco in un mese contando solo su tecnica, passione, caffeina e la propria giovinezza. Tratto da Vita di Videogiochi: Memorie a 8 bit di Ivan Venturi
Pubblichiamo su autorizzazione dell'autore un brano di Vita di Videogiochi: Memorie a 8 bit, un libro introvabile di Ivan Venturi in cui si raccontano gli anni di Simulmondo e della scena videoludica italiana a cavallo tra l'Amiga e il Commodore 64.
Avevo da pochi concluso gli esami di maturità, quindi ero in quel periodo semi-sabbatico che si ha appena dopo il diploma, a fine estate. Quel limbo di un anno circa che precedeva la partenza per il militare, ai miei tempi ancora obbligatorio. Ma non perdetti tempo: Simulmondo, naturalmente, era la mia missione!
La situazione dell'azienda non era facile. Le vendite di Bowls e Simulgolf, in tutte le versioni previste, non erano riuscite a contenere gli alti costi dell'avvio e della stampa delle scatole, prodotte probabilmente in numero eccessivo. Italy '90 Soccer per Amiga, il calcio simil-3D dei fratelli Dardari, fu invece un successo, ma era stato prodotto e venduto solo da Italvideo, nonostante fosse co-marchiato da Simulmondo. Alla quale però, a quanto so, era arrivato ben poco.
Prime vendite non soddisfacenti, costi di avvio alti: le prospettive erano per Simulmondo in immediata e ripida salita.
Era necessario realizzare subito, entro Natale, un altro videogioco che vendesse bene. Quel videogioco sarebbe dovuto essere la versione per Commodore 64 di Italy '90 Soccer. Stavolta interamente pubblicata da Simulmondo. Ovviamente l'autore sarei dovuto essere io, l'unico a portata di mano con cui si poteva di parlare di mesi di sviluppo e non di anni.
Era appena iniziato l'autunno, metà o fine ottobre, il tempo già stringeva. A occhio e croce bisognava avere il "master" entro i primi di dicembre. Più o meno avevo quaranta giorni.
Basandosi sulla versione Amiga dei fratelli Dardari, Italy '90 Soccer per Commodore 64 doveva prevedere una modalità a partita singola e una modalità torneo, cioè la fase finale "eliminatoria" dei mondiali di calcio. Ci sarebbero dovute essere tutte le nazioni partecipanti ai mondiali e la partita si sarebbe dovuta svolgere in una modalita arcade, ma con una buona attenzione alla simulazione sportiva.
Come si sa, nel calcio ci sono undici giocatori per squadra, poi c’è pure il pallone. Ognuna di queste cose richiedeva uno sprite ovvero uno di quegli oggetti grafici che il Commodore 64 riusciva a gestire indipendentemente dallo sfondo. Peccato che gli sprite a disposizione fossero solo otto! All'appello mancavano quindi quindici sprite. Inoltre bisognava realizzare una buona routine di scorrimento dello schermo, dato che non si poteva certo peccare di lentezza proprio nella visualizzazione del campo. Le schermate di selezione della squadra, della vittoria, il menu iniziale eccetera, erano invece piuttosto semplici.
Per realizzare Italy '90 Soccer avrei avuto bisogno di circa quattro, sei mesi. Ne avevo meno di uno e mezzo. Capii che fino a Natale avrei dormito molto, molto poco. Ma non avevo scelta: c’era in ballo la possibilità di vedere realizzato il mio sogno, il mio mestiere ancora sospeso tra presente e futuro,
Mia madre, quando realizzò la situazione (io che di punto in bianco inizio a lavorare preoccupandomi a malapena delle necessità fisiologiche base, tipo mangiare e dormire), si prese vari giorni di ferie per essere sicura che non collassassi alla tastiera, dove stavo ventiquattro ore al giorno.
Mi trasferii definitivamente nel tinello, dove avevo tutto il necessario: il tavolino con il Commodore 64, il monitor, lo stereo, dischi, libri, cassette, fumetti e il letto a scomparsa nel quale di solito dormiva fratello, al momento assente perché partito per il servizio militare
Avanti tutta.
Fu il primo "crunch time" della mia vita!
Lavoravo diciotto, venti ore su ventiquattro: mangiavo con l’imbuto, bevevo caffè al posto dell'acqua, mi appoggiavo sul letto solo quando proprio non connettevo più, per riazarmi poche ore dopo in preda alla paura di non riuscire a fare in tempo. Al monitor avevo appiccicato un adesivo sul quale avevo scritto la data entro cui avrei dovuto concludere. Lavorai più che sodo, in un permanente stato di ansia misto a esaltazione, pensando solo e solamente a quello che stavo realizzando e sorretto dal sogno di quello che si sarebbe potuto avverare se avessi portato a ter il mio compito.
Uscii di casa un po' di volte: per la festa di Halloween in cui ricevetti pure una delusione sentimentale, per un pranzo in compagnia della mia classe del liceo e per qualche uscita con gli amici.
Per il resto, full-immersion totale, perennemente attaccato in cuffia allo stereo, inondato di Pink Floyd, U2, Doors.
Disegnai i vari fotogrammi delle animazioni dei calciatori, facendo miracoli con la bassa risoluzione della modalità multicolor in maniera decisamente rapida grazie ai vari tool che mi ero sviluppato nel corso degli anni (editor di caratteri e di sfondi grafici. editor di sprite e di animazioni).
Nonostante la pressione, mi divertii molto. Lo spazio era limitato, i fotogrammi per gli sprite che avrei potuto to create erano tutt'altro che infiniti, quindi dovevo spendere diversi secondi per scegliere dove posizionare ogni pixel, per rendere l'animazione del calciatore più realistica e gustosa possibile.
Scrissi la routine di scrolling dello schermo che muoveva solo le righe del campo e le porte, non essendoci sufficiente tempo macchina per muovere l'intera pagina video. Ci arrivai dopo diversi fallimenti, in cui sbattei il grugno contro i limiti del processore del Commodore 64.
Infatti, le operazioni per muovere tutti i pezzettini di grafica che componevano l'intero campo da calcio impiegavano nella loro esecuzione più del tempo richiesto dal pennello elettronico a disegnare sullo schermo. Risultato: un traballamento dell'immagine quando il campo si muoveva. Dovetti quindi usare una scrittura in linguaggio macchina più elementare possibile (e più veloce nell'esecuzione) e muovere solo le parti di campo che realmente avevano bisogno del movimento.
Per risparmiare tempo macchina, arrivai a evitare di usare cicli, a favore di sequenze lineari di lettura-scrittura (LOAD valore della colonna 2, STORE nella colonna 1, LOAD valore della colonna 3, STORE nella colonna 2 e così via per tutte le 40 colonne) dalla cima al fondo dello schermo, onde evitare il tempo macchina dell'incremento delle variabili delle locazioni e del salto. Guadagna qualcosa come il 50% della velocità!
Dopo un paio di giorni, il campo scivolava con la dolcezza di ingranaggio perfettamente oliato.
Ora toccava ai calciatori. Dovevo inventare un modo per raddoppiare, quasi triplicare, il numero degli sprite disponibili. Era un problema non facile da risolvere: se i calciatori si fossero mossi limitatamente in senso verticale (il campo aveva una porta a sinistra e una a destra, con la linea di metà campo in verticale) non sarebbe stato un problema: avrei intercettato il pennello elettronico che disegna l'immagine televisiva una volta disegnati i primi calciatori, poi alla velocità della luce li avrei riposizionati più in basso, in modo venissero nuovamente disegnati dal pennello elettronico che continua il suo corso verso il fondo dello schermo. Invece i calciatori hanno la brutta abitudine di muoversi imprevedibilmente su e giù per il campo.
Come fare? Optai per una soluzione logica più che visiva: allargai un po' il campo da calcio e feci in modo che quando un difensore usciva dall'inquadratura lateralmente, un attaccante dalla parte opposta del campo avrebbe fatto il suo ingresso nello schermo.
Tutti i calciatori si muovevano, quindi, con il movimento orizzontale condizionato, per fare in modo che non ce ne fossero mai più di sette contemporaneamente a video (portieri compresi, ovviamente). Sommati alla palla, erano gli otto sprite che mamma Commodore aveva messo a disposizione.
Usai la duplicazione degli sprite usati per i giocatori per creare le bandiere nazionali fuori dal bordo inferiore dello schermo (che "riaccendevo" via interrupt non appena il sistema cercava di "spegnerlo", trasformando lo schermo visibile" in "bordo"). Le due bandiere, una per ogni squadra che disputa la partita, erano realizzate con ben 4 sprite bitmap (non multicolor, quindi con colore singolo ma pixel "fini") sovrapposti, con un risultato molto bello.
Ero fiero di quelle bandiere, specialmente di quelle più elaborate, tipo quella brasiliana.
L'ultimo scoglio fu creare un'intelligenza artificiale decente, che consente di giocare contro il computer in maniera divertente Ovviamente era prevista la possibilità di giocare uno contro uno).
Fu di grande aiuto una visita a domicilio di Davide Dardari, lo sviluppatore della versione Amiga, accompagnato da Riccardo Arioti. Mi diede un po' di dritte su come lui aveva sviluppato l'intelligenza artificiale dei calciatori, molto semplice, ma funzionale. Quando la palla era libera, il calciatore comandato dal computer più vicino a essa tentava di prenderne possesso e allo cercava di fare quando la palla era al piede del giocatore umano.
Quando il computer aveva la palla si muoveva verso la porta avversaria, finché a una certa distanza da essa tentava di fare goal. Se il calciatore "umano" si avvicinava, tentava un dribbling (cambiando direzione di corsa) oppure tirava la palla a un altro calciatore. Molto semplice ma efficace.
Avrei voluto sviluppare qualcosa di più sofisticato, ma il tempo era meno che pochissimo e i suggerimenti di Dardari furono un grande regalo. Aggiunsi qualche finezza, come una spruzzata di random qui e là. per variare i comportamenti del computer e renderlo più imprevedibile, e un po' di "azioni speciali" come scivolata e rovesciata. Approfondii la strategia di scelta del tiro, per meglio determinare quando tentare un pallonetto, quando un dribbling e quando un tiro in porta.
Mi divertii poi a disegnare un po' di animazioni per i calciatori: esultanti dopo il goal, affranti dopo la rete subita, nelle varie acrobazie che potevano essere compiute, come la scivolata, la rovesciata, il colpo di testa. Gli omini disegnati tramite gli sprite multicolor avevano una definizione di 12x21 pixel (i pixel larghi però il doppio in orizzontale dato che erano multicolor), con quattro colori l'uno, di cui tre (compreso il "trasparente") comuni tra tutti gli sprite (quello che rimaneva libero lo usavo per la maglietta, che necessariamente doveva essere di colore diverso per le due squadre).
Non era semplice dare dinamismo ai fotogrammi che componevano le animazioni, ma ormai ero un esperto di grafica pixel e il risultato fu, permettete l'immodestia, decisamente buono. Anche considerando che il calcio, come tutti gli altri sport, mi aveva sempre disinteressato (a parte i leggendari mondiali del 1982).
Per l'immagine di copertina, disegnai il logo dei mondiali, cioè il pupazzetto chiamato "Ciao” (giuro: era il nome scelto per la mascotte ufficiale di Italia '90!) composto di blocchi bianchi rossi e verdi. Ma dopo un po', Carlà mi disse di toglierlo, dato che avrebbe violato il copyright. Lo sostituii con un calciatore nella stessa posizione, sempre realizzato usando un set di caratteri multicolor ridefiniti.
Usai il BASIC per programmare tutta la struttura dei menu e delle schermate di servizio del torneo, successi. vamente compilandolo con il "Blitz Compiler" una efficace utility che utilizzavo ormai dai tempi di Bocce.
Agli sgoccioli di una crisi di nervi per mancanza di sonno, riuscii a completare il gioco più o meno nei tempi. Dopo, l'Italvideo ne avviò la duplicazione per conto della Simulmondo e il gioco andò nei negozi. Ero riuscito nell'impresa. Stavolta non ci avevo messo un anno e mezzo a fare un gioco, bensì un mese e mezzo. E che gioco. Un calcio, zeppo di calciatori in movimento, mica un minigolf con una sola pallina!