Ecco come degli appassionati hanno fatto il reverse engineering di GTA 3 e Vice City nel silenzio di Rockstar
"Avevamo paura che qualcuno intervenisse…"
Grand Theft Auto 3 e Vice City hanno subito un processo completo di reverse engineering a opera di un gruppetto di appassionati.
Vuol dire che i fan hanno ricreato il codice sorgente di entrambi i giochi, e lo hanno pubblicato su GitHub. Il codice può essere usato da chiunque volesse per giocare su PC, ed è inoltre aperto a modifiche e migliorie ulteriori.
Re3 (reverse-engineered GTA 3) e reVC (reverse-engineered Vice City) non si limitano a offrire I giochi così come li conosciamo nelle loro incarnazioni ufficiali, ma aggiungono anche qualche miglioramento, così come potete vedere nel video qui sotto.
Giusto per darvi un'idea, segnaliamo che sono stati eliminati parecchi bug, che ora sono disponibili menu e telecamera di debug, che è presente la compatibilità coi controller più recenti, che sono stati eliminati i caricamenti tra le isole e aggiunto il supporto per il widescreen con un'interfaccia che si adatta di conseguenza. E tanto altro ancora (citiamo solo gli effetti migliorati presi dalle versioni PS2 dei giochi, e una mappa di Liberty City nel menu di pausa di Re3).
Come potrete intuire, si tratta di un risultato non da poco per la scena di appassionati dedicati al reverse engineering, e stupisce come Rockstar (e Take-Two, chiaramente) per il momento abbiano lasciato fare.
"Un GTA open source è come un sogno per tanti appassionati di GTA," ha detto il project leader "aap" a Eurogamer.
"Sono anni che aggiungiamo il nostro codice ai giochi tramite mod, ma era un processo piuttosto macchinoso e con diversi limiti."
Quello di cui vi parliamo oggi è solo il punto di arrivo di un percorso lungo anni, in cui ci sono stati diversi tentativi di ricreare GTA3, uscito originariamente nel 2001 a firma DMA Design e Rockstar Games.
Uno di questi tentativi, chiamato Open ReWrite o OpenRW, sembrava promettente, ma ora il progetto sembra dormiente. Qualcuno ha addirittura cercato di ricreare Grand Theft Auto 3 in Unity o Unreal, ma aap era più interessato al reverse engineering del codice originale, per ricavare una nuova sorgente. L'operazione è partita nel 2016 più come un passatempo, arrivando fino a riuscire a volare per la mappa.>
aap si è poi concentrato sul reverse engineering dei sistemi di collisioni e fisica, iniettandoli nel codice originale per vedere come se la cavavano, e così è partito ufficialmente il progetto re3. aap ha rimpiazzato pezzo per pezzo ogni frammento di codice nel gioco fino a quando, nella primavera del 2018, non c'era più niente di originale.
"Non sapevo se il progetto avrebbe mai visto la fine," ha spiegato app. "Ci lavoravo da solo, ma sembrava comunque la via più affidabile per un GTA open source."
Non si devono sottovalutare abilità, tempo ed energie necessarie per fare il reverse engineering di un videogioco. Non è un'impresa facile per un professionista, quindi figuriamoci per un semplice appassionato. Il quantitativo di codice su cui lavorare è enorme, e gli sbagli sono di fatto inevitabili, soprattutto se non si traducono in evidenti problemi ingame. aap lo ammette candidamente: nel codice di re3 ci sono quasi sicuramente bug che non sono presenti nel gioco originale.
Detto questo, è un risultato notevole. Ecco come aap e i suoi collaboratori sono riusciti a raggiungerlo (detta facile):
"GTA 3 e Vice City sono stati scritti in C++," spiega app. "Gli eseguibili compilati sono in machine code, quindi l'idea è che bisogna tornare al C++ partendo da machine code."
"Il machine code può essere mappato (più o meno) 1:1 in assembly, un linguaggio interpretabile da un umano, ma comunque molto legnoso da leggere."
"Tornare al C++ non è una semplice mappatura 1:1, ma per fortuna nell'ultima decina d'anni sono stati sviluppati dei decompilatori che rendono il processo più facile."
"Dunque, di solito lavoriamo con l'output del decompilatore e lo rimettiamo in una forma leggibile di C++. A volte è piuttosto semplice, a volte no, ma in ogni caso si tratta di maneggiare un sacco di codice, e gli sbagli sono inevitabili."
Per fortuna, il codice di GTA 3 su PS2 e Android include simboli di debug che contengono tutte le informazioni necessarie per il debug, appunto. Di solito non si trovano nei prodotti finiti perché occupano spazio, ma Rockstar per qualche motivo li ha lasciati in queste versioni dando al gruppo di reverse engineering una grande mano.
"Siamo stati molto fortunate a trovarli," ha detto aap. "Le versioni PS2 e Android di GTA 3 contengono i nomi per le variabili globali e le funzioni. Sono stati utilissimi, tanto che non penso saremmo riusciti ad arrivare dove siamo senza di loro."
Nel video qui sotto potete vedere l'analisi del codice utilizzato per i rifiuti che si trovano per le strade di GTA 3. Non è un filmato facile, ma è molto interessante.
Dopo avere interrotto il lavoro su re3 per un anno, aap ha ripreso nella primavera del 2019 e nel maggio del 2019 ha pubblicato il lavoro su GitHub. Parliamo più o meno di 15.000 linee di codice.
A quel punto, altri appassionati si sono accorti del progetto e hanno iniziato a contribuire. C'è stato uno stop nella seconda metà del 2019, poi nel 2020 è ripreso il tutto quando la pandemia ha dato più tempo libero agli hacker (magra consolazione, direte voi). Nell'aprile del 2020 il team di re3 (al cui cuore stanno solo sei persone) aveva il primo eseguibile.
Ma perché GTA 3? "È stato il primo gioco di un'era, è il più piccolo (che vuol dire quello col codice più breve) e più o meno piace a tutti," ha detto aap. Dopo GTA 3, il team è logicamente passato a Vice City, del resto è molto amato e le similitudini col precedente capitolo sono molte. Iniziato nel maggio 2020, reVC è stato completato a dicembre.
Guardando al futuro, aap dice che gli piacerebbe sistemare la fisica del gioco quando il frame-rate si alza e, magari aggiungere una mod per la realtà virtuale. Un altro progetto riguarda Renderhook (e dunque il ray-tracing): "Vedremo..." ha detto aap.
In ogni caso, già sono spuntati progetti di porting per Wii U, Nintendo Switch e PlayStation Vita. Nel video qui sotto, dello YouTuber Modern Vintage Gamer, potete vedere i lavori in corso per l'ibrida Nintendo:
"Il porting per Wii U è stato una sorpresa," ha detto aap. "Penso che prima o poi verrà fatto anche quello per Android, ma nessuno nel team conosce la piattaforma quindi probabilmente servirà qualcuno di esterno."
"La versione PS2 mi sta personalmente a cuore perché è la piattaforma originale di GTA, e penso di essere io a dovermene fare carico (del resto, ho un devikit PS2). Anche la versione PS3 è interessante, ho un devkit ma non il tempo però."
Il reverse engineering di GTA sta vivendo tempi frizzanti, insomma. Alcuni hacker sono riusciti a far girare la versione Android di Grand Theft Auto: San Andreas su PS Vita (la trovate sempre su GitHub). Non è stata un'operazione di reverse engineering del codice, ma l'ispirazione arriva dalla possibilità di giocare GTA 3 e Vice City su Vita. Altri porting da Android sono in arrivo sulla portatile Sony, poi.
A questo punto ci chiediamo come mai Take-Two e Rockstar non abbiano fatto niente. Re3 funziona solo se si possiede una copia di GTA 3, e aap sottolinea che il suo codice dovrebbe essere usato solo per scopi formativi, di documentazione o per il modding. "Non sosteniamo né la pirateria né l'uso commerciale."
Nonostante questo, la reputazione di Take-Two e Rockstar, generalmente dure contro i remake fanmade, era una preoccupazione per il team: "eravamo parecchio preoccupati, e abbiamo cercato di lavorare in silenzio il più possibile".
"C'è stato un po' di rumore con il porting per Switch, ma nessuno di Take-Two è intervenuto quindi pensiamo che non gli importi (o che siano ciechi davvero)."
Il progetto di reverse engineering di Super Mario 64 è ancora su GitHub, cosa che aap prende come un buon segno "perché Nintendo è aggressiva almeno quanto Take-Two". Fino a qui tutto bene, dunque, ma per quanto?
aap non aspetta mani in mano. Il prossimo lavoro è reLCS, il reverse engineering di Liberty City Stories (PSP, 2005), un lavoro iniziato a gennaio 2021 e che porterà per la prima volta su PC il gioco.
E poi? Grand Theft Auto: Vice City Stories, che aap descrive come il Santo Graal del reverse engineering di GTA. VCS ha più funzioni di LCS, ma non è mai arrivato su Android e dunque non ci sono i simboli di debug nel codice. Fare il reverse engineering dell'esclusiva PSP datata 2006 è una vera sfida: "vedremo cosa saremo in grado di fare a tempo debito," ha detto aap.