Skip to content

Latest

More results

Presentazione della tecnologia SLIM: Scalable Lightweight Interactive Models (modelli interattivi leggeri e scalabili)

Sfruttare la potenza dei compositi di rendering leggero per costruire mondi più grandi e dettagliati per ogni dispositivo

Roblox ospita milioni di esperienze, che spaziano da semplici mini giochi a vasti open world con asset 3D dettagliati e realistici. Il nostro obiettivo è supportare esperienze sempre più ricche e complesse, ideate dai creatori, su un'ampia gamma di dispositivi, grazie all'innovazione dei nostri sistemi di distribuzione dei contenuti, del motore e dell'infrastruttura. Gli Scalable Lightweight Interactive Models, o SLIM, sono solo una delle tante componenti di un progetto di sviluppo più ampio che consente ai creatori di realizzare le loro visioni artistiche più ambiziose senza sacrificare le prestazioni. 

SLIM permette ai creatori di realizzare in modo automatico rappresentazioni leggere di qualsiasi oggetto all'interno di un'esperienza Roblox, riducendo al minimo il numero di draw call, triangoli e istanze di modelli di dati necessari al client per costruire un mondo fluido e senza soluzione di continuità. SLIM introduce nuove e potenti modalità di ottimizzazione dei contenuti nel nostro modello di streaming, permettendo sia agli utenti con PC da gaming di fascia alta sia a quelli con dispositivi mobili più modesti di vivere la stessa esperienza alla massima qualità grafica supportata dai rispettivi dispositivi.

Scena SLIM.webp
La scena qui sopra utilizza molte meno istanze di modelli di dati, triangoli e draw call con lo streaming di istanze e gli SLIM abilitati.
Senza streaming delle istanze e SLIMCon streaming delle istanze e SLIM
Istanze del modello di dati del client159.74592.536
Triangoli20 milioni3,35 milioni
Draw call2.4021.454

Due pilastri dello streaming: istanze e asset

Quando guardi un film con il tuo servizio di streaming preferito, il tuo dispositivo avvia la riproduzione senza attendere il download completo del file. Si limita a scaricare quei dati che consentono di iniziarne subito la visione e poi continua a scaricare (o memorizzare nel buffer) i secondi successivi per evitare interruzioni dell'esperienza. Se riproduci contenuti in streaming su un dispositivo di fascia bassa o con una connessione lenta, la piattaforma si adatta automaticamente inviandoti una versione di qualità inferiore mentre continua a scaricare dati sufficienti per offrirtene una migliore.

Roblox si basa su approccio analogo per la trasmissione rapida dei contenuti, ma i dati richiesti da una simulazione 3D ad alta fedeltà comportano sfide tecniche di notevole complessità. A differenza di un video, che propone una sequenza lineare di contenuti mostrati da un'unica prospettiva, le esperienze Roblox integrano vasti mondi 3D interattivi, popolati da un'ampia varietà di asset visualizzabili da prospettive multiple controllate dall'utente. A questo scenario si aggiungono 151,5 milioni di utenti giornalieri attivi che giocano, esplorano e, in definitiva, fruiscono di contenuti in streaming da una vasta gamma di dispositivi, evidenziando un enorme potenziale di ottimizzazione dei processi di distribuzione e visualizzazione dei contenuti.1

Tutto quello che un utente vede su Roblox (un'auto, un albero, un avatar o un edificio) è rappresentato da un numero di istanze all'interno del motore. Un'auto utilizzabile, ad esempio, è suddivisa in istanze per paraurti, portiere, ruote e così via. Ciascuna di esse viene generata nell'esperienza mediante più asset, come mesh 3D, texture, animazioni e audio.

Quasi tutto lo streaming su Roblox si basa su due tecnologie principali: streaming di istanze e streaming di asset.

  • Lo streaming di istanze determina quali istanze devono essere trasmesse dal dispositivo di un utente. Come nel caso in cui non è necessario inviare in streaming parti dell'esperienza che l'utente non può ancora vedere o con cui non può ancora interagire. Nell'esempio precedente, solo le istanze che rappresentano gli edifici vicini vengono effettivamente caricate nel client.

  • Lo streaming di asset, invece, determina la qualità delle istanze trasmesse. Ad esempio, evitando di scaricare una texture 4K ad alta risoluzione per una montagna così lontana che l'utente non potrebbe distinguerne i dettagli. Nell'immagine qui sopra, gli edifici in lontananza e quelli che occupano una piccola quantità di spazio sullo schermo utilizzano mesh e texture semplificate a bassa risoluzione. 

Il cervello centrale di questa operazione è un sistema che chiamiamo Harmony, che monitora gli asset disponibili di ogni utente in ogni fotogramma. Harmony regola lo streaming di istanze e asset per fornire la migliore esperienza in base alla memoria di un dispositivo, al carico di GPU e CPU e alla larghezza di banda della rete. Per un PC da gaming di fascia alta, Harmony porta tutto alla massima qualità. Per un dispositivo mobile con una connessione debole, riduce automaticamente le dimensioni per mantenere fluida l'esperienza dell'utente.

Il team parla della tecnologia alla base di streaming, transcodifica cloud e SLIM nell'episodio 30 del podcast Tech Talks.

SLIM: Scalable Lightweight Interactive Models (modelli interattivi leggeri e scalabili)

L'idea alla base di SLIM è semplice ma potente: consentire la creazione automatica di più rappresentazioni leggere e ottimizzate di qualsiasi oggetto o modello presente nel mondo di un creatore e la memorizzazione sul server per un recupero facile in fase di esecuzione. Il client di ogni utente può quindi passare dinamicamente dal rendering delle istanze e degli asset originali a una delle rappresentazioni SLIM leggere, a seconda delle risorse del dispositivo.

SLIM usa due tecniche principali per generare una rappresentazione leggera:

1. Composizione

Per prima cosa, raggruppa più componenti in un numero inferiore di parti. Ad esempio, per rappresentare l'auto sottostante servirebbero 112 mesh e 24 texture separate, mentre la versione leggera potrebbe utilizzare non più di 1 mesh e 4 texture. Il processo di composizione è studiato in modo da adattarsi perfettamente al modo in cui il motore renderizzerà il contenuto, eliminando la geometria invisibile all'interno di un oggetto e riducendo il numero di draw call necessarie per renderizzarlo.

Confronto auto SLIM.webp

2. Livello di dettaglio (LoD)

Dopo la composizione del modello, SLIM genera più versioni a diversi livelli di dettaglio. Ciò significa creare versioni della mesh 3D con un numero significativamente inferiore di triangoli e generare texture a risoluzioni molto più basse, come si fa con qualsiasi singola mesh o texture con le tecniche LoD tradizionali. Queste tecniche possono essere ulteriormente ottimizzate se utilizzate assieme ai modelli SLIM, grazie alla disponibilità dei singoli frame di coordinate di ogni istanza sottostante. Questo ci fornisce il quadro completo di come il creatore intendeva rendere tutti questi asset insieme. Sapendo questo, SLIM ci consente di prendere decisioni più informate su quali dettagli rimuovere e quali mantenere in base alla visualizzazione degli utenti.

non definito

La rappresentazione giusta al momento giusto

Una volta generate più rappresentazioni di un oggetto, SLIM deve stabilire se impiegarne una specifica per un determinato dispositivo di un utente o ricorrere alle tecniche di rendering tradizionali. Il sistema divide il mondo in tre regioni distinte. Un modo facile di comprendere queste regioni è immaginare cerchi concentrici di dettagli che si irradiano a partire dal giocatore.

non definito

I confini dello streaming non sono davvero circolari. La loro forma dipende da una varietà di fattori.

Regione HH (istanze pesanti, rendering pesante)

Nella regione HH, le istanze complete e pesanti vengono trasmesse dal server al modello di dati del client che determina la rappresentazione specifica dell'asset da scaricare e renderizzare per ciascuna istanza. In questa regione, il ridimensionamento può essere ottenuto anche con le tecniche LoD di mesh e le texture mip, ma non c'è composizione. Prima di SLIM, era questo il modo in cui veniva eseguito il rendering di ogni istanza caricata in un'esperienza. 

Regione HL (istanze pesanti, rendering leggero)

La regione HL si trova tra le regioni HH e LL. In questa regione, il modello di dati sul client include le istanze pesanti, ma può scegliere di eseguirne la rappresentazione tramite pipeline completa di rendering o SLIM. Questa regione si adatta per garantire una transizione senza soluzione di continuità tra le regioni HH e LL anche se l'utente riscontra una latenza di rete. Il punto di transizione tra le regioni HH e HL è dinamico, il che consente a Harmony di ridimensionare subito la qualità grafica in risposta a un aumento improvviso di asset in entrambe le direzioni.

Regione LL (istanze leggere, rendering leggero)

Nella regione LL, il client trasmette solo rappresentazioni superleggere delle istanze necessarie per definire un frame di coordinate per un modello SLIM, insieme ai metadati minimi. In questa regione vengono renderizzati solo modelli SLIM composti leggeri, anziché i singoli asset e istanze. La regione LL richiede molti meno triangoli, draw call e riduce l'utilizzo della memoria del dispositivo dell'utente rispetto allo streaming di ogni istanza pesante e all'utilizzo della tradizionale pipeline di rendering.

Questa tecnica per regione consente al client di renderizzare l'intero mondo visibile in ogni momento, senza dover sostenere il costo computazionale completo derivante dall'utilizzo simultaneo di ogni istanza e asset pesante. Gli oggetti lontani sono rappresentazioni altamente ottimizzate e leggere, che vengono sostituite dalle loro controparti ad alta fedeltà man mano che l'utente si avvicina. La capacità di SLIM di creare composizioni e modelli LoD scalati offre a Harmony più leve per ottimizzare la qualità degli asset per il dispositivo di ciascun utente.

Grazie a tutto questo, l'utente può vivere un'esperienza totalmente immersiva e non notare nessuno dei punti di transizione o dei diversi livelli di dettaglio.

Qual è il futuro di SLIM?

SLIM è solo il primo passo di un percorso in più fasi e non vediamo l'ora di scoprire come i creatori integreranno la tecnologia nei loro flussi di lavoro. Stiamo esplorando due principali direzioni per l'espansione futura di SLIM.

Determinare cos'altro può essere ottimizzato con SLIM

Stiamo iniziando con i modelli statici che i creatori realizzano in Studio, ma in futuro SLIM sarà in grado di ottimizzare alcuni dei modelli più complessi su Roblox: gli avatar della piattaforma. Con tutte le animazioni, i vestiti a strati e gli accessori che vi sono associati, gli avatar rappresentano una variabile imprevedibile per i creatori. Consentire a SLIM di gestire gli avatar permetterebbe al motore di limitare in modo efficace gli asset utilizzati da un singolo modello di avatar.

Infine, vogliamo dare ai creatori la possibilità di sfruttare SLIM per effettuare modifiche ai modelli dinamici. Immagina un modello in cui il server può apportare attivamente delle modifiche (ad esempio, una porta che si apre o una parte che viene distrutta), ma con alcuni trucchi intelligenti, il client può riutilizzare la stessa rappresentazione leggera.

Ottimizzare la pipeline SLIM

Ora che disponiamo di una pipeline end-to-end che fornisce al motore una nuova dimensione di flessibilità, ci stiamo concentrando anche sul rendere la pipeline stessa più intelligente, veloce ed efficiente. Questo include:

  • Riorganizzazione dell'atlas delle texture: combinazione intelligente di più texture di modelli in un unico foglio di texture ottimizzato.

  • Segmentazione automatica: utilizzo automatico della comprensione semantica e spaziale del mondo per individuare i modelli SLIM migliori.

  • Rappresentazioni più leggere: per gli oggetti dinamici che dipendono meno dalla latenza, stiamo esplorando la generazione di rappresentazioni 2D praticamente prive di asset da renderizzare sul client.

  • SLIM gerarchico: nidificazione dei modelli SLIM uno dopo l'altro, in modo che interi gruppi di istanze possano essere semplificati e il motore possa selezionare dinamicamente tra i livelli di granularità, ad esempio da un singolo albero a una foresta a un'intera massa continentale piena di foreste e altri oggetti.

  • Up-rezzing: oggi ci concentriamo sull'ottimizzazione al ribasso per migliorare le prestazioni, ma molto presto lo stesso sistema ci permetterà di aumentare la risoluzione degli asset per l'hardware futuro, preservando al contempo l'intento artistico originale del creatore. Questa nuova architettura ci consente di aggiornare continuamente le rappresentazioni che utilizza man mano che il nostro motore migliora nella simulazione della realtà. 

SLIM, in combinazione con Harmony e il resto della nostra architettura di streaming e distribuzione di contenuti, rappresenta un enorme passo avanti nella nostra vision per supportare mondi più ampi e dettagliati, fruibili da un maggior numero di giocatori. La stretta integrazione del nostro motore, della distribuzione dei contenuti e dell'infrastruttura cloud, insieme all'enorme base di contenuti di milioni di creatori, ci consente di costruire sistemi profondamente interconnessi che migliorano l'intera esperienza. Man mano che il nostro motore perfeziona la simulazione della realtà, possiamo aggiornare costantemente le rappresentazioni che utilizza. Oggi ci concentriamo sull'ottimizzazione al ribasso per migliorare le prestazioni, ma molto presto lo stesso sistema ci permetterà di aumentare la risoluzione degli asset per l'hardware futuro, preservando al contempo l'intento artistico originale dei creatori.

Stiamo costruendo una piattaforma che non solo rispetta l'intento artistico dei creatori, ma che può anche distribuire in modo intelligente e automatico le loro creazioni a qualsiasi utente su un'ampia varietà di dispositivi, ovunque Roblox sia disponibile. Non vediamo l'ora di scoprire cosa riuscirà a creare la community.

1Al terzo trimestre del 2025.