Jeux vidéo

Il réduit les temps de chargement de GTA Online : Rockstar le remercie et prépare un update

Un développeur a trouvé un moyen de réduire de 70% les temps de chargement du jeu en ligne GTA Online sur PC. Après avoir reperé cette optimisation, le studio de développement Rockstar Games l'a remercié et prépare une mise à jour.

Ils ont irrité plus d'un joueur de la version en ligne de Grand Theft Auto V depuis les 7 ans d'existence de ce dernière opus du célèbre jeu vidéo : les temps de chargement anormalement longs, pouvant mener jusqu'à 20 minutes d'attente (!) pour certains joueurs.

A tel point qu'un joueur agacé, qui a la petite particularité d'être un développeur, a fini par se plonger dans le code du jeu. 😉



Avant d'en arriver là, le développeur, qui répond sur son profil GitHub au nom de tostercx, a tout simplement commencé par observer le comportement de son gestionnaire des tâches au lancement du jeu sur son PC milieu de gamme.

Il remarque alors qu'après une première minute d'attente (au cours de laquelle sont chargées les ressources communes aux modes histoire et online du jeu), l'utilisation de son CPU augmentait de manière importante, mais que la sollicitation de la mémoire et du réseau de son poste était quasi nulle.

Cela suggérait que le temps de chargement n'était pas dû aux serveurs de Rockstar, l'éditeur du jeu vidéo, mais à quelque chose qui tournait sur le processeur, en ne travaillant qui plus est qu'avec un thread unique selon l'analyse de tostercx.

Le développeur s'est par la suite empressé de décompiler les sources du jeu pour se plonger dans ses milliers de lignes de code C++ et débuguer la bête de l'intérieur.

Il s'aperçoit que c'est un appel à la fonction sscanf (qui permet la lecture de texte depuis certain un format de données) qui semble être la cause de cet embouteillage au niveau du CPU. En creusant plus, le dev découvre que la fonction travaille sur du JSON. Mais pas n'importe quel JSON : un fichier JSON (tenez-vous bien) de 63 000 objets, d'environ 10 Mo. Les données présentes dans ce fichier correspondent à tous les items et upgrades payants du jeu, et chacun d'entre eux se voit passé en revue au moment du chargement.

10 Mo, c'est pas grand chose me direz-vous, mais c'est là qu'une particularité de la fonction sscanf vient broyer le tout : pour chaque octet de donnée ajouté lors de la lecture, la fonction compte chaque caractère de la chaîne de caractères de 10 Mo via un strlen. Et ça, sur autant d'entrées, ça prend PAS MAL de temps.

Un second problème est ensuite identifié par le développeur. Chaque item parsé atterrit dans un tableau où son stockées les données qui lui sont associées (son nom, son prix, sa catégorie, etc.). Le souci ? Cette insertion s'effectue après qu'un contrôle sur l'item ait été réalisé pour s'assurer qu'il n'existait pas déjà dans le tableau.



Alors que les premières insertions de ces contrôles dans le tableau prennent peu de temps, ils se démultiplient de manière colossale au fil des enregistrements, à tel point que selon les calculs du développeurs, le code effectue presque 2 MILLIARDS de contrôles pour remplir ce foutu tableau. 😱

Pour résoudre ces problèmes de performance, tostercx a écrit son propre code pour écraser les fonctions des développeurs du jeu et éviter ces appels et contrôles en cascade.

En exécutant à nouveau le jeu avec son propre code, le développeur découvre une réduction drastique de son temps de chargement, de l'ordre de 70% ! Plutôt bien payé pour la modification de seulement 2 fonctions ! 😅

Après avoir partagé sa découverte en ligne ainsi que son code sur GitHub, le fix du développeur a été repéré par Rockstar Games. Le studio l'a récompensé dans le cadre de son programme de bug bounty en lui versant la somme de 10 000 dollars, et travaille actuellement sur une correction qui sera prochainement déployée, pour le plus grand plaisir des joueurs. 😉

Vous pouvez retrouver les explications détaillées de tostercx, que j'ai essayé de vous synthétiser du mieux que je le pouvais ici, sur le post dédié à ce fix sur son blog.

S'abonner aux Joies du Code sur Facebook

Suivre Les Joies du Code sur Twitter

À propos de l'auteur
Nicolas Lecointre
Chief Happiness Officer des développeurs, ceinture noire de sudo. Pour rire, j'ai créé Les Joies du Code. J'utilise Vim depuis 10 ans parce que je sais pas comment le quitter.
Événements

Hackathon grandeur nature : codez au Parc des Princes, 150 000 dollars à la clé

Participez au hackathon Hacking Paris de Chiliz, du 11 au 13 juillet 2025 au Parc des Princes

Hackathon Hacking Paris 2025 — Croyez-moi, des hackathons, j’en ai vu passer. Mais DANS UN STADE et qui plus est au Parc des Princes, permettez-moi de vous le dire : c’est du jamais vu.

# En partenariat avec Chiliz

À vos agendas : du 11 au 13 juillet 2025, Chiliz, qui propose aux fans de sport et d'e-sport de se rapprocher de leurs clubs et athlètes préférés, organise un hackathon grandeur nature dans l’antre historique du PSG.

Hacking Paris est un événement 100% gratuit, pensé pour les développeurs et ceux qui s’intéressent à la blockchain, avec pour objectif de donner vie à vos projets pour faire évoluer l’écosystème.

Je participe au hackathon 🤩

150 000 dollars à la clé

Vous avez bien lu. CENT. CINQUANTE. MILLE. DOLLARS.

Dans ce hackathon, les meilleures idées ne repartiront pas juste avec les félicitations du jury et un .zip de leur projet. 👀

150 000 dollars sont mis en jeu par Chiliz pour récompenser les projets gagnants, répartis sur 5 grandes thématiques :

  • Utilisation des fan tokens : 50 000 $
  • Contenus créés par les fans et plateformes de monétisation : 24 000 $
  • Outils ou services DeFi (finance décentralisée) : 22 000 $
  • Agents ou outils basés sur l’IA pour le sport : 22 000 $
  • Fonctionnalités et connectivité du portefeuille Socios : 22 000 $
  • Récompenses spéciales : 10 000 $

Je m’inscris à Hacking Paris ⚽️

Construisez le futur de l’engagement sportif

Hacking Paris invite les développeurs à imaginer des applications décentralisées capables de réinventer la relation entre les clubs et leurs supporters. 🙌

Fan tokens, gouvernance décentralisée, NFTs, expériences immersives dans les stades… Cet événement XXL sera l’occasion de monter vos projets, et cela durant les trois jours du hackathon.

Le stade du Parc des Princes, où prendra lieu le hackathon Hacking Paris

Pas besoin d’être un expert de la Chiliz Chain pour participer : les ressources et la documentation nécessaires sont fournies — accessibles depuis le site de l’événement —, et des mentors seront présents sur place pour vous accompagner, avec une première journée de workshops pour vous permettre de prendre en main les outils et affiner votre projet.

Dès le début de soirée de cette première journée (vendredi 11 juillet) : les choses sérieuses commencent. 🔥

Vous serez alors libres de vous lancer sur le développement des solutions que vous aurez imaginées, qui devrait vous tenir en haleine jusqu’au dimanche midi, où débuteront les démos des projets.

Des invités de renom devraient également prendre part à l’événement (line-up à venir), de quoi nourrir l’effervescence qui régnera au Parc des Princes pendant ces trois jours d’innovation.

Pourquoi participer ?

En plus des prix exceptionnels, Hacking Paris permet de se connecter à une communauté Web3 internationale, d’échanger avec des experts du secteur et d’explorer des opportunités concrètes dans l’écosystème Chiliz, au-delà du hackathon.

Les projets retenus pourront quant à eux bénéficier d’un accompagnement après l’événement, et gagner en visibilité auprès d’acteurs clés du sport et de la tech.

Je m’inscris dès maintenant pour Hacking Paris — du 11 au 13 juillet au Parc des Princes (GRATUIT) 🏟️