venerdì, Aprile 25, 2025

Hacker riduce i tempi di caricamento di GTA Online di circa il 70%

Un hacker che segue il manico T0st afferma di aver individuato un problema fondamentale che ha causato per anni tempi di caricamento più lunghi del necessario in Grand Theft Auto Online . L’hacker ha rilasciato una correzione della DLL di prova che riduce i lunghi tempi di avvio di circa il 70%.

I tempi di caricamento del PC di Grand Theft Auto Online sono un problema persistente da sette anni ormai, rimanendo lenti nonostante i miglioramenti generali all’hardware e lo stato del gioco come un flusso di entrate redditizio continuo per l’editore Take Two . Un sondaggio anonimo di Reddit dell’anno scorso ha rilevato che circa la metà dei giocatori aspettava da tre a sei minuti per il caricamento del gioco e circa il 35% dei giocatori aspettava ancora più a lungo per iniziare ogni sessione.Non è un sondaggio scientifico o altro, ma anche tenendo conto dell’auto-selezione e dei problemi di segnalazione, quei tempi di caricamento sono molto lunghi, specialmente per un gioco così vecchio. Il problema è ancora più difficile da capire quando Grand Theft Auto V per giocatore singolo tende a caricarsi molte volte più velocemente.

Risparmio di tempo con lo smontaggio

Per arrivare alla fine del problema, T0st scrive di aver iniziato a profilare la propria CPU per cercare di capire perché il gioco stava esaurendo un singolo thread della CPU per oltre quattro minuti durante il caricamento. Dopo aver utilizzato uno strumento per eseguire il dump dello stack di processo e disassemblare il codice GTA mentre era in esecuzione in memoria, T0st ha notato una serie di funzioni (alquanto offuscate) che sembravano analizzare un file JSON da 10 MB con oltre 63.000 voci totali.

Il file JSON in questione sembrava essere il “catalogo del negozio online” che descrive ogni singolo oggetto che i giocatori di GTA Online possono acquistare con la valuta del gioco. Analisi di un file di 10 MB non dovrebbe essere troppo molto di un problema per un computer moderno, ma alcuni problemi oscuri nella realizzazione specifica sembrano portare a rallentamenti enormi.

Per uno, la funzione specifica utilizzata per analizzare la stringa JSON (apparentemente sscanf , in questo caso) apparentemente eseguiva ripetutamente una funzione di controllo strlen che richiedeva molto tempo dopo la lettura di ogni singolo pezzo di dati . La semplice memorizzazione nella cache del valore della lunghezza della stringa per accelerare i controlli ha portato a una riduzione di oltre il 50% dei tempi di caricamento, scrive T0st.

Dopo aver analizzato tutti questi dati JSON, GTA Online sembra caricarli in un array in modo estremamente inefficiente, controllando l’intero array per i duplicati da zero man mano che cresce. La sostituzione di tale processo con una tabella hash in grado di verificare rapidamente la presenza di duplicati ha portato a una riduzione del tempo di caricamento di circa il 25% da sola, scrive T0st.

Con queste due correzioni combinate, T0st afferma che  il tempo di caricamento di GTA Online è sceso da sei minuti a poco meno di due minuti sulla macchina di prova. Chi è interessato a replicare i risultati può creare una DLL simile dal codice sorgente di T0st . I giocatori dovrebbero farlo solo a proprio rischio, tuttavia, poiché questo tipo di modifica potrebbe facilmente (ed erroneamente) far scattare i controlli anti-cheat del gioco.Nel frattempo, T0st scrive che l’implementazione di questa correzione per tutti i giocatori dalla parte di Rockstar “non dovrebbe richiedere più di un giorno per la risoluzione di un singolo sviluppatore”. Speriamo che la rinnovata attenzione che questo problema sta ottenendo porterà Rockstar a farlo prima o poi.

ARTICOLI COLLEGATI:

ULTIMI ARTICOLI: