Le contenu de ce site a été traduit à l'aide de l'intelligence artificielle (IA) ou d'une technologie de traduction automatique, et peut contenir des erreurs.

Skip to content

Présentation de SLIM : modèles interactifs légers et évolutifs

Tirer parti de la puissance des composites de rendu allégés pour créer des univers plus vastes et plus détaillés sur tous les appareils

SLIM Car Comparison.webp

Roblox héberge des millions d'expériences, allant de simples mini-jeux à de vastes mondes ouverts regorgeant de ressources 3D haute fidélité. Notre objectif est de prendre en charge les expériences de plus en plus denses et complexes que les créateurs imaginent sur un large éventail d'appareils, ce qui nécessite des innovations au niveau de notre moteur, de nos systèmes de diffusion de contenu et de notre infrastructure. Les modèles interactifs légers et évolutifs, ou SLIM, font partie d'un effort de développement en plusieurs volets qui permet aux créateurs de concrétiser leurs grandes visions artistiques sans compromettre les performances. 

SLIM permet aux créateurs de générer automatiquement des représentations légères de n'importe quel objet dans une expérience Roblox, en réduisant au minimum le nombre d'appels de dessin, de triangles et d'instances de modèles de données requis par le client pour rendre un monde robuste et fluide. SLIM offre à notre modèle de streaming de nouvelles façons puissantes d'optimiser le contenu, permettant ainsi à un utilisateur disposant d'un PC de jeu haut de gamme et à un utilisateur disposant d'un appareil mobile bas de gamme de partager la même expérience avec la meilleure qualité possible pour leur appareil.

SLIM Scene.webp
The above scene uses far fewer data model instances, triangles, and draw calls with instance streaming and SLIM enabled.

Sans streaming d'instances et SLIM

Avec streaming d'instances et SLIM

Instances du modèle de données client

159 745

92 536

Triangles

20 millions

3,35 millions

Appels de dessin

2 402

1 454

Les deux piliers du streaming : les instances et les ressources

Lorsque vous regardez un film sur votre service de streaming préféré, votre appareil ne télécharge pas l'intégralité du fichier avant que vous ne commenciez à le regarder. Il télécharge juste assez de données pour que vous puissiez commencer immédiatement à regarder, puis télécharge (ou met en mémoire tampon) en continu les quelques secondes suivantes afin qu'il n'y ait aucune interruption dans votre expérience. Si vous regardez du contenu en streaming sur un appareil bas de gamme ou avec une connexion lente, la plateforme s'adapte automatiquement en vous envoyant une version de moindre qualité du contenu, le temps de télécharger suffisamment de données pour diffuser le contenu en haute qualité. 

Roblox utilise un concept similaire pour diffuser du contenu à la volée, mais les données nécessaires pour représenter une simulation 3D haute fidélité posent des défis particuliers. Alors qu’une vidéo présente une chronologie linéaire de contenu visionné depuis une seule perspective, les expériences Roblox consistent en de vastes mondes 3D interactifs regorgeant de nombreux types d’éléments pouvant être visualisés sous de multiples angles contrôlés par l’utilisateur. Ajoutez à cela 151,5 millions d’utilisateurs actifs quotidiens qui jouent, explorent et, au final, diffusent du contenu à partir d’une grande variété d’appareils, et vous obtenez un énorme potentiel d’optimisation de la manière dont le contenu est diffusé et affiché.1

Tout ce qu’un utilisateur voit sur Roblox — une voiture, un arbre, un avatar ou un bâtiment — est représenté par un certain nombre d’instances au sein du moteur. Une voiture utilisable, par exemple, est décomposée en instances pour les pare-chocs, les portes, les roues, etc. Chaque instance est construite dans l’expérience à l’aide de multiples ressources, telles que des maillages 3D, des textures, des animations et des éléments audio.

La quasi-totalité du streaming sur Roblox repose sur deux technologies principales : le streaming d'instances et le streaming de ressources.

  • Le streaming d'instances détermine quelles instances l'appareil d'un utilisateur doit streamer. Il n'est pas nécessaire de streamer des parties de l'expérience que l'utilisateur ne peut pas encore voir ou avec lesquelles il ne peut pas encore interagir. Dans l'exemple ci-dessus, seules les instances représentant les bâtiments proches sont streamées vers le client.
  • Le streaming d'actifs détermine la qualité des instances diffusées. Il n'est pas nécessaire de télécharger une texture 4K haute résolution pour une montagne si éloignée que l'utilisateur ne peut en distinguer les détails fins. Dans l'image ci-dessus, les bâtiments au loin et ceux qui occupent peu d'espace à l'écran utilisent des maillages décimés et des textures de résolution inférieure. 

Le cerveau central de cette opération est un système que nous appelons Harmony, qui surveille les ressources disponibles de chaque utilisateur à chaque image. Harmony ajuste à la fois le streaming des instances et des ressources afin d’offrir la meilleure expérience possible en fonction de la mémoire de l’appareil, de la charge du GPU et du CPU, ainsi que de la bande passante du réseau. Pour un PC de jeu haut de gamme, Harmony règle tout au niveau de qualité le plus élevé. Pour un appareil mobile disposant d’une connexion faible, il réduit automatiquement la qualité afin de garantir une expérience utilisateur fluide.

L'équipe a abordé les technologies sous-jacentes au streaming, au transcodage dans le cloud et à SLIM dans l'épisode 30 du podcast Tech Talks. 

SLIM : Modèles interactifs légers et évolutifs

Le principe de base de SLIM est simple mais puissant : SLIM peut créer automatiquement plusieurs représentations légères et optimisées de n'importe quel objet ou modèle dans l'univers d'un créateur, puis les stocker sur le serveur pour qu'elles puissent être récupérées au moment de l'exécution. Le client de chaque utilisateur peut alors basculer dynamiquement entre le rendu des instances et des ressources d'origine et l'une des représentations SLIM légères, en fonction des ressources disponibles sur l'appareil. 

SLIM utilise deux techniques principales pour générer une représentation allégée :

1. Composition

Tout d'abord, SLIM combine plusieurs parties en un nombre réduit de parties. Au lieu de nécessiter 112 maillages distincts et 24 textures distinctes, la représentation allégée de la voiture ci-dessous pourrait ne nécessiter qu'un seul maillage et quatre textures. Le processus de composition est réglé avec précision pour correspondre à la manière dont le moteur rendra finalement le contenu, éliminant la géométrie invisible au sein d'un objet et réduisant le nombre d'appels de dessin nécessaires pour le rendre.

SLIM Car Comparison.webp

2. Niveau de détail (LoD)

Après avoir composé le modèle, SLIM génère plusieurs versions à différents niveaux de détail. Cela implique de créer des versions du maillage 3D comportant nettement moins de triangles et de générer des textures à des résolutions bien inférieures, comme nous le faisons pour tout maillage ou ressource de texture individuel à l’aide des techniques traditionnelles de LoD. Ces techniques peuvent être encore optimisées lorsqu’elles sont appliquées aux modèles SLIM, car nous disposons des systèmes de coordonnées individuels de chaque instance sous-jacente. Cela nous donne une vision complète de la manière dont le créateur a prévu que chacune de ces ressources soit rendue ensemble. Fort de ces informations, SLIM nous permet de prendre des décisions plus éclairées quant aux endroits où supprimer les détails superflus et ceux où conserver les détails que les utilisateurs remarqueront.

undefined

La bonne représentation au bon moment

Une fois que nous avons créé plusieurs représentations d'un objet, SLIM doit décider laquelle utiliser pour l'appareil d'un utilisateur spécifique ou s'il vaut mieux recourir à des techniques de rendu traditionnelles. Le système divise le monde en trois zones distinctes. Pour visualiser ces zones, il suffit d'imaginer des cercles concentriques de détails s'étendant vers l'extérieur à partir du lecteur.

non défini
Les limites de streaming ne sont pas réellement circulaires. Leur forme dépend de divers facteurs.

Région HH (instances lourdes, rendu lourd)

Dans la région HH, des instances complètes et lourdes sont diffusées en continu depuis le serveur vers le modèle de données client, et le client détermine la représentation spécifique de l'actif à télécharger et à rendre pour chaque instance. La mise à l'échelle peut toujours être réalisée à l'aide de niveaux de détail (LoD) de maillage et de mips de texture dans cette région, mais il n'y a pas de composition. Avant SLIM, c'est ainsi que toutes les instances diffusées en continu dans une expérience étaient rendues. 

Région HL (instances lourdes, rendu léger) 

La région HL se situe entre les régions HH et LL. Dans cette région, le client dispose des instances lourdes dans le modèle de données, mais peut choisir de les rendre soit via le pipeline de rendu complet, soit via le pipeline SLIM. Cette région s'adapte pour assurer une transition fluide entre les régions HH et LL, même si l'utilisateur rencontre une latence réseau. Le point de transition entre les régions HH et HL est dynamique, ce qui permet à Harmony de s'adapter immédiatement à la hausse ou à la baisse en réponse à un pic de ressources dans l'une ou l'autre direction.

Région LL (instances légères, rendu léger) 

Dans la région LL, le client ne diffuse que des représentations ultra-légères des instances nécessaires pour définir un repère de coordonnées pour un modèle SLIM, ainsi que le strict minimum de métadonnées. Seuls les modèles SLIM composites légers sont rendus dans cette région, plutôt que chaque instance et chaque ressource. La région LL nécessite beaucoup moins de triangles et d’appels de dessin, et réduit l’utilisation de mémoire sur l’appareil de l’utilisateur par rapport à la diffusion de chaque instance lourde et à l’utilisation du pipeline de rendu traditionnel.

Cette technique de zone permet au client de rendre l’ensemble du monde visible à tout moment sans supporter le coût de calcul total lié à l’utilisation simultanée de toutes les instances et de tous les actifs lourds. Les objets éloignés sont des représentations légères hautement optimisées, qui sont remplacées par leurs équivalents haute fidélité à mesure que l’utilisateur se rapproche. La capacité de SLIM à créer des composites et des modèles LoD à plusieurs niveaux de détail offre à Harmony davantage de leviers pour optimiser la qualité des actifs en fonction de l’appareil de chaque utilisateur.

Lorsque tous ces éléments s’assemblent, le joueur devrait se sentir complètement immergé et ne remarquer aucun des points de transition ni des niveaux de détail variables.

L'avenir : quelle est la prochaine étape pour SLIM ?

SLIM n’est que la première étape d’un parcours en plusieurs étapes, et nous sommes impatients de voir comment les créateurs intégreront cette technologie dans leurs workflows. Nous envisageons de développer SLIM dans deux directions principales à l’avenir. 

Déterminer ce qui peut encore être optimisé par SLIM 

Nous commençons par les modèles statiques que les créateurs désignent dans Studio, mais à l’avenir, SLIM sera capable d’optimiser certains des modèles les plus complexes sur Roblox : les avatars de la plateforme. Les avatars, avec toutes leurs animations associées, leurs vêtements superposés et leurs accessoires, peuvent constituer une variable imprévisible pour les créateurs. Permettre l’application de SLIM aux avatars signifie que le moteur peut limiter efficacement les ressources utilisées par un modèle d’avatar individuel.

À terme, nous souhaitons donner aux créateurs la possibilité d’utiliser SLIM pour modifier des modèles dynamiques. Imaginez un modèle sur lequel le serveur peut apporter des modifications en temps réel (par exemple, une porte s’ouvre ou une partie est détruite), mais grâce à quelques astuces, le client peut réutiliser la même représentation allégée.

Optimisation du pipeline SLIM 

Maintenant que nous disposons d’un pipeline de bout en bout qui offre au moteur une nouvelle dimension de flexibilité, nous nous attachons également à rendre le pipeline lui-même plus intelligent, plus rapide et plus efficace. Cela inclut :

  • Le ré-atlassage des textures : regrouper intelligemment plusieurs textures de modèle en une seule feuille de textures optimisée.
  • Segmentation automatique : l'utilisation automatique de la compréhension sémantique et spatiale du monde pour identifier les modèles les plus adaptés au SLIM.
  • Représentations plus légères : pour les objets dynamiques moins dépendants de la latence, nous explorons la génération de représentations 2D qui ne nécessitent pratiquement aucune ressource pour être rendues côté client.
  • SLIM hiérarchique : imbriquer les modèles SLIM les uns dans les autres afin que des groupes entiers d’instances puissent être simplifiés et que le moteur puisse choisir dynamiquement entre différents niveaux de granularité — par exemple, d’un simple arbre à une forêt, puis à un continent entier rempli de forêts et d’autres objets.
  • Augmentation de la résolution : aujourd’hui, nous nous concentrons sur l’optimisation vers le bas pour améliorer les performances, mais très bientôt, ce même système nous permettra d’augmenter la résolution des ressources pour le matériel futur tout en préservant l’intention artistique originale du créateur. Cette nouvelle architecture signifie qu’à mesure que notre moteur s’améliore dans la simulation de la réalité, nous pouvons continuellement mettre à niveau les représentations qu’il utilise. 

SLIM, associé à Harmony et au reste de notre architecture de streaming et de diffusion de contenu, représente un bond en avant considérable dans notre vision visant à prendre en charge des mondes plus vastes et plus détaillés pour un plus grand nombre de joueurs. L'intégration étroite de notre moteur, de notre système de diffusion de contenu et de notre infrastructure cloud, combinée à l'énorme base de contenu provenant de millions de créateurs, nous permet de construire des systèmes profondément interconnectés qui améliorent l'expérience dans son ensemble. À mesure que notre moteur s'améliore dans la simulation de la réalité, nous pouvons continuellement mettre à niveau les représentations qu'il utilise. Aujourd'hui, nous nous concentrons sur l'optimisation vers le bas pour les performances, mais très bientôt, ce même système nous permettra d'augmenter la résolution des ressources pour le matériel futur tout en préservant l'intention artistique originale des créateurs.

Nous construisons une plateforme qui non seulement respecte cette intention artistique, mais qui peut également diffuser de manière intelligente et automatique leurs créations à n’importe quel utilisateur sur une grande variété d’appareils, partout où Roblox est disponible. Nous sommes impatients de voir ce que la communauté va créer grâce à elle.

1Au troisième trimestre 2025.