Lors du récent Unreal Fest 2025 à Orlando, Floride, Ari Arnbjörnsson, ingénieur logiciel senior d’Unreal Engine, a abordé un véritable cauchemar pour les joueurs PC : les saccades.
Au cours des dernières années, de nombreux jeux utilisant Unreal Engine, mais aussi d’autres moteurs, ont souffert de saccades sur PC. La question principale était : que fait Epic pour résoudre ce problème ?
Les causes des saccades
La présentation, intitulée « The Great Hitch Hunt », visait à identifier les principaux problèmes et à offrir des conseils aux développeurs. Arnbjörnsson a même endossé un costume de chasseur de sorcières pour « éliminer les saccades ».
Il a recensé sept causes principales de ces saccades. La première, le Level Streaming, englobe des interruptions liées au chargement ou au déchargement des éléments du monde du jeu. Une cause fréquente réside dans l’usage inadéquat des acteurs de maillage statique pour la géométrie statique.
Souvent, les artistes et concepteurs de niveaux intègrent trop d’acteurs de maillage statique, comme des tables ou de la vaisselle. Cette méthode peut être bloquante pour des jeux AAA, car elle augmente la charge mémoire et nécessite un passage par le collecteur de déchets.
Pour remédier à cela, Arnbjörnsson recommande d’utiliser des meshes statiques instanciés ou des meshes statiques instanciés hiérarchiques. La fonctionnalité des acteurs de niveau packés permet aussi de combiner plusieurs meshes statiques en moins d’acteurs, ce qui diminue la surcharge.
Concernant la manière dont Epic compte améliorer le streaming de niveaux, il a évoqué la fonctionnalité Cell Transformers expérimentale d’Unreal Engine 5.5, qui convertit des acteurs en meshes instanciés en temps réel.
Optimisation des performances
Le deuxième facteur à l’origine des saccades est la physique, souvent mal optimisée par les équipes de contenu. L’introduction de Nanite avec Unreal Engine 5 a amené les développeurs à croire qu’ils pouvaient se passer d’optimisations pour les meshes complexes.
Il est conseillé d’utiliser des formes de collision simples, privilégiant les sphères, puis les capsules, les boîtes et enfin les polygones convexes. De plus, les objets éloignés, non interactifs, devraient être désactivés.
Un autre point abordé par Arnbjörnsson est l’initialisation physicielle asynchrone, encore expérimentale dans Unreal Engine 5.5/5.6, qui décharge le calcul physique du thread principal du jeu. Toutefois, il a recommandé d’attendre avant de l’intégrer dans un jeu final.
Une autre source de saccades est l’actor spawning, particulièrement avec des acteurs complexes. Pour réduire l’impact, il est recommandé de limiter le nombre d’acteurs produits par image ou de différer l’initialisation des composants.
De nombreux développeurs ont demandé à Epic d’intégrer le pooling d’acteurs comme fonctionnalité standard. Bien que cela soit à l’étude, le défi reste de gérer la diversité des types d’acteurs dans chaque projet.
Un autre problème crucial est la compilation de Pipeline State Object (PSO). Les API modernes comme DirectX12 exigent des shaders compilés avant le rendu. Sur PC, compiler les shaders à la volée entraîne inévitablement des saccades.
Pour atténuer cela, Unreal Engine 5.3 a introduit le préchargement PSO, mais cette méthode seule n’est pas suffisante. Il est capital que les développeurs établissent leur propre stratégie de compilation PSO.
Gestion des ressources du jeu
La cinquième cause est le garbage collection hitch, qui survient lorsqu’il y a trop d’instances UObject inutilisées. Cela entraîne des saccades dues à un trop long traitement par le Garbage Collector.
Il est essentiel que les développeurs gardent le nombre d’UObject sous contrôle et planifient judicieusement les nettoyages. Epic travaille sur une fonctionnalité expérimentale d’Analyse de Portée Incrémentale pour décharger le travail du Garbage Collector.
Le synchronous loading hitch se produit lorsque des éléments bloquants ralentissent le fil principal. L’utilisation de chargements asynchrones est recommandée. Des outils sont même en cours d’ajout pour prévenir ce type de problème.
Enfin, les Blueprint et Content Hitches sont causés par des scripts trop lourds. Les développeurs doivent s’efforcer de simplifier leurs processus et de réduire les mises à jour inutiles.
Pour conclure, Arnbjörnsson a rappelé aux développeurs que, malgré les avancées matérielles, il est crucial d’adopter des pratiques d’optimisation rigoureuses. Espérons que ces conseils sensibiliseront à ces défis pour garantir des expériences de jeu plus fluides.



