SLIM (Scalable Lightweight Interactive Models) is een automatisch optimalisatiesysteem dat lichte, geoptimaliseerde representaties van Models en platformavatars genereert met behulp van cloud-gebaseerde transcoding (het omzetten van assets naar efficiëntere formaten). Wanneer ingeschakeld, combineert SLIM meerdere onderdelen in minder draw calls (renderopdrachten die naar de GPU worden verzonden) en genereert het meerdere detailniveaus, waardoor de engine intelligent de beste representatie kan selecteren op basis van afstand, apparaatspecificaties en beschikbare middelen.


SLIM biedt drie belangrijke voordelen:
- Visuele kwaliteit— Afstandmodellen lijken gedetailleerder dan het legacy model niveau-van-detail systeem, met een betere trouw aan het origineel.
- Consistente overgangen— Alle onderdelen binnen een model schakelen gelijktijdig detailniveaus, waardoor schokkende per-onderdeel overgangen worden geëlimineerd.
- Prestaties— Composietmesh vermindert dramatisch het aantal draw calls, het aantal driehoeken en het geheugengebruik, waardoor rijkere scènes mogelijk zijn op alle apparaatsniveaus.
Verken SLIM in deze gepubliceerde games:


Vereisten
SLIM vereist het volgende:
- StreamingEnabled moet ingeschakeld zijn op het Workspace object. Zie ook streaming eigenschappen voor gerelateerde aanbevolen instellingen.
- De plaats moet opgeslagen zijn naar Roblox (niet een lokaal .rbxl bestand), aangezien SLIM cloud transcoding gebruikt om geoptimaliseerde assets te genereren. Als je lokaal test, publiceer de plaats en schakel dan SLIM in.
- Team Create moet ingeschakeld zijn voor de game, aangezien SLIM afhankelijk is van bijbehorende eigenschappen voor cloud asset generatie.
Technisch gedrag
Wanneer je een game publiceert of test met SLIM-ingeschakelde modellen, uploadt de engine modelgegevens naar een cloudservice die geoptimaliseerde composietmesh met meerdere detailniveaus genereert. Tijdens runtime halen clients deze assets van de CDN en selecteert de engine het juiste detailniveau op basis van afstand en apparaatspecificaties, waarbij elk SLIM-model wordt geclassificeerd in renderzones op basis van afstand van de camera:

| Bereik | Data Model Status | Rendering |
|---|---|---|
| Volledige instanties gestreamd. | Traditionele part-voor-part rendering. | |
| Volledige instanties gestreamd. | De engine rendert de SLIM composiet wanneer dit efficiënter is. | |
| Instanties gestreamd. Slechts een minimale placeholder bestaat in het DataModel, niet de volledige modelhiërarchie. | SLIM composiet rendering. | |
| Minimale placeholder in het DataModel. | Niet gerenderd. |
SLIM voor modellen
SLIM werkt het beste op modellen die statische wereldgeometrie vertegenwoordigen — gebouwen, props, voertuigen, terreinfeatures en andere omgevingsobjecten die niet veranderen tijdens runtime. Het toevoegen of verwijderen van onderdelen, het wijzigen van materialen of het aanpassen van geometrie tijdens runtime voorkomt dat SLIM het model correct rendert. Zie modelstructuur voor algemene richtlijnen voor modelstructuur en beperkingen voor de volledige lijst van uitsluitingen.
Om SLIM op een model in te schakelen, stel je de LevelOfDetail eigenschap in op SLIM in het Eigenschappen venster.

Wanneer SLIM is ingesteld op een model, doet de engine:
- Serialiseert de rendering-relevante eigenschappen van het model (geometrie, materialen, texturen, transformaties) in een compacte representatie. Ondersteunde instantietypen binnen het model zijn Part, MeshPart, Decal, Texture, SurfaceAppearance, PartOperation, NegateOperation, en SpecialMesh.
- Uploadt deze gegevens naar de cloud transcoding service bij de eerste publicatie of afspelen.
- De cloudservice genereert een gecompositeerde mesh met meerdere detailniveaus, verwijdert verborgen interne geometrie en optimaliseert texturen.
- Tijdens runtime halen clients de geoptimaliseerde SLIM asset op en renderen deze wanneer de engine het originele model streamt of wanneer SLIM efficiënter is dan het volledige model.
Als je game de legacy StreamingMesh instelling voor Model.LevelOfDetail gebruikt, kun je individuele modellen converteren door ze te selecteren en de eigenschap in het Eigenschappen venster te wijzigen, of je kunt meerdere modellen tegelijk batch-converteren met een script zoals het volgende in de Command Bar. Let op dat sommige modellen die werkten met StreamingMesh mogelijk aanpassingen nodig hebben voor SLIM, met name die met overlappende onderdelen of complexe PartOperation hiërarchieën.
for _, descendant in workspace:GetDescendants() do
if descendant:IsA("Model") and descendant.LevelOfDetail ==
Enum.ModelLevelOfDetail.StreamingMesh then
descendant.LevelOfDetail = Enum.ModelLevelOfDetail.SLIM
end
endSLIM voor avatars
Platformavatars buiten het momenteel gestreamde gebied zijn standaard niet zichtbaar. Het inschakelen van SLIM avatars rendert standaard spelerkarakters — ongeacht hoeveel accessoires of kledinglagen ze hebben — als lichte, geanimeerde stand-ins die visuele trouw behouden tegen een fractie van de renderkosten.


De belangrijkste SLIM-specifieke eigenschap voor avatars is Workspace.EnableSLIMAvatars die moet worden ingesteld op Enabled in het Eigenschappen venster, naast LevelOfDetail ingesteld op SLIM op je niet-avatar wereldmodellen.

Met EnableSLIMAvatars ingeschakeld, doet de engine:
- Rendert een SLIM-versie wanneer een daadwerkelijk avatar model streamt.
- Wisselt tussen SLIM en full-resolution representaties op basis van beschikbare middelen, zelfs binnen de streamingradius.
- Beperkt SLIM-animaties op basis van scene belangrijkheid en beschikbare bandbreedte.
In tegenstelling tot model SLIM dat je alleen kunt testen door ver van een model te bewegen totdat het streamt, vereisen SLIM avatars meerdere spelers in de game om te observeren. Gebruik een van deze testmodi om SLIM avatars te testen:
- Team Test — Sluit je aan met vrienden of alternatieve accounts om SLIM avatars op afstand te zien.
- Server en Clients — Start twee of meer clientvensters waarin elke client avatar kopieën weergeeft die de anderen als SLIM renderen wanneer ze op afstand zijn.
Let op dat avatars getranscodeerd moeten zijn in een SLIM-ingeschakelde game voordat ze als SLIM verschijnen. Als avatars niet als SLIM worden gerenderd in je eerste test, sluit dan opnieuw aan na een moment om de transcoding te laten voltooien.
Beperkingen
| Beperking | Details |
|---|---|
| Streaming vereist | SLIM functioneert alleen met StreamingEnabled ingesteld op true. Zonder streaming vallen SLIM-geschikte modellen terug op traditionele niveau-van-detail rendering. |
| Statische modellen alleen | Model SLIM ondersteunt geen modellen die tijdens runtime zijn gewijzigd (onderdelen toegevoegd/verwijderd, eigenschappen gewijzigd) of modellen die animaties afspelen. |
| Humanoid instanties | De engine sluit modellen met een Humanoid uit van statische model SLIM verwerking. Gebruik SLIM avatars voor geanimeerde spelerkarakters. |
| Avatar beperkingen | SLIM avatars ondersteunen alleen R15 spelerkarakters. R6 rigs, NPC's en avatars met aangepaste verhoudingen vallen terug op standaard rendering. |
| Cloud afhankelijkheid | De cloudservice genereert en slaat SLIM-assets op de CDN op. Offline of lokale tests zonder een gepubliceerde plaats produceren geen SLIM-resultaten. |
| Zero-scale modellen | De engine sluit modellen met een Scale van 0 uit van SLIM verwerking. |
| Platform beschikbaarheid | Op platforms waar SLIM nog niet wordt ondersteund, vallen modellen ingesteld op SLIM terug op Disabled. |
Debugging
Om de status van SLIM-modellen beter te begrijpen, biedt Roblox verschillende debug tintmodi in de DebugVisualizations ⟩ SlimTintMode dropdown van de Developer Console. Let op dat dit menu alleen beschikbaar is voor makers die Bewerken rechten voor de game hebben.

Er zijn meerdere tintmodi om uit te kiezen. Zie Enum.SlimTintMode voor de kleurtoewijzingen van elke modus.
LOD kleurt elke mesh op basis van het huidige detailniveau met behulp van een blauw-naar-rood warmtemap. Blauw geeft het laagste detail aan en warmere kleuren geven hoger detail aan.
Je kunt ook SLIM debugvisualisaties in Studio zien door een tintmodus te selecteren uit het Visualisatie Opties menu:

Naast de LOD/DataModelState tintmodi, biedt Studio de TranscoderStatus tintmodus. Tijdens het bewerken is alleen deze tintmodus beschikbaar in het visualisatie-opties menu; tijdens het spelen zijn alle tintmodi beschikbaar. Zie Enum.SlimTranscoderStatus voor de kleurtoewijzingen van elke status.
Probleemoplossing
- Controleer of StreamingEnabled true is.
- Bevestig dat de plaats is gepubliceerd naar Roblox en dat Team Create is ingeschakeld.
- Controleer of LevelOfDetail is ingesteld op SLIM voor het model.
- Wacht 1–2 minuten na de eerste publicatie voor cloud transcoding om te voltooien, sluit dan opnieuw aan.
- Zorg ervoor dat het model geen Humanoid instantie bevat.
PartOperation instanties voor solide modellering (unies, intersecties, negaties) renderen mogelijk niet correct in sommige SLIM-modellen. Als een unie ontbreekt of vervormd lijkt in de SLIM-representatie, probeer dan de aangetaste PartOperation in zijn eigen model te scheiden of de CSG-operatie te vereenvoudigen.
Z-fighting kan optreden wanneer onderdelen in het originele model overlappende of coplanare vlakken hebben. Om dit op te lossen:
- Verplaats overlappende onderdelen iets uit elkaar (zelfs 0.01 studs is voldoende).
- Vermijd perfect vlakke oppervlakken tussen aangrenzende onderdelen in hetzelfde model.
SLIM genereert UV-mapping opnieuw (hoe texturen op 3D-oppervlakken worden geprojecteerd) tijdens transcoding. Standaard Roblox-materialen kunnen iets andere tegelpatronen vertonen in vergelijking met het origineel. Om dit te verminderen:
- Gebruik aangepaste texturen via SurfaceAppearance voor belangrijke oppervlakken.
- Groepeer visueel gerelateerde onderdelen in hetzelfde model om consistente texturering te waarborgen.
- Controleer of Workspace.EnableSLIMAvatars is ingesteld op Enabled.
- Test met meerdere clients met behulp van Server en Clients testmodus (vereist minimaal 2 clients).
- Zorg ervoor dat de avatar een standaard of geavanceerd R15 rig gebruikt zonder aangepaste verhoudingen.
- Bevestig dat de game de avatar niet wijzigt na de Player.CharacterAppearanceLoaded gebeurtenis.
Volledige lichaams- of vingeranimaties kunnen af en toe visuele artefacten vertonen als gevolg van timing van botreplicatie. Dit is een bekend probleem dat actief wordt verbeterd. Als het probleem ernstig is, controleer dan of animatiescripts de bottransformaties niet buiten de standaard animatiepijplijn wijzigen.
Het renderstatistiekenpaneel kan onjuiste driehoekentellingen rapporteren wanneer SLIM avatars zijn ingeschakeld. Dit is een bekende rapportagebug en heeft geen invloed op de werkelijke renderprestaties.