Intervista ad uno dei Membri di ScummVM

 

 

Ringraziamo il grandissimo Glorifindel

per questa piacevole intervista a uno dei programmatori di ScummVm, l'unico italiano!

 

OGI: Ciao, per iniziare ti vuoi presentare?

R: Preferisco non dire il nome, comunque ho circa 30 anni e vivo nel nord Italia.

 

OGI: Passiamo subito a cose più serie: cosa ti ha spinto a farti da solo il reverse-engineering dei giochi della Dynabyte?

R: Avevo comprato Nippon Safes Inc. e Big Red Adventure (d’ora in poi NIS e BRA) in un mercatino 6 o 7 anni fa, dovrei aver speso intorno alle 20.000 o 30.000 lire.
Non riuscivo a far partire BRA con Windows, così mi sono messo a studiarlo (tra l'altro anche con DOSBox non funzionava), poi mi sono accorto che avrei fatto meglio a iniziare con NIS visto che BRA era troppo complicato. Tra l’altro, vuoi sapere il motivo per cui non riuscivo a farlo andare in DOSBox? Bastava che caricassi i driver del mouse…

 

OGI: Beh, è stata una fortuna per noi allora!

R:Bah, BRA non è supportato da ScummVM e non ti posso garantire che lo sarà in futuro ;-).

 

OGI: Ne approfitto per chiedere, attualmente come vedi lo stato del tuo engine?

Ho delle sensazioni contraddittorie al momento: dal punto di vista tecnico non manca granché, praticamente solo gli effetti sonori e qualche problema grafico di piccola entità, forse è solo un problema psicologico, una volta finito qualcosa dovrei dedicarmi ad altro…
Se volete farmi del male, testate NIS approfonditamente (quest'ultimo invito è ovviamente rivolto solo a chi possiede copie originali del gioco).
Aggiornamento: la versione dos e il demo per Amiga sono completabili, ora sto lavorando sulle altre 2 versioni: quella italiana e quella per l'estero. Non ci dovrebbero più essere grossi problemi.

OGI: (Si intende) Cosa vuoi dire? Dalla quantità di modifiche che applichi in continuazione sembra che tu stia facendo un ottimo lavoro, pensi che non raggiungerà mai la perfezione?

R:Al momento mi sto scontrando con alcuni difetti di progettazione dell'infrastruttura di Parallaction (attribuibili solamente a me stesso) che dovranno essere rimossi prima che NIS possa dichiararsi concluso.
Da quando il motore è stato inserito nella repository ho lavorato in questa direzione lasciando ovviamente i nodi più importanti alla fine, un po' più di riflessione all'inizio non avrebbe guastato :-).

 

OGI: Prima di iniziare a parlare di come funziona un progetto come quello che sta portando avanti volevo chiederti: come hai imparato la programmazione (il C++ nel caso dello ScummVM), hai frequentato scuole, lo fai di lavoro o sei autodidatta?

R:Un po' di infarinatura riguardo la programmazione e gli algoritmi viene da scuola a dall'università (un corso di informatica lo infilano dappertutto), per il resto l'interesse personale è la parte più importante nel mio caso. Ti assicuro che la cosa più difficile non è scrivere il codice, ma mantenerlo, e questo si impara solo dal contatto con delle persone di esperienza, come i ragazzi di ScummVM per esempio.

OGI: Ne deduco che lo ScummVM è stato il 1° progetto di questa portata a cui hai preso parte?

R:Direi proprio di sì! Beh, ho preso parte ad un progetto più grosso una volta, però si trattava di software commerciale e comunque mi occupavo di programmazione piuttosto raramente, diciamo che è la prima volta che mi ci metto con passione ;-).
 

OGI: È bello sentirtelo dire; prima hai nominato DOSBox, hai quindi una passione per i giochi (o le applicazioni) "retrò"?

R: Mi ricordo di alcuni giochi di una volta, anche se mi limito a farli partire e a guardare un po' mi vengono in mente un sacco di cose, ma non riesco davvero a rigiocarli. I giochi adventure sono tra i pochi a farsi rigiocare volentieri, anche se ho sempre preferito gli arcade, magari quelli non frenetici e con qualche elemento che faccia riflettere, tipo Flashback (non sto parlando di riflessioni profonde ;-) )
È un peccato che qualcuno abbia già fatto Reminiscence, avrei voluto farlo io, e hanno anche già rifatto Alone in the Dark, arrivo sempre tardi!

OGI: Tra l'altro sapevi che in passato proprio all'interno del progetto ScummVM si era parlato del possibile supporto di Another World (il prequel di Flashback)? il progetto venne poi abbandonato a causa del volere della maggior parte dei capi/utenti/fan di avere il supporto solo alle avventure "pure" senza contaminazioni arcade?

R: Nella repository di ScummVM esiste un branch che integra Another World tuttavia si tratta di un ramo che si può dichiarare defunto.

OGI: Meglio lasciarlo in quello stato, dopo tutta la confusione che si era venuta a creare (o al massimo creare un nuovo progetto). Se ti interessa il filone di Alone In The Dark c'è sempre "Time Gate - Il Segreto dei Templari" sul quale puoi lavorare...

R: Another World è già supportato dal progetto raw.

OGI:  ... che però è defunto anch'esso a causa del volere dell'autore originale di rilasciare una nuova versione del suddetto gioco per alcune console... Come hai conosciuto il progetto ScummVM? Tra i tuoi giochi preferiti c'erano anche gli adventure della Lucas e avevi problemi a farli partire?

R: Non mi ricordo come sono arrivato a ScummVM, forse via motore di ricerca, ma non me lo ricordo proprio.
Una volta trovato mi sono messo a guardare, più che a giocare, mi interessava un progetto in cui si potesse fare del sano RE (reverse engineering), in particolare di un software completo. Il fatto che si trattasse di giochi ha reso la cosa più interessante e per certi versi più semplice.

Sapevo come doveva essere strutturato un gioco, quindi sapevo cosa aspettarmi dal lavoro di analisi, quel che è sicuro è che ho scoperto che non tutti hanno una mente lineare e ordinata :-P

OGI: Quindi hai unito la tua voglia di RE al tuo problema con quel suddetto gioco e ti sei buttato?

R: Non ci avevo mai pensato in questi termini, però è giusto.

OGI: Ti hanno accettato subito? Qual è stato il primo impatto?

R:I progetti open source hanno attorno una comunità, per entrarci occorre partecipare al lavoro inizialmente mandando delle piccole patch, poi magari lavorando su bug segnalati da utenti, sulla documentazione e altro.
I responsabili quindi valutano di tanto in tanto se qualcuno è meritevole e gli offrono di partecipare se ne ha interesse. Questo non è comunque il mio caso: sono arrivato con Parallaction già in fase avanzata, e l'integrazione è avvenuta quasi subito previa un lavoro di adattamento del codice agli standard di ScummVM.

Ovviamente mi hanno prima chiesto se avevo veramente intenzione di continuare a sviluppare il lavoro. La cosa peggiore che può capitare ad un progetto open source così vasto è che ci siano porzioni di codice che nessuno mantiene, in quel caso, una volta apportate alcune modifiche, può succedere che le cose non funzionino più bene e purtroppo non è possibile lasciar perdere un pezzo di un progetto, perché ci saranno senz'altro utenti a cui serve, insomma, prevenire è meglio di curare.

OGI: Parole sante! Per gli utenti meno "avvezzi" (come il sottoscritto) cosa intendi con "adattamento del codice", forse inserire commenti o seguire delle linee guida di formattazione?

R:Più o meno la seconda cosa che hai detto, ci sono convenzioni sui nomi dei file, sulla disposizione del codice, sulla formattazione. Ci sono delle pagine wiki a riguardo.

OGI: Per curiosità, hai mai contattato i programmatori originali della Dynabyte, oggi Virtual Edge (www.virtualedge.it) per qualche "dritta" o per il codice sorgente (mi sa di no sennò dove stava il divertimento)?

R: Lavorare su assembly non è esattamente un divertimento ;-) e credo che i programmatori del gioco adesso facciano tutt'altro.
 

OGI: Beh, da quello che leggo sono sempre nel ramo videogiochi/multimedia, non si potrebbe provare?

R:I Virtual Edge non hanno mai pubblicato un videogioco e inoltre nessuno degli sviluppatori che lavoravano in Dynabyte lavora per loro.

OGI: Ah, peccato... torniamo ai tuoi compiti nello ScummVM, qual è il tuo rapporto con i capi-progetto? Ti hanno dato scadenze etc. etc.?

R:No, non è come un lavoro ordinario (per fortuna): capo-progetto non è poi la parola giusta, diciamo che sono loro a governare la direzione del progetto, ma non sono capi nel senso gerarchico del termine. La cosa è vera soprattutto per un progetto 'disaggregato' come ScummVM dove loro dal mio punto di vista sono un ottimo riferimento per capire come dovrebbe essere usata l'infrastruttura di ScummVM.
 

OGI: (Potresti spiegare "disaggregato")

R: Disaggregato non è la parola che volevo usare, diciamo che ScummVM non è un monolite è composto da varie componenti praticamente ortogonali, pertanto lo sviluppo di queste componenti può essere portato avanti in modo indipendente (l'ortogonalità del sistema è un merito notevole dei nostri leader)

OGI: La prossima release di questa macchina virtuale (la 0.10.0 prevista per maggio/giugno) su carta dovrebbe essere "una bomba": tantissimi nuovi giochi compatibili (Touché, Future Wars, Gobliins 2 e Goblins 3, Bargon Attack, Ween The Prophecy, Lure Of The Temptress), pensi che anche NSI sarà supportato?

R: NSI dovrebbe essere annunciato abbastanza presto e penso che dovrebbe essere incluso nella prossima release, che comunque non sarà prima della fine di maggio. La compatibilità dei giochi che elenchi deve ancora essere verificata accuratamente, pertanto non ti so dire se tutti saranno inclusi; sarei piuttosto scettico su Lure. Per quanto riguarda lo sviluppo di BRA, bisogna dire che ogni volta che si affronta un problema nuovo sorgono delle difficoltà di ordine psicologico (chi me lo fa fare?). Visto che sono un esperto, a me il problema sorge prima di finire il lavoro precedente a BRA :-), in ogni caso, si tratta di due giochi dalla struttura simile, quindi non è così sbagliato sperare.
Aggiornamento: NSI è stato confermato tra i giochi supportati!

OGI: Proprio su questo volevo riflettere: quando finirai l'engine NSI (che ormai come hai detto è agli sgoccioli) hai intenzione di prendere un periodo di pausa (ormai è estate) o di gettarti subito su BRA (se vedi che sono sufficientemente simili)?

R: Non ho problemi a lavorare d'estate, tuttavia un po' di cambiamento serve. Tieni conto che già passare dallo scrivere codice a studiare un po' di assembly sarebbe interessante, in ogni caso, vedremo quello che succederà.
Quindi, a meno che non ci siano miracoli, BRA non sarà giocabile prima dell'autunno (che in ogni caso è settembre..., quindi non disperare)
 

OGI: Beh, sappi che tutti qui facciamo il tifo per te! Comunque hai mai pensato che sei l'UNICO sviluppatore italiano di questo progetto? Secondo te c'è un motivo?

R:Non saprei, c'è anche un solo coreano e un solo ucraino.
In realtà c'è un altro italiano tra la lista dei partecipanti.
 

OGI: ???

R: www.scummvm.org/credits.php nell’area Code Contributions troverai Paolo Costabel, che tra l'altro è anche il programmatore originale di NSI per Amiga.

OGI: Vi siete mai parlati?

R: Paolo vive in California, e purtroppo non è in grado di fornire il sorgente dei giochi, sarebbe tutto più facile.

OGI: Beh, qualche aiutino magari può dartelo?

R: Dopo 15 anni? Se mi facessero vedere oggi il codice assembly della mia implementazione di Parallaction ci metterei delle settimane per capirlo…

OGI: Urgh, hai ragione... Lasciamo perdere.... Se posso chiederlo, quali sono i tuoi ferri del mestiere? Che programmi, OS, etc usi?

R: Bisogna distinguere due fasi: per l'analisi l'unico tool obbligatorio è IDA, la versione gratuita è completa (= ricca di funzionalità) e sufficiente a praticamente ogni scopo che io possa immaginare; per lo sviluppo mi alterno su una macchina Linux e una Windows, se mai ti passasse per la testa di compilare ScummVM ti consiglio Linux, tutto il sistema di build è costruito per l'utility make, quindi risulta abbastanza semplice.

OGI: Eh eh, le mie conoscenze in ambito di programmazione per ora sono ristrette alle basi del Java, che sto studiando all'università, grazie comunque per il consiglio! All'utente con delle conoscenze nel C++ (e nella lingua inglese) potresti descrivere le fasi (basilari) del RE?

R:Il motivo che spinge a fare RE ti deve anche guidare in come lo si fa: se l'obiettivo è una particolare funzione occorre prima individuarla, se l'obiettivo è identificare le strutture dati occorre capire dove vengono usate e se l'obiettivo è una completa analisi del codice occorre capire qual è il punto di partenza più conveniente (tanto il codice lo si deve comunque studiare tutto). Le informazioni che si ottengono possono servire per scrivere del codice a livello più alto, che abbia lo stesso comportamento ma che sia mantenibile più facilmente.
Ognuno ha la sua definizione di RE, si potrebbe dire che non è diverso da riscrivere un concerto di Bach potendo sentire solo delle note a caso o dal fare il remake di un film avendo solo il negativo dell'originale.

OGI: In generale comunque oltre alle competenze sopra elencate cosa consigli a chi vorrebbe lavorare sulla propria avventura preferita per renderla compatibile con lo ScummVM?

R: Intanto occorre conoscere l'assembly della macchina su cui girava il gioco, occorre poi avere una certa esperienza di programmazione per poter riconoscere le strutture a partire dai loro frammenti (insomma, qualche anno di sano RE alle spalle, uno almeno), poi occorre che l'avventura prescelta non sia troppo hardcoded, altrimenti non ce la si fa proprio ed infine tanto tempo a disposizione.

OGI: Ottimo, passiamo a una domanda meno tecnica per i lettori: tu vedi il tuo lavoro come una sfida contro te stesso o lo fai pensando (anche) alla gioia degli avventurieri che potranno (ri)gustarsi per esempio NSI?

R:Ho scoperto che NSI doveva essere un buon gioco per Amiga, quindi sono contento per chi ci potrà giocare dopo 10 o 15 anni. Credo che il motivo principale sia capire come funziona un gioco adventure, anche se quello che ho capito in realtà è come lo avevano inteso quelli di Dynabyte..
È chiaro che è comunque una soddisfazione personale.

OGI: Piccola curiosità del tutto personale: che rapporto hai con Tequila & Boom Boom? E’ un gioco con protagonisti gli alter ego di Bud Spencer e Terence Hill parecchio buggato e abbastanza “underdog” che dovrebbe condividere porzioni di codice con NSI e BRA.

R:Ho visto alcuni screenshot e mi sento di dire che potrebbe essere lo stesso motore, anche perché non avrebbe senso partire da zero, no? Ho letto che ha elementi arcade al suo interno, ma Parallaction è un motore a livello abbastanza basso, pertanto non vincola troppo gli sviluppatori.

 

OGI: Se vuoi lanciare un appello ai lettori che vorrebbero seguire il tuo esempio fallo pure!

R:Come dicevo prima serve dedizione, se qualcuno ce l'ha verrà fuori da sola. Lavorare su un software completo è diverso dallo studiare dove sono le stringhe, comunque, se qualcuno dovesse essere interessato non abbia paura, basta scaricare il codice dalla repository e lavorare su qualche bug tra quelli segnalati nel tracker, il team è a disposizione per chiarimenti.

OGI: Ti ringrazio moltissimo per tutto il tempo che mi hai concesso, è stato un onore intervistarti!

R: E meno male che sono nel team da qualche mese…

OGI: Beh, sei italiano!

R: :-)

OGI: Grazie ancora e a risentirci, in caso di altre domande (sempre che tu non ti sia stufato)!

R: Magari quando sarà finito BRA ;-)

 

Link utili

 

Invia nuovo commento
Il contenuto di questo campo è privato e non verrà mostrato pubblicamente.
CAPTCHA
Questa domanda serve a verificare che il form non venga inviato da procedure automatizzate
  _____   _  _      __   _    
|___ | | || | / _| | | __
/ / | || |_ | |_ | |/ /
/ / |__ _| | _| | <
/_/ |_| |_| |_|\_\
Enter the code depicted in ASCII art style.