Appunti e memorie di Ivan Venturi

Fare Videogiochi

 

Scritto daadmin il 13/01/2010 in out of memory, simulmondo reunion con Nessun commento


Come già scritto, da ragazzino (anni ’80) iniziai a programmare quasi completamente da autodidatta. Il ‘metodo’ che usavo era praticamente nullo (‘dog-dick-way’), cioè programmavo per fare quello che mi passava per la testa in quel momento senza preoccuparmi tanto del come e del perchè.

Questo naturalmente generava qualche piccolissimo problema.

Sul C64, come su tutti gli altri computer a 8 bit, lavorando in basic, come facevo io agli inizi, si avevano a disposizione 38k circa. Quindi un limite di memoria entro la quale contenere la propria opera.
Quindi, mentre scrivevo la già nominata ‘Anfora del Dio Stellare’, scrivevo scrivevo, scrivevo, poi provavo, provavo, provavo (cioè me la giocavo mentre la programmavo).
Però spesso provavo l’avventura non dall’inizio, ma dal punto sul quale stavo lavorando il quel momento. Quindi non ‘RUN’, cioè esegui tutta l’applicazione, bensì ‘RUN xxxx’ dove xxxx era il punto del codice che mi consentiva di eseguire solo l’ultimo pezzo.
Ebbravo frescone!, mi direi adesso.

Mentre programmavo, tenevo sempre sott’occhio la memoria libera, che si riempiva man mano che si scriveva codice basic.
Ma (e qui cade il frescone che ero) la memoria veniva occupata anche dalle variabili numeriche e dalle stringhe che via via si definivano. Insomma: l’occupazione di memoria era ben oltre quella che pensavo di vedere col mio semplice ‘PRINT MEMORY$’ (se non erro l’istruzione, questo era il modo col basic C64 di stampare a video la memoria rimasta).
Infatti, ormai verso la fine del lavoro, decisi di rifarmi una bella partitona completa a quello che era diventato un adventure di ampie dimensioni.
Arrivo a metà circa delle locazioni e della storia e… SORPRESA!!!!

OUT OF MEMORY IN xxxx

ARGH! Disastro! Tragedia!
Non è possibile, signor giudice, non sono stato io, non è colpa mia!
E invece è proprio colpa tua, caro il mio frescone.

Infatti, con tutte le variabili e le stringhe che usavo nella solita modalità dog-dick-way, la memoria era intasata ben oltre ciò che pensavo sarebbe dovuta essere.
Avrei dovuto tagliare via parti significative di codice per riuscire a far funzionare tutto nuovamente.
TRAGEDIA!

Quando si ‘crea’ qualcosa, e questo qualcosa prende corpo, diventa uno scritto, o peggio, un pezzo di codice e un brano interattivo di un videogioco e, peggio ancora, questo brano ci piace moltissimo ed è entrato nel nostro cuoricino di sviluppatori di videogiochi, pensare di ‘tagliarlo’ diventa davvero traumatico.
Come? Devo segare via tutto il ramo di trama del lago incantato con l’enigma del mostro coi tentacoli? Devo eliminare il labirinto generato casualmente nella caverna per il quale ho ingenuamente usato un array di variabili di dimensioni mostruose?
Insomma: fu uno di quei traumi che mi resero un programmatore più maturo. Non che ci volesse molto.

Cominciai togliendo le tantissime righe di commento, i vari REMarks. Ne avevo usati uno sproposito: righe di codice tipo

15000 REM *********************** LOCAZIONE 50 ENTRATA CASTELLO ********

…righe di codice che mi consentivano di capirci qualcosa, in quel marasma logico (per modo di dire) che era il programma che avevo scritto.
Apparvero un bel po’ di K liberi. Ma non bastava ancora.

Iniziai ad operare tagli delle parti alle quali ero meno affezionato, tipo il labirinto generato casualmente con l’array gigante che citavo prima. Poi ripulii tutto il codice, ripassandomelo dall’inizio alla fine di tutte le ‘pezze’ e i rimasugli di codice inutilizzati che avevo lasciato praticamente dappertutto. Eliminai tutte le variabili e stringhe inutili, ottimizzando l’impossibile.
Ottimizzare: al tempo questa parola non si usava ancora. Almeno, io non sapevo manco cosa significasse (e mi pare evidente, visto come lavoravo).
Infine, facendo le prime prove col linguaggio macchina, cominciai a usare quei 4k di memoria ‘alta’, tra $C000 e $D000, inutilizzati dal basic ma pronti all’uso senza particolari difficoltà.
Ecco quindi che spostai lassù moltissimi testi e definizioni di dati (quelle lunghissime liste di DATA, che contribuivano moltissimo a appesantire la memoria).

Insomma: andare fuori di memoria mi mandò davvero fuori di testa. Imparai la lezione, e già dall’adventure successivo (FUGA DA KREON 3) non ebbi più guai simili (ne ebbi tanti altri, di tipo completamente nuovi!).

Saludos!

- – - – -
PS: il 20 marzo 2010 ore 15:00, presso l’Archivio Videoludico di Bologna, via Azzogardino 65/B, si terrà la Reunion Simulmondo!
Keep in touch, ne riparlerò meglio da fine mese in poi.

Bookmark and Share

Nel 1987 ho fatto il primo videogioco della Simulmondo, prima software house italiana. Da allora ne ho fatti altre migliaia.
Dalla fine del millennio scorso faccio videogiochi educativi ed ora anche simulatori di guida e avventure di inquisitori medievali.
Poi nel 2003 ho fondato Koala Games, ora diventatata TIconBLU. E mi occupo di un bel po' di altre cose videoludiche varie.
E...VIVA I VIDEOGIOCHI ITALIANI!