EvolutionNG: la storia.
Primi passi
L'idea di creare un simile programma nasce verso Novembre del 1999, quando decisi di intraprendere la catalogazione di tutti i piu' importanti videogames per computer usciti finora. Decisi allora di affidarmi alle riviste Zzap! (che fino al 1993 ha recensito i videogiochi per i computer a 8 bit, in particolare quelli per Commodore 64 e Spectrum) e The Games Machine (che si e' dapprima occupata dei videogiochi per i computer a 16 bit, e in seguito in generale di tutti quelli per personal computer) in modo da avere gia' a disposizione una enorme mole di dati a cui fare riferimento.
Dunque, il mio progetto diventava quello di catalogare tutti i videogiochi recensiti da queste 2 riviste.
EvolutionCG
Per la catalogazione, decisi subito di non utilizzare database classici (ad ex. MDB di Access), ma di progettarne io stesso un modello pratico e funzionale, per gestire il quale occorreva inoltre un programma apposito versatile, aggiornabile a seconda delle esigenze e, soprattutto, veloce.
Dopo alcune settimane di lavoro, prima 'sulla carta' e di seguito con Visual Basic, il primo modello di database era pronto, e con esso una semplice 'GUI' per gestirlo. Chiamai il programma (nel suo complesso) 'Evolution Computer Games, o in breve 'EvolutionCG' per il fatto che doveva servire unicamente a catalogare videogames per computer (o perlomeno questa era l'idea iniziale).
EvolutionCG gestiva un database ASCII (cioe' la lista dei videogiochi non era altro che un normale file ASCII, consultabile con qualsiasi editor di testo) estremamente semplice e, cosa molto importante, permetteva di creare delle liste particolari (utilizzando appositi filtri) di vario tipo.
EvolutionNG
Lo sviluppo di EvolutionCG ando' avanti regolarmente fino a Dicembre '99 inoltrato, quando mi resi conto che il programma era limitato sotto diversi punti: in primis, era stato progettato per accogliere solo i videogiochi recensiti da due riviste, e dunque non permetteva di accogliere giochi non recensiti da alcuna rivista o giochi recensiti da altre riviste.
Un altro difetto di EvolutionCG, dovuto al modo in cui era strutturato il database, stava nel fatto che esso pur considerando giustamente ogni versione di un videogioco come un programma a se, con la sua storia, la sua data di uscita, i suoi autori ecc. non raggruppava tuttavia tutte le diverse versioni sotto un unico nome.
Cercai di rimediare al problema con la versione 3.0, ma mi resi subito conto che occorreva un nuovo programma, piu' versatile e possibilmente altrettanto veloce (EvolutionCG era una vera scheggia nella consultazione dei dati, in quanto tutti i dati venivano caricati in memoria ed inseriti in appositi List Box).
Passai diversi giorni a tracciare schizzi su carta e a decidere quale sarebbe stato il design del nuovo programma, e ce ne vollero molti altri per sviluppare il modello del nuovo database, che doveva essere strutturato in modo tale da:
1) accogliere piu' versioni dello stesso videogioco;
2) accogliere piu' recensioni di ciascuna versione di ciascun gioco.
Dopo momenti di crisi ed improvvise illuminazioni, arrivai a sviluppare un modello di database che, almeno sulla carta, sembrava funzionare davvero bene: nel modello, un singolo file (ASCII) principale contenente tutti i dati relativi ai videogiochi era collegato a tanti file (ASCII) rivista quante fossero state le riviste coinvolte. In ogni file-rivista erano contenuti tutti i dati relativi alle recensioni della rivista. Ad ex., un database dei videogiochi recensiti da Zzap! e da TGM risultava costituito dal file principale collegato a 2 file rivista, contenenti tutte le loro recensioni.
Forte della precedente esperienza (e dei precedenti errori) iniziai da zero la programmazione del nuovo software, che decisi di chiamare EvolutionNG (Evolution Next Generation). Da notare come nel nome non figurasse piu' la parola 'computer', a significare che il programma poteva adesso accogliere anche videogiochi per console, coin-op, giochi elettronici, ecc.
La mia preoccupazione principale era quella che il nuovo 'motore' per la gestione del database non fosse in grado di gestire velocemente il database stesso, e che venissero eccessivamente rallentate le operazioni di consultazione e di creazione delle liste particolari. Questa preoccupazione era dettata dal fatto che il nuovo modello di database non consentiva piu' di utilizzare semplici List Box (e quindi non consentiva piu' di caricare l'intero database in memoria), ma presupponeva che ogni gioco venisse richiamato in real time dal programma, al momento del bisogno, e questo poteva rallentare eccessivamente il programma stesso.
La resa dei conti venne quando convertii il vecchio database di EvolutionCG nel nuovo formato, in modo da poter essere 'visto' e accettato da EvolutionNG. Si trattava di 1700 videogiochi, ciascuno con la propria storia, ed era un ottimo banco di prova per EvolutionNG.
Per fortuna il programma si e' comportato bene, e la consultazione e' risultata sufficientemente rapida.
EvolutionNG 0.9.8
Tutto procedette per il meglio fino a Maggio del 2000, quando il programma (giunto oramai alla versione 0.9.7.3) inizio' a dare i primi segni di 'cedimento' con database via via piu' 'corposi'. I problemi principali erano essenzialmente due: la consultazione dei titoli posti alla fine del database stava diventando eccessivamente lenta, cosi' come la loro modifica, e la procedura di creazione di una lista particolare impiegava in alcuni casi un tempo spropositato.
Urgeva una modifica radicale al modello del database. Dopo diverso tempo passato a studiare la soluzione migliore, decisi di accorpare i file rivista al file principale, e di spezzettare il file principale in tanti blocchi: in questo modo l'ultimo blocco del database poteva essere consultato (e modificato) con la stessa velocita' del primo!
Dopo tre mesi di lavoro il 'nuovo' EvolutionNG era pronto: dovetti riprogrammare praticamente ogni cosa, ma alla fine il risultato mi ricompenso' abbondantemente delle fatiche. Inoltre, a mano a mano che la programmazione procedeva ne approfittai per aggiungere al programma nuove opzioni e per potenziare quelle gia' presenti.
The End?
Il resto e' storia recente: il grosso (e cioe' la gestione del database) e' finalmente completato, e attualmente mi sto' dedicando a tutte le opzioni di 'contorno' e di 'abbellimento' del programma.
I miei ringraziamenti vanno a tutti coloro i quali mi hanno aiutato ed incoraggiato nello sviluppo del software.
Restate sintonizzati sul sito ufficiale di EvolutionNG ( web.tiscalinet.it/bozan ) per gli aggiornamenti del programma, e non fatevi problemi a comunicarmi i vostri suggerimenti e le vostre (spero costruttive) critiche.
P.S. Parallelamente allo sviluppo di EvolutionNG, procede il progetto di catalogazione dei videogames piu' significativi (e non solo) usciti finora: il progetto si chiama 'All Stars' e lo potete trovare sullo stesso sito ufficiale di EvolutionNG ( web.tiscalinet.it/bozan ).