Toute l'actualité Gaming, Esports et jeux vidéo sur consoles et PC. Toutes les news des jeux fraîchement servies par la rédaction du site de référence : annonces, sorties, bons plans... ne manquez plus une info essentielle. Votre Magazine #1 des Jeux Vidéo. News, tests, émissions, trailers, vidéos, soluces et astuces.

Digital Foundry explique comment un programmeur intelligent a réduit les temps de chargement de GTA Online de 70 %

Digital Foundry explique comment un programmeur intelligent a réduit les temps de chargement de GTA Online de 70 %
📱

GTA Online reste un jeu populaire (et incroyablement rentable) sept ans après son lancement, grâce à l’afflux constant de nouveaux contenus, mais une chose que Rockstar semble incapable d’améliorer est les temps de chargement réputés longs du jeu. Au cours du week-end, un développeur entreprenant appelé t0st a finalement découvert pourquoi GTA Online prend si longtemps à se charger – même sur des machines dotées de processeurs et de stockage rapides tels que la PlayStation 5 et le PC – et a résolu ces problèmes, réduisant ses temps de chargement de 70 %.

Le blog écrit par t0st expliquant les problèmes et les correctifs est brillant, complet avec d’excellentes illustrations MSPaint, mais il est un peu difficile à suivre si vous n’avez pas d’expérience en programmation. Je vais essayer de résumer au mieux !

Donc : après avoir lutté pendant six minutes pour GTA Online sur son PC de milieu de gamme, t0st a ouvert le Gestionnaire des tâches la prochaine fois qu’il a chargé le jeu et a remarqué quelque chose d’étrange : après la marque d’une minute, l’utilisation du processeur de son ordinateur a augmenté de façon spectaculaire, mais le stockage et l’utilisation du réseau étaient presque inexistants. Cela suggérait que les longs temps de chargement n’étaient pas causés par les serveurs de Rockstar ou les données lues sur un lecteur – à la place, quelque chose fonctionnait sur le CPU. Quelque chose qui nécessitait une tonne de traitement pour se terminer et n’utilisait qu’un seul thread.

Fort de ces connaissances, t0st a utilisé une série d’outils de programmation et de débogage pour découvrir deux problèmes majeurs.

Tout d’abord, le jeu lisait dans un fichier texte tous les objets achetables du jeu – et après chacun des 63 000 objets, cela compte chaque personnage dans le fichier texte de 10 Mo à nouveau. Faire ce décompte une fois n’est pas grave, mais le faire 63 000 fois représente une perte de temps CPU considérable.

Deuxièmement, pour préparer toutes les données d’objet qui ont été lues, le jeu enregistre à la fois les Les données associé à cet article (par exemple, son nom, son prix, sa catégorie, ses statistiques) et un hacher de cet article (essentiellement une « empreinte digitale » calculée qui l’identifie de manière unique). Chaque fois que le jeu stocke un élément de la liste – ce qui, rappelez-vous, se produit 63 000 fois – il vérifie la valeur de hachage de l’élément stocké par rapport à la valeur de hachage de tous les autres élément qui a déjà été stocké.

Au début, cela ne prend pas beaucoup de temps, mais à mesure que le nombre d’objets chargés avec succès dans le jeu augmente, cette vérification prend de plus en plus de temps. Au total, t0st estime que 1 984 531 500 vérifications ont lieu (près de deux milliards !), ce qui prend à nouveau une tonne de temps CPU. Le jeu fait cela pour s’assurer qu’il n’y a pas d’éléments en double dans la liste finale, mais étant donné que la liste est complètement vide pour commencer et que le fichier en cours de chargement n’a pas de doublons, la vérification est essentiellement inutile.

Pour résoudre les problèmes, t0st a écrit son propre code qui écrase certaines fonctions du jeu. Pour résoudre le problème de “lecture des éléments”, il a créé un cache de base, qui calcule la longueur de la liste des éléments une fois, puis renvoie cette même valeur sans refaire le calcul chaque fois que la longueur est demandée par le code de Rockstar. Cela réduit le nombre de fois que la vérification doit être effectuée de 63 000 à une, ce qui permet d’économiser une énorme quantité de travail inutile.

La deuxième solution est encore plus simple. Comme t0st a estimé qu’il n’était pas nécessaire de vérifier les éléments en double, son code insère simplement le nouvel élément directement, sans effectuer la vérification du hachage. Cela signifie qu’aucune des près de deux milliards de vérifications n’a besoin d’avoir lieu et que le processeur peut monter en flèche tout au long du processus.

Avec les deux correctifs en place, GTA Online se charge chemin plus rapide. Sur le PC de t0st, le fait d’éviter la vérification des éléments en double réduit le temps de chargement de six minutes à quatre minutes et demie, et l’ajout du correctif de chargement des éléments le réduit encore davantage, à seulement une minute et 50 secondes. C’est un 69,4 % réduction des temps de chargement, ce qui est absolument incroyable étant donné qu’il n’a nécessité la modification que de deux fonctions.

Qu’est-ce-qu’on fait maintenant?

Mise à jour (17h) : Nous avons rattrapé t0st pour lui demander pourquoi il pensait que ces problèmes apparemment très évidents pouvaient persister depuis si longtemps. Il a souligné qu’il n’avait pas d’expérience en développement de jeux et que les outils de débogage ne lui donnaient qu’une petite fenêtre pour voir ce qui se passait dans le code, donc il n’en était pas sûr. Cependant, il a souligné plusieurs commentaires d’utilisateurs du forum Hacker News comme des théories qu’il aimait. Par exemple, le code peut n’avoir été testé que sur des listes d’éléments plus petites, de sorte que l’étendue du problème n’a peut-être pas été évidente au départ. Il est également possible que l’équipe de maintenance de GTA Online ait peu de programmeurs d’origine, de sorte que le fonctionnement interne du code ne soit pas bien compris. Il a également abordé l’angle de la politique de l’entreprise ; généralement, la direction doit justifier tout temps de programmation passé, de sorte que des choses comme l’optimisation des temps de chargement n’ont peut-être pas reçu l’investissement nécessaire pour être réalisées. Tout cela est une matière à réflexion intéressante, et j’espère que nous aurons un jour une meilleure idée du pourquoi et du comment de cette situation.

Eh bien, si vous êtes un programmeur de jeux expérimenté avec les bons outils, vous pouvez télécharger le code source ici et essayer le correctif par vous-même. Notez que la modification des fonctions du jeu alors que le jeu est en cours d’exécution de cette manière est classique comportement de piratage, alors soyez prudent de peur de vous retrouver avec une interdiction permanente.

Pour tous les autres, votre meilleur pari est d’espérer que Rockstar implémentera les correctifs dans un futur patch GTA. La simplicité relative du correctif et l’ampleur des gains de temps devraient signifier qu’il vaut au moins la peine d’être étudié, en particulier pour les joueurs sur console ou PC avec des processeurs AMD plus anciens. Comme t0st lui-même l’a dit :

“Si cela atteint Rockstar d’une manière ou d’une autre : les problèmes ne devraient pas prendre plus d’une journée pour qu’un seul développeur les résolve. Veuillez faire quelque chose :<

“Vous pouvez soit passer à un hashmap pour la déduplication, soit l’ignorer complètement au démarrage comme solution plus rapide. Pour l’analyseur JSON, remplacez simplement la bibliothèque par une plus performante. Je ne pense pas qu’il y ait de solution plus simple .

ty <3"

Compte tenu de l’attention que cette histoire a reçue depuis sa publication le 28 février, vous espérez que Rockstar offrirait au moins une réponse, étant donné à quel point les temps de chargement ont été un bugbear pour GTA Online au cours de sa longue histoire. Nous mettrons à jour cette histoire si Rockstar parle publiquement de la question.

Découvrez encore plus d’articles dans nos catégories Astuce, Consoles & Jeux.

Merci pour votre visite on espère que notre article Digital Foundry explique comment un programmeur intelligent a réduit les temps de chargement de GTA Online de 70 %
, n’oubliez pas de partager l’article sur Facebook, twitter et whatsapp avec les hashtags ☑️ #Digital #Foundry #explique #comment #programmeur #intelligent #réduit #les #temps #chargement #GTA #Online ☑️!

You might also like
Leave A Reply

Your email address will not be published.