SLIM (Modelli Interattivi Leggeri Scalabili) è un sistema di ottimizzazione automatica che genera rappresentazioni leggere e ottimizzate di Models e avatar di piattaforma utilizzando la transcodifica basata su cloud (conversione delle risorse in formati più efficienti). Quando abilitato, SLIM combina più parti in meno chiamate di disegno (comandi di rendering inviati alla GPU) e genera più livelli di dettaglio, consentendo al motore di selezionare intelligentemente la migliore rappresentazione in base alla distanza, alla capacità del dispositivo e alle risorse disponibili.


SLIM offre tre vantaggi chiave:
- Qualità Visiva— I modelli distanti appaiono più dettagliati rispetto al sistema legacy di livello di dettaglio, mantenendo una maggiore fedeltà all'originale.
- Transizioni Coerenti— Tutte le parti all'interno di un modello cambiano livello di dettaglio simultaneamente, eliminando transizioni brusche per parte.
- Prestazioni— Le mesh composite riducono drasticamente le chiamate di disegno, il numero di triangoli e l'uso della memoria, consentendo scene più ricche su tutti i livelli di dispositivo.
Esplora SLIM in questi giochi pubblicati:


Requisiti
SLIM richiede quanto segue:
- StreamingEnabled deve essere abilitato sull'oggetto Workspace. Vedi anche proprietà di streaming per le impostazioni consigliate correlate.
- Il luogo deve essere salvato su Roblox (non un file locale .rbxl), poiché SLIM utilizza la transcodifica cloud per generare risorse ottimizzate. Se stai testando localmente, pubblica il luogo e poi abilita SLIM.
- Team Create deve essere abilitato per il gioco, poiché SLIM si basa su proprietà associate per la generazione di risorse cloud.
Comportamento tecnico
Quando pubblichi o fai il playtest di un gioco con modelli abilitati per SLIM, il motore carica i dati del modello su un servizio cloud che genera mesh composite ottimizzate con più livelli di dettaglio. Durante l'esecuzione, i client recuperano queste risorse dal CDN e il motore seleziona il livello di dettaglio appropriato in base alla distanza e alla capacità del dispositivo, classificando ogni modello SLIM in zone di rendering in base alla distanza dalla telecamera:

| Intervallo | Comportamento |
|---|---|
| Istanza completa trasmessa; rendering tradizionale parte per parte. | |
| Istanza completa trasmessa, ma il motore rende la composizione SLIM quando è più efficiente. | |
| Istanze trasmesse (esiste solo un segnaposto minimo nel DataModel, non l'intera gerarchia del modello), rendering della composizione SLIM. | |
| Segnaposto minimo nel DataModel, non reso. |
SLIM per modelli
SLIM funziona meglio su modelli che rappresentano geometria statica del mondo — edifici, oggetti, veicoli, caratteristiche del terreno e altri oggetti ambientali che non cambiano durante l'esecuzione. Aggiungere o rimuovere parti, cambiare materiali o modificare la geometria durante l'esecuzione impedisce a SLIM di rendere correttamente il modello. Vedi struttura del modello per indicazioni generali sulla struttura del modello e limitazioni per l'elenco completo delle esclusioni.
Per abilitare SLIM su un modello, imposta la sua proprietà LevelOfDetail su SLIM nella finestra Proprietà.

Quando SLIM è impostato su un modello, il motore:
- Serializza le proprietà rilevanti per il rendering del modello (geometria, materiali, texture, trasformazioni) in una rappresentazione compatta. I tipi di istanza supportati all'interno del modello includono Part, MeshPart, Decal, Texture, SurfaceAppearance, PartOperation, NegateOperation e SpecialMesh.
- Carica questi dati sul servizio di transcodifica cloud alla prima pubblicazione o esecuzione.
- Il servizio cloud genera una mesh composita con più livelli di dettaglio, rimuovendo la geometria interna nascosta e ottimizzando le texture.
- Durante l'esecuzione, i client recuperano la risorsa SLIM ottimizzata e la rendono quando il motore trasmette il modello originale o quando SLIM è più efficiente rispetto al modello completo.
Se il tuo gioco utilizza l'impostazione legacy StreamingMesh per Model.LevelOfDetail, puoi convertire modelli individuali selezionandoli e cambiando la proprietà nella finestra Proprietà, oppure puoi convertire in batch più modelli contemporaneamente utilizzando uno script come il seguente nella Command Bar. Nota che alcuni modelli che funzionavano con StreamingMesh potrebbero necessitare di aggiustamenti per SLIM, in particolare quelli con parti sovrapposte o gerarchie complesse di PartOperation.
for _, descendant in workspace:GetDescendants() do
if descendant:IsA("Model") and descendant.LevelOfDetail ==
Enum.ModelLevelOfDetail.StreamingMesh then
descendant.LevelOfDetail = Enum.ModelLevelOfDetail.SLIM
end
endSLIM per avatar
Gli avatar di piattaforma al di fuori dell'area attualmente trasmessa non sono visibili per impostazione predefinita. Abilitare gli avatar SLIM rende i personaggi giocanti a rig standard — indipendentemente da quanti accessori o strati di abbigliamento abbiano — come sostituti leggeri e animati che mantengono la fedeltà visiva a una frazione del costo di rendering.


La proprietà chiave specifica di SLIM per gli avatar è Workspace.EnableSLIMAvatars che dovrebbe essere impostata su Enabled nella finestra Proprietà, insieme a LevelOfDetail impostata su SLIM sui tuoi modelli del mondo non avatar.

Con EnableSLIMAvatars abilitato, il motore:
- Rende una versione SLIM quando un modello avatar reale viene trasmesso.
- Scambia tra rappresentazioni SLIM e a piena risoluzione in base alle risorse disponibili, anche all'interno del raggio di streaming.
- Limita le animazioni SLIM in base all'importanza della scena e alla larghezza di banda disponibile.
A differenza del modello SLIM che puoi testare da solo allontanandoti da un modello fino a quando non viene trasmesso, gli avatar SLIM richiedono più giocatori nel gioco per essere osservati. Usa uno di questi modi di test per testare gli avatar SLIM:
- Test di Squadra — Unisciti a amici o account alternativi per vedere gli avatar SLIM a distanza.
- Server e Client — Avvia due o più finestre client in cui ogni client visualizza copie di avatar che gli altri rendono come SLIM quando sono a distanza.
Nota che gli avatar devono essere stati transcodificati in un gioco abilitato per SLIM prima di apparire come SLIM. Se gli avatar non si rendono come SLIM nel tuo primo test, riconnettiti al gioco dopo un momento per consentire il completamento della transcodifica.
Limitazioni
| Limitazione | Dettagli |
|---|---|
| Streaming richiesto | SLIM funziona solo con StreamingEnabled impostato su true. Senza streaming, i modelli idonei a SLIM tornano al rendering tradizionale del livello di dettaglio. |
| Solo modelli statici | Model SLIM non supporta modelli modificati durante l'esecuzione (parti aggiunte/rimosse, proprietà cambiate) o modelli che riproducono animazioni. |
| Istanze Humanoid | Il motore esclude modelli contenenti un Humanoid dal processamento statico model SLIM. Usa avatar SLIM per personaggi giocanti animati. |
| Restrizioni sugli Avatar | SLIM avatars supportano solo personaggi giocanti a rig standard R15. I rig R6, gli NPC e gli avatar con proporzioni personalizzate tornano al rendering predefinito. |
| Dipendenza dal cloud | Il servizio cloud genera e memorizza le risorse SLIM sul CDN. Test offline o locali senza un luogo pubblicato non producono risultati SLIM. |
| Modelli a scala zero | Il motore esclude modelli con un Scale di 0 dal processamento SLIM. |
| Disponibilità della piattaforma | Su piattaforme dove SLIM non è ancora supportato, i modelli impostati su SLIM tornano a Disabled. |
Risoluzione dei problemi
- Verifica che StreamingEnabled sia true.
- Conferma che il luogo sia pubblicato su Roblox e che Team Create sia abilitato.
- Controlla che LevelOfDetail sia impostato su SLIM per il modello.
- Attendi 1–2 minuti dopo la prima pubblicazione affinché la transcodifica cloud si completi, quindi riconnettiti.
- Assicurati che il modello non contenga un'istanza di Humanoid.
Le istanze PartOperation per modellazione solida (unioni, intersezioni, negazioni) potrebbero non rendere correttamente in alcuni modelli SLIM. Se un'unione appare mancante o distorta nella rappresentazione SLIM, prova a separare l'PartOperation interessata in un proprio modello o semplificare l'operazione CSG.
Lo Z-fighting può verificarsi quando le parti nel modello originale hanno facce sovrapposte o coplanari. Per risolvere:
- Sposta le parti sovrapposte leggermente lontano (anche 0.01 stud è sufficiente).
- Evita superfici perfettamente a filo tra parti adiacenti nello stesso modello.
SLIM rigenera le mappature UV (come le texture vengono proiettate sulle superfici 3D) durante la transcodifica. I materiali predefiniti di Roblox potrebbero mostrare modelli di tiling leggermente diversi rispetto all'originale. Per mitigare:
- Usa texture personalizzate tramite SurfaceAppearance per superfici importanti.
- Raggruppa parti visivamente correlate nello stesso modello per garantire una texturizzazione coerente.
- Verifica che Workspace.EnableSLIMAvatars sia impostato su Enabled.
- Testa con più client utilizzando la modalità di test Server e Client (richiede almeno 2 client).
- Assicurati che l'avatar utilizzi un rig standard R15 senza proporzioni personalizzate.
- Conferma che il gioco non modifichi l'avatar dopo l'evento Player.CharacterAppearanceLoaded.
Le animazioni del corpo intero o delle dita potrebbero occasionalmente mostrare artefatti visivi a causa del timing della replicazione delle ossa. Questo è un problema noto in fase di miglioramento attivo. Se il problema è grave, verifica che gli script di animazione non stiano modificando le trasformazioni delle ossa al di fuori del pipeline di animazione standard.
Il pannello delle statistiche di rendering potrebbe riportare conteggi di triangoli errati quando gli avatar SLIM sono abilitati. Questo è un bug di reporting noto e non influisce sulle prestazioni di rendering effettive.