Lorsque les développeurs échouent, le bricolage: Les mods de jeu sont un centime une douzaine, en particulier pour Grand Theft Auto Online. Mais parfois, quelqu’un en propose un qui est si bon et pourtant si basique que vous vous demandez pourquoi le développeur n’a pas fait la même chose dans un patch. Un pirate informatique a montré un correctif pour les temps de chargement qui est si simple que vous vous demanderez pourquoi Rockstar ne s’en est pas occupé il y a des années.

Sans aucun doute, les temps de chargement de Grand Theft Auto Online sont atroces. Un sondage non scientifique mené sur Reddit l’été dernier révélé que la plupart attendaient de trois à six minutes le début du jeu et que plus de 35% des joueurs avaient des temps de chargement supérieurs à six minutes. Dans les pires scénarios, les temps d’attente dépassaient 15 minutes.

Un hacker qui passe par T0st a examiné ce qui pourrait être à l’origine de ses temps de chargement de six minutes. Après avoir vidé la pile de processus, il découvert deux goulots d’étranglement qui maximisent un seul thread CPU. Une routine mal écrite analysait de manière inefficace un fichier JSON de 10 Mo contenant plus de 63 000 éléments.

2021 03 02 Image 26

En fait, le fichier JSON contenait des articles achetables dans les boutiques du jeu (à ne pas confondre avec les microtransactions). La routine lit chaque entrée du fichier, puis la stocke dans un tableau. À chaque passage, il vérifie à nouveau le tableau entier pour les doublons avant d’insérer le nouvel élément. Comme on peut l’imaginer, ce processus s’allonge de plus en plus à mesure que le tableau se développe.

Pour résoudre le problème, T0st a créé une DLL qui élimine les deux goulots d’étranglement. Le premier correctif « met en cache » les longues chaînes de caractères.

Publicité

« S’il est à nouveau appelé dans la plage de la chaîne, [it will] revenir [the] valeur mise en cache », écrit T0st.

Étant donné que ce correctif élimine les entrées répétées, la vérification des doublons n’est plus nécessaire. Ainsi, la deuxième partie de la DLL insère simplement les valeurs dans le tableau.

2021 03 02 Image 25

Les résultats de ces deux patchs sont assez remarquables. Avec seulement le correctif de vérification de duplication installé, le temps de chargement a été légèrement réduit de six minutes à 4,5 minutes. L’analyseur JSON était beaucoup plus efficace, réduisant le temps d’attente à deux minutes et 50 secondes, et l’implémentation des deux correctifs dans la DLL améliorait le temps de chargement d’environ 70% (ou 1 min 50 s).

Les résultats peuvent varier en fonction de la configuration de la plate-forme, mais les optimisations devraient améliorer considérablement les vitesses de chargement pour toute configuration.

T0st posté la preuve de concept sur GitHub si vous êtes intéressé, bien qu’il prévienne que l’injecter en ligne pourrait vous faire suspendre. Ses écriture sur la façon dont il a trouvé et résolu le problème est également une très bonne lecture. Il espère que Rockstar aura vent de son PoC et publiera un patch officiel, ce qui n’est pas une demande déraisonnable pour la vache à lait du studio âgée de sept ans.

«Si cela atteint d’une manière ou d’une autre Rockstar: les problèmes ne devraient pas prendre plus d’une journée à un seul développeur à résoudre», écrit-il. «S’il vous plaît, faites quelque chose à ce sujet.

Oui. Je vous en prie.

Rate this post
Publicité
Article précédentUn homme se lie d’amitié avec un fraudeur via PUBG et se fait arrêter pour échange de carte
Article suivantComment numériser rapidement des documents sur votre Mac avec votre iPhone
Avatar
Violette Laurent est une blogueuse tech nantaise diplômée en communication de masse et douée pour l'écriture. Elle est la rédactrice en chef de fr.techtribune.net. Les sujets de prédilection de Violette sont la technologie et la cryptographie. Elle est également une grande fan d'Anime et de Manga.

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici