95

ScummVM, non chiamatela solo avventura

Parliamo del progetto ScummVM, un software utilizzato per recuperare le celebri avventure di LucasArts, ma non solo!

SPECIALE di Damiano Gerli   —   16/02/2022

Per l'industria dei videogiochi l'argomento della preservazione non è mai stato così pressante, perlomeno non fino a una decina di anni orsono. Negli anni duemila sono uscite alcune compilation, per Atari o Intellivision, ma -in generale- la possibilità di giocare i vecchi classici su una console o piattaforma non più supportata, non era qualcosa che sembrava interessare nemmeno la maggior parte dei videogiocatori. Eppure, lo zoccolo duro di nostalgici non demordeva facilmente, tanto che, nei tardi anni Novanta, cominciò a sbocciare una folta scena di emulazione. Progetti come MAME (Arcade), KGEN (Mega Drive) e Snes9x (Super Nintendo) realizzavano il sogno di poter giocare di nuovo a vecchi classici in maniera abbastanza fedele.

E per i titoli DOS? Purtroppo non c'era molto al di fuori di complesse macchine virtuali. Il problema emerse fuori prepotentemente nel momento in cui Windows abbandonò del tutto l'architettura DOS e giocare a quei giochi sviluppati tra gli anni '80 e '90 divenne sempre più complicato.

Fu proprio all'inizio del nuovo millennio che alcuni fan dei giochi di avventura realizzarono che era il momento di superare questi ostacoli tecnici, così da poter giocare di nuovo, almeno, ai classici del genere. E nessun titolo era più essenziale delle prime avventura punta e clicca della LucasArts! Da lì partirono i due autori originali di ScummVM, Vincent Hamm e Ludvig Strigeus, quest'ultimo passato alla storia, poi, come sviluppatore principale di Spotify.

Fin da subito, ScummVM non fu pensato per emulare un software specifico, bensì era basato sull'idea di riscrivere l'eseguibile originale in C++, usando il codice originale del gioco o, se non disponibile, tecniche di reverse engineering per estrarre il codice. Usando il nuovo eseguibile messo a disposizione da ScummVM, tutti gli altri file del gioco (grafica, audio, script, ecc) rimangono necessari per giocare. Mantenendo i vecchi file intatti e modificando l'eseguibile si possono aggiungere nuove caratteristiche, nonché convertire ScummVM su diverse piattaforme, tra cui quelle mobile, aggiungendo filtri grafici e nuove funzionalità come salvataggi e supporto per il mouse.

Umili origini

Uno dei primi screenshot in rete della seconda versione di ScummVM
Uno dei primi screenshot in rete della seconda versione di ScummVM

Nel 2001 Vincent Hamm ricorda che aveva iniziato a sperimentare con l'interfaccia SCUMM - il linguaggio sviluppato da Ron Gilbert per le prime avventure Lucasarts - da alcuni mesi. "Altre persone avevano già provato a smanettare sui titoli, ma nessuno si era mai messo a lavorare proprio sullo scripting di SCUMM. Così iniziai proprio dalle origini, con Maniac Mansion e Zak [McKracken]. Quando venne il momento di aggiungere gli sprite, cercando online trovai un documento tecnico su Monkey Island II scritto da Ludvig [Strigeus]. Gli mandai una mail e mi rispose che stava lavorando su un progetto simile al mio, ma si trovava già in uno stadio più avanzato. Così lasciai perdere il mio lavoro e iniziai a collaborare sul suo progetto che, se ricordo bene, era ancora senza nome".

I due iniziarono a collaborare su diversi titoli Lucasarts ma, dopo aver finito Monkey Island 2, incontrarono un grosso ostacolo. "Il sistema sonoro di Sam & Max Hit the Road e parecchio dello script era radicalmente diverso dai giochi precedenti" continua Hamm. "Mi ricordo che questo successe proprio dopo che Ludvig, dopo esser riuscito a emulare sia Day of the Tentacle che Monkey Island 2, stava iniziando a perdere interesse nel progetto. Lo trovavo ancora nella chat della community, ma contribuiva sempre meno".

Una interfaccia grafica classica da 'Lucasarts' in una release successiva
Una interfaccia grafica classica da "Lucasarts" in una release successiva

L'abbandono di Strigeus non causò comunque uno stop del progetto, continua Vincent. "Grazie ai primi traguardi raggiunti dal progetto, nel 2002, diversi collaboratori si erano uniti. Io ero ancora al lavoro sullo script dello SCUMM, focalizzandomi sul cercare di rendere compatibili alcuni dei titoli usciti successivamente (Full Throttle e The Dig), nonché alcuni di quelli più anziani (Loom)."

Anche Hamm, nei mesi successivi, iniziò a ridurre il numero di ore sul progetto, ma - a differenza di Ludvig - è rimasto sempre molto legato alla comunità. "Penso ci sia un importante aspetto educativo di ScummVM, per la sua natura open source: chiunque può scoprire com'erano fatti questi giochi e il loro funzionamento. Nonché l'aspetto di preservazione del software, si trattava di giochi quasi impossibili da far girare senza problemi. La compatibilità era il mio primo obiettivo quando ho iniziato a collaborare su ScummVM. Certo, usare le macchine virtuali era comunque possibile, ma ritengo sia molto più interessante riuscire a far girare direttamente i giochi, senza la necessità di emulare un intero sistema operativo!"

ScummVM prende quota

Le (spesso odiate) sequenze arcade di Full Throttle non erano originalmente implementate in ScummVM
Le (spesso odiate) sequenze arcade di Full Throttle non erano originalmente implementate in ScummVM

Con la continuazione del progetto, altre persone entrano, sostituendosi ai due lead originali, gradualmente usciti di scena. Eugene Sandulenko sta lavorando come lead manager per ScummVM senza pausa da quasi 20 anni. "Era ottobre del 2003, avevo comprato una copia di Full Throttle in russo , torno a casa e non riesco a farlo partire. Faccio una veloce ricerca online, installo ScummVM, faccio partire il gioco e... crasha immediatamente!" ricorda.

"A quanto pare, c'era un problema con lo script e i caratteri del gioco, così feci una modifica veloce e la mandai al progetto per l'approvazione. Dopo aver giocato qualche ora, arrivo al momento in cui bisognava saltare la gola e compare un messaggio "adesso puoi saltare la gola". Praticamente l'intera sequenza dei combattimenti arcade sulla moto era saltata del tutto, non era implementata nel codice di ScummVM. Andai sulla chat e mi fornirono una spiegazione: quella parte usava un motore specifico, diverso da SCUMM. Siccome all'epoca avevo già diversi anni di esperienza con il reverse engineering, mi sono proposto per risolvere il problema. Per tutta risposta, ho ricevuto una bella pacca sulla spalla e tanti auguri di buona fortuna. Se solo avessi saputo in che guaio mi stavo cacciando!" continua Eugene ridendo.

Infatti, il lavoro sull'INSANE engine, quello utilizzato da Full Throttle per le sequenze arcade, finì per portare via più di quattro mesi. Eugene continua: "INSANE (dall'inglese "folle") è un nome davvero appropriato! Alla fine, il team all'epoca si stufò delle mie continue patch da testare e documentare e così, m'invitarono a far parte del progetto in pianta stabile." Quando chiedo il motivo per aver deciso di continuare a lavorare sul progetto, dopo aver terminato Full Throttle, Sandulenko menziona proprio la sua passione per il reverse engineering. "Ci si sente come dopo aver finito un difficilissimo puzzle da migliaia di pezzi. La soddisfazione impagabile di quando capisci come funzionano le migliaia di righe di un codice non commentate, le variabili e la logica dietro un motore. Oggi con i disassembler il lavoro è notevolmente facilitato, ma all'epoca, dovevi sporcarti le mani con l'assembler."

Le bellezze del reverse engineering

Come inizia il lavoro su un gioco? Tutto dipende dalla ferrea volontà di una persona, come spiega Eugene, "abbiamo bisogno di uno sviluppatore che abbia una visione chiara, nonché abbastanza tempo e capacità. Insomma un appassionato dell'idea di rendere un titolo compatibile. Qualche volta si riesce a mettersi in contatto con gli sviluppatori originali, così da avere qualche minima idea o consiglio ma, gran parte delle volte, la sfida è tra te e un file eseguibile. Poche volte siamo riusciti a lavorare con il codice originale a disposizione. Appena il responsabile pensa di essere arrivato a un lavoro quasi completo, lo fa sapere al resto del team. Noi rivediamo il nuovo motore, lo modifichiamo così da avvicinarlo ai nostri standard e, subito dopo, lo integriamo nel progetto. Successivamente, il lavoro su quel gioco continua ma a livello di team. Sfortunatamente, a volte, la Vita Reale© finisce per avere la meglio e i programmatori non hanno più tempo e/o voglia di continuare. Questo comporta l'avere un motore incompleto nel nostro database: ultimamente ne abbiamo giusto tolti un paio fermi da anni."

Nel corso del tempo, con il progetto sempre più noto, diverse persone hanno provato a trarne profitto: numerosi sono stati i casi di ScummVM a pagamento su Steam, Google Play Store e App Store. Questo non è permesso dalla licenza GNU V2 del progetto, che fa riferimento all'eseguibile modificato del gioco stesso. L'originale detentore della licenza del gioco emulato può utilizzare ScummVM per rivendere il gioco, ma deve comunque mettere a disposizione dell'utente la licenza GPL insieme al copyright di ScummVM, oltre a dover specificare eventuali modifiche del codice. Sandulenko rabbiosamente ricorda uno degli ultimi casi: "qualcuno è riuscito perfino a portare a termine con successo un Kickstarter, utilizzando la versione di ScummVM per Dreamcast e il gioco che rendiamo disponibile gratuitamente sul nostro sito. Praticamente, ha tirato su 4000 euro vendendo un bel CD masterizzato con materiali già disponibili gratuitamente!"

Le gioie del reverse engineering

Il team di ScummVM ama i pesci di aprile, in questo caso avevano annunciato di aver implementato gli achievement nel programma
Il team di ScummVM ama i pesci di aprile, in questo caso avevano annunciato di aver implementato gli achievement nel programma

I vantaggi del riscrivere il file eseguibile, invece di emulare, diventano chiari analizzando gli ultimi titoli supportati dal progetto. Ne parla Arnaud Boutonne, uno dei principali leader del progetto, che ha iniziato a lavorare su ScummVM nel 2009 per supportare uno dei suoi giochi preferiti, Fascination. "Fu il mio primo progetto, lasciato in eredità dallo sviluppatore precedente, che si era stufato di lavorarci." Di recente, Boutonne, con l'aiuto dello sviluppatore originale, è riuscito a introdurre il supporto per la trilogia di avventure grafiche Hugo. La versione, a pagamento, è stata resa disponibile su GoG. Arnaud, nonostante non avesse mai giocato a nessuno dei titoli della serie, la ricorda come un'esperienza interessante. Analizzare i titoli e riscriverli ha reso possibile, racconta, "la sistemazione di alcuni bug nel codice, nonché aggiungere un paio di stanze rimaste inutilizzate, oltre a documentare Easter Egg che nessuno aveva mai visto".

Boutonne continua "succede spesso che riusciamo a eliminare bug, a volte anche importanti come successo per Nightlong: Union City Conspiracy (gioco dell'Italiana Trecision ndr). Aggiungere cutscene è abbastanza raro, visto che gran parte di questi giochi erano distribuiti su floppy e i publisher volevano risparmiare quanto più spazio possibile, così da avere costi di produzione più bassi. Un ottimo esempio di quel che riusciamo, a volte, a recuperare è stato con Blade Runner. Tutto il contenuto che era stato tagliato era ancora presente sui CD, si trattava solo di renderlo accessibile. La lista di bug sistemati, audio recuperati e testi inediti arriva quasi a tre pagine: la versione ScummVM di Blade Runner è quasi una vera e proprio Director's Cut!".

All'inizio il team stava, in realtà, lavorando con i Nightdive Studio su un'edizione rimasterizzata ma, la licenza GNL di ScummVM non ha permesso di continuare la collaborazione. Il CEO di Nightdive, Steven Kick spiega, "purtroppo abbiamo dovuto interrompere la collaborazione e, per quanto riguarda il nostro Blade Runner, ricominciare da zero, il che ha portato ad alcuni forti ritardi dal nostro lato. Massimo rispetto per il gran lavoro fatto da ScummVM comunque!".

Il futuro non è solo punta e clicca

Il team di ScummVM ama i pesci di aprile, in questo caso fingevano di aver reso compatibile Gabriel Knight con il Kinect di Xbox.
Il team di ScummVM ama i pesci di aprile, in questo caso fingevano di aver reso compatibile Gabriel Knight con il Kinect di Xbox.

Per quanto originalmente solo un progetto rivolto all'emulazione delle avventure punta e clicca, la portata del progetto negli ultimi anni è cambiata. Eugene menziona il suo desiderio di avere degli sviluppatori dedicati per mobile, così da sistemare quelle versioni e, poi, che al team piacerebbe iniziare a lavorare su alcuni RPG. Ma non finisce lì, come spiega Arnaud Boutonne: "adesso che ScummVM supporta Macromedia Director, siamo diventati qualcosa di più che una comoda piattaforma per giocare a vecchie avventure su sistemi moderni. Director era utilizzato da migliaia di titoli negli anni '90, quindi, oltre ai giochi, adesso siamo anche in grado di emulare software."

Il co-lead Paul Gilbert parla della nuova portata del progetto come qualcosa che gli sta a cuore: "con la recente aggiunta dell'interactive fiction, ScummVM rappresenta una sorta di punto focale per supportare, potenzialmente, tutti i giochi di narrativa in futuro. D'altronde supportiamo anche diversi titoli delle serie Might & Magic e Ultima... Mi piacerebbe arrivare a supportare tutti i titoli di quelle serie, più magari anche l'intera serie Wizardry e, perché no, anche alcuni dei primi Final Fantasy."

Quindi da ScummVM, il progetto sta diventando una piattaforma emulativa di qualsiasi motore grafico antico? Eugene m'interrompe "non ancora e, probabilmente, mai. Ammetto, però, che stiamo pensando di trasformare ScummVM in una sorta di libreria, che possa supportare qualsiasi gioco in futuro, ma, per ora, non abbiamo fatto grossi sforzi in quella direzione."

La preservazione tra gioie e dolori

Screenshot dalla trilogia di avventure Hugo.
Screenshot dalla trilogia di avventure Hugo.

Riguardo al futuro della preservazione, molti del team ScummVM commentano preoccupati su come l'industria non sembra aver ancora imparato molto. "Negli anni '80, almeno, salvavi il codice sorgente sui floppy o sui dischi rigidi e - come spesso succedeva - scoprivi anni dopo che erano diventati illeggibili" commenta Eugene, "ma oggi, che scusa ci sarebbe per non fare attenzione alla preservazione del codice sorgente?"

La documentazione è argomento connesso alla preservazione, visto che senza traccia dei cambiamenti avvenuti nel codice, ricostruire la storia da una versione all'altra diventa quasi impossibile. Lothar Serra Mari, su ScummVM dal 2014, ha avuto come compito principale tradurre l'interfaccia e curare la documentazione, diventando di recente co-lead. Lothar menziona la crescita costante del progetto come stimolante, così anche la sua passione per tenere l'esperienza videoludica quanto più possibile all'originale.

"Qualche mese fa, ho aggiunto dei tempi di caricamento simulati ai giochi della serie Myst, visto che non mi piaceva affatto la transizione istantanea tra le scene. Non era affatto fedele all'esperienza originale". Inoltre, ricorda, fino a qualche anno fa il progetto ScummVM non aveva un vero e proprio processo per l'aggiornamento della documentazione. "Specialmente se si voleva tener traccia di tutti i cambiamenti e le nuove caratteristiche introdotte in ogni versione, la documentazione andava tenuta aggiornata, ma" commenta "in effetti anche io un paio di volte ho peccato di pigrizia..."

Sul tema preservazione, Mari prende come esempio negativo Nintendo: "eccetto far uscire gli stessi titoli mille volte su ogni piattaforma, non stanno facendo nulla per l'enorme libreria di titoli Wiiware, per dirne una, non più disponibili per il download. Ormai la pirateria è l'unico modo di accedere a quella libreria e, penso, tra qualche anno succederà lo stesso per Switch. Penso sia chiaro, ormai, come la nuova era digitale abbia reso la preservazione più complicata, visto che molte volte non c'è nessun modo ovvio di accedere ai file."

ScummVM è una piattaforma facile da convertire anche per console, qui la vediamo su Switch
ScummVM è una piattaforma facile da convertire anche per console, qui la vediamo su Switch

Gilbert conferma: "con i giochi che diventano sempre più complessi, diventerà sempre più difficile essere in grado di emularli. Perfino ricostruirli a posteriori, senza aver accesso al codice originale, sarà complicato. Senza un cambiamento di rotta, non credo che saremo in grado di riuscire a supportare titoli recenti, considerando quanto lavoro richiedono solo i giochi anni 90. Francamente, sono tuttora sbalordito dal numero di titoli che riusciamo a rendere compatibili con ogni release di ScummVM!"

Sul potenziale futuro del progetto, alcuni dei co-lead riconoscono che l'unico modo di tenere in vita il progetto era proprio allargare l'oggetto di emulazione, dalle avventure agli RPG e narrativa. Boutonne commenta come sia diventato difficile prevedere, oggi, quale sarà la prossima tappa. "Con tutte le novità recenti del progetto, da Director, al lavoro con AGS, Nuvie, Residual VM... non possiamo porre alcun limite al futuro di ScummVM. In un tempo relativamente breve siamo passati dal supportare un centinaio di giochi punta e clicca, a un buon migliaio di titoli. L'unica cosa che sempre manca è il tempo: abbiamo dozzine di titoli potenzialmente fattibili, ma finché non saremo pagati per lavorare su ScummVM, dovremo dare priorità alle nostre vite quotidiane!"

Durante i suoi anni al comando del progetto, Sandulenko ha visto tanti degli sviluppatori ScummVM perdere interesse a causa della "VitaReale", infatti quando gli menziono scherzosamente la necessità di una VitaRealeVM che trasformi i compiti noiosi con miglioramenti all'interfaccia e risolvendo i bug, mi risponde che sarebbe un bel sogno. D'altronde, commenta, "il team passa molto più tempo a cercare di capire come ricostruire titoli e a farli funzionare, piuttosto che a giocarli." Infine, quando gli dico che - siccome Scumm e i titoli Lucasarts non sono più lo scopo focale del progetto da anni - forse ci sarebbe bisogno di una modifica del nome? Eugene ride: "è la domanda numero uno che riceviamo, infatti abbiamo caricato sulla wiki una pagina intera di nomi alternativi da usare. Sceglietene pure uno!"