Hacker réduit les temps de chargement de GTA Online d’environ 70%

Vous pourriez passer moins de temps à regarder des écrans de chargement comme celui-ci avec un nouveau correctif DLL.
Agrandir / Vous pourriez passer moins de temps à regarder des écrans de chargement comme celui-ci avec un nouveau correctif DLL.

Un pirate informatique passant par la poignée T0st dit qu’il a découvert un problème central qui a causé des temps de chargement plus longs que nécessaire dans Grand Theft Auto en ligne pendant des années. Le pirate informatique a publié un correctif de DLL de preuve de concept qui raccourcit ces longs temps de démarrage d’environ 70 %.

Grand Theft Auto en ligneLes temps de chargement du PC sont un problème persistant depuis sept ans maintenant, restant lents malgré les améliorations générales apportées au matériel et le statut du jeu en tant que source de revenus lucrative continue pour l’éditeur Take Two. Un sondage anonyme de Reddit l’année dernière a révélé qu’environ la moitié des joueurs attendaient trois à six minutes pour que le jeu se charge, et environ 35% des joueurs attendaient encore plus longtemps pour commencer chaque session.

Ce n’est pas une enquête scientifique ou quoi que ce soit, mais même en tenant compte des problèmes d’auto-sélection et de rapport, ces temps de chargement sont très longs, en particulier pour un jeu aussi ancien. Le problème est encore plus difficile à comprendre lorsque le mode solo Grand Theft Auto V a tendance à se charger plusieurs fois plus vite.

Gain de temps au démontage

Pour aller au fond du problème, T0st écrit qu’ils ont commencé par profiler leur propre processeur pour essayer de comprendre pourquoi le jeu maximisait un seul thread de processeur pendant plus de quatre minutes pendant le chargement. Après avoir utilisé un outil pour vider la pile de processus et démonté le RGT code alors qu’il s’exécutait en mémoire, T0st a remarqué un ensemble de fonctions (quelque peu obscurcies) qui semblaient analyser un fichier JSON de 10 Mo avec plus de 63 000 entrées au total.

Le fichier JSON en question semblait être le « catalogue de la boutique en ligne » qui décrit chaque article GTA en ligne les joueurs peuvent acheter avec la monnaie du jeu. L’analyse d’un fichier de 10 Mo ne devrait pas être trop beaucoup de problème pour un ordinateur moderne, mais quelques problèmes obscurs dans la mise en œuvre spécifique semblent conduire à des ralentissements massifs.

D’une part, la fonction spécifique utilisée pour analyser la chaîne JSON (apparemment sscanf, dans ce cas) exécutait apparemment une fonction de vérification strlen fastidieuse à plusieurs reprises après la lecture de chaque donnée. La simple mise en cache de cette valeur de longueur de chaîne pour accélérer ces vérifications a entraîné une réduction de plus de 50 % des temps de chargement, écrit T0st.

Après avoir analysé toutes ces données JSON, GTA en ligne semble le charger dans un tableau d’une manière extrêmement inefficace, en vérifiant l’ensemble du tableau pour les doublons à partir de zéro au fur et à mesure qu’il grandit. Le remplacement de ce processus par une table de hachage capable de rechercher rapidement les doublons a entraîné à lui seul une réduction du temps de chargement d’environ 25 %, écrit T0st.

Avec ces deux correctifs combinés, T0st dit GTA en ligneLe temps de chargement de est passé de six minutes à un peu moins de deux minutes sur la machine de test. Les personnes intéressées par la réplication des résultats peuvent créer une DLL similaire à partir du code source de T0st. Les joueurs ne devraient cependant le faire qu’à leurs risques et périls, car ce type de modification pourrait facilement (et à tort) déclencher les contrôles anti-triche du jeu.

Pendant ce temps, T0st écrit que la mise en œuvre de ce correctif pour tous les joueurs du côté de Rockstar « ne devrait pas prendre plus d’une journée pour qu’un seul développeur soit résolu ». Espérons que l’attention renouvelée que suscite ce problème incitera Rockstar à le faire le plus tôt possible.

Laisser un commentaire