Les ingénieurs d’Unreal Engine 5 s’attaquent aux défis des développeurs de jeux contemporains avec leur moteur.

Les ingénieurs d'Unreal Engine 5 s'attaquent aux défis des développeurs de jeux contemporains avec leur moteur.

Plusieurs jeux développés avec Unreal Engine 5, comme S.T.A.L.K.E.R. 2, rencontrent des problèmes de performance liés au bégaiement des shaders. Les ingénieurs d’Unreal expliquent que ce phénomène se produit lors de la compilation des shaders en temps réel, ce qui peut entraîner des interruptions pendant le jeu. Ils recommandent le préchargement des Pipeline State Objects pour minimiser ces retards. Les différences entre PC et consoles influencent également ces problèmes, les consoles étant moins affectées grâce à leur architecture standardisée. Des améliorations continues sont en cours pour optimiser ces processus.

Il est bien connu que plusieurs jeux développés avec Unreal Engine 5 rencontrent des soucis de performance. Cela inclut des titres récents tels que S.T.A.L.K.E.R. 2 et Grey Zone Warfare, ainsi que des lancements plus anciens comme Remnant 2 et Lords of the Fallen. Avec de nombreux autres jeux à venir, les inquiétudes persistent parmi les joueurs concernant les performances des titres basés sur Unreal Engine 5.

Comprendre les Problèmes de Shader

Pour éclaircir ces préoccupations, les ingénieurs d’Unreal Engine ont décidé d’aborder la question, en se concentrant sur le bégaiement du moteur de jeu et des shaders. Dans un article de blog et une vidéo informative, Kenzo ter Elst, Daniele Vettorel, Allan Bentham et Mihnea Balta partagent leur expertise.

Ils ont mentionné que récemment, de nombreuses discussions ont émergé au sein de la communauté Epic concernant le bégaiement des shaders et son impact sur les projets des développeurs. Ils ont expliqué les causes de ce phénomène, ainsi que la manière dont le préchargement des PSO (Pipeline State Objects) peut contribuer à atténuer le problème, tout en présentant des meilleures pratiques de développement pour réduire ce bégaiement.

Leur ton, bien que convivial, souligne subtilement que la responsabilité incombe aussi aux développeurs. Ils indiquent que le bégaiement de la compilation des shaders se produit lorsque le moteur de rendu doit compiler un nouveau shader juste avant de l’utiliser, ce qui provoque une interruption pendant le processus.

Solutions aux Problèmes de Compilation

À la base, ces programmes de shaders étaient traditionnellement compilés en temps réel, tandis que le jeu était en cours d’exécution. Par le passé, cela ne posait pas de problème en raison du nombre limité de shaders utilisés. Cependant, avec l’augmentation de la complexité et du volume des shaders, les défis se sont intensifiés.

Le processus de compilation consiste à traduire le code source, écrit dans un langage de haut niveau tel que C++ ou Java, en code machine, et cela nécessite des ressources considérables. Dans le cas des shaders, la charge supplémentaire sur le GPU peut devenir problématique lorsque la compilation se produit en temps réel.

Le bégaiement se produit lorsqu’une demande de rendu survient, par exemple, lorsque le joueur tourne la caméra vers une nouvelle zone. Si un shader nouveau est nécessaire à ce moment précis, le processus de compilation s’engage, provoquant un retard dans le rendu des images.

Pour minimiser ces problèmes, les développeurs peuvent utiliser le préchargement des PSO. Cela permet de stocker les shaders compilés pour un accès rapide lors des demandes de dessin, évitant ainsi des recompilations inutiles. Toutefois, si un PSO n’est pas déjà chargé en mémoire, son accès peut également entraîner un léger bégaiement.

Si vous vous demandez pourquoi S.T.A.L.K.E.R. 2 nécessite une compilation intensive des shaders lors du démarrage, c’est précisément pour éviter les ralentissements pendant le jeu. En raison de son environnement ouvert, le préchargement s’effectue au lancement plutôt qu’entre les niveaux, contrairement à des jeux plus linéaires.

Différences Entre PC et Consoles

Les problèmes de shaders sont particulièrement prononcés sur les PC Windows, où la diversité des configurations de GPU et des pilotes complique les choses. En revanche, sur les consoles, ces problèmes sont moins fréquents en raison d’une architecture matérielle standardisée.

Sur les consoles, les shaders sont intégrés directement dans le code exécutable du jeu. Ainsi, la compilation au lancement devient superflue, car ils sont déjà présents. Les shaders sont transformés en PSO durant l’exécution, éliminant ainsi les risques de bégaiement liés aux PSO.

L’Avenir d’Unreal Engine

Epic et leur équipe de développeurs continuent d’améliorer le système de préchargement. Selon leurs déclarations, bien qu’il existe encore des limitations et des lacunes, des efforts sont en cours pour perfectionner ce système. Ils collaborent également avec des fournisseurs de matériel pour adapter les pilotes et les API graphiques aux besoins des jeux.

Les développeurs d’Unreal espèrent que ce mécanisme de préchargement pourra devenir automatique et optimisé afin de réduire les cas de bégaiement, allégeant ainsi la charge sur les développeurs. La question de la temporalité de cette avancée reste ouverte, mais avec des titres majeurs comme Halo et les jeux Witcher utilisant Unreal Engine, il est impératif d’accélérer le développement de cette technologie.

Il est à noter que ces solutions ne résolvent pas tous les types de bégaiement. D’autres facteurs, tels que des spawns excessifs ou le chargement synchrone, peuvent également causer des interruptions dans le gameplay. Même avec les améliorations apportées par le préchargement, certains jeux comme S.T.A.L.K.E.R. 2 peuvent continuer à rencontrer des problèmes de performance.