Wir stellen vor: SLIM – Skalierbare, leichte, interaktive Modelle
Wir nutzen leichte Render-Zusammenstellungen, um auf jedem Gerät größere und detailliertere Welten zu erschaffen
Auf Roblox finden sich Millionen von Experiences – von einfachen Minispielen bis hin zu riesigen offenen Welten voller hochauflösender 3D-Objekte. Unser Ziel ist es, die immer ausgefeilteren und komplexeren Experiences, die unsere Creator entwickeln, auf einer Vielzahl an Endgeräten zu unterstützen. Dafür sind Innovationen unserer Engine, unserer Content-Bereitstellungssysteme und unserer Infrastruktur nötig. Skalierbare, leichte, interaktive Modelle, kurz SLIM genannt, sind ein Teil unserer vielschichtigen Strategie, mit der wir Creator die Möglichkeit bieten möchten, ihre genialen künstlerischen Visionen ohne Abstriche bei der Performance umzusetzen.
Mit SLIM können Creator automatisch leichte Darstellungen beliebiger Objekte in einer Roblox-Experience erstellen, denn mithilfe dieser Technik wird die Anzahl an Draw-Calls, Dreiecken und Datenmodell-Instanzen reduziert, die vom Client für das Rendering einer robusten, nahtlosen Welt angefordert werden müssen. Dank SLIM kann unser Streaming-Modell Inhalte auf leistungsstarke, neue Weise optimieren, sodass sowohl Benutzer mit einem High-End-Gaming-PC als auch Benutzer mit einem günstigeren Mobilgerät dieselben Experiences in der höchstmöglichen Auflösung erleben können.
| Ohne Instanz-Streaming und SLIM | Mit Instanz-Streaming und SLIM | |
| Client-Datenmodell-Instanzen | 159.745 | 92.536 |
| Dreiecke | 20 Mio. | 3,35 Mio. |
| Draw-Calls | 2.402 | 1.454 |
Zwei Säulen des Streamings: Instanzen und Objekte
Wenn du einen Film auf deinem bevorzugten Streaming-Dienst ansiehst, lädt dein Gerät nicht die gesamte Datei herunter, bevor du den Film startest. Stattdessen lädt er nur genug Daten herunter, damit du beginnen kannst, den Film anzusehen. Dann werden kontinuierlich die nächsten Sekunden heruntergeladen (oder gebuffert), sodass dir keine Unterbrechungen auffallen. Wenn du auf einem günstigeren Gerät oder mit einer langsameren Verbindung streamst, passt sich die Plattform automatisch an, indem sie den Inhalt mit einer niedrigeren Auflösung sendet, während sie gleichzeitig genügend Daten herunterlädt, um die hochauflösenden Inhalte zu streamen.
Roblox verwendet ein ähnliches Konzept, um Inhalte laufend zu streamen, doch die Daten, die für eine hochauflösende 3D-Simulation nötig sind, stellen eine ganz eigene Herausforderung dar. Ein Video hat nämlich eine lineare Zeitleiste, die nur aus einer Perspektive angesehen wird, während Roblox-Experiences riesige, interaktive 3D-Welten voller verschiedener Objekte enthalten, die aus unterschiedlichsten Perspektiven vom Benutzer angesehen werden können. Dazu kommen 151,5 Millionen tägliche Benutzer, die Inhalte spielen, erkunden und schlussendlich auf verschiedensten Geräten streamen – daher ist ein enormes Potenzial vorhanden, die Art und Weise zu optimieren, wie Inhalte bereitgestellt und angezeigt werden.1
Alles, was ein Benutzer auf Roblox sieht – ein Auto, einen Baum, einen Avatar oder ein Gebäude – wird in der Engine als eine Anzahl von Instanzen repräsentiert. Ein nutzbares Auto wird beispielsweise in Instanzen für die Stoßstangen, Türen, Räder usw. unterteilt. Jede Instanz wird in der Experience aus mehreren Objekten wie 3D-Meshes, Texturen, Animationen und Audio erstellt.
Fast das gesamte Streaming auf Roblox ist in zwei Kerntechnologien unterteilt: Instanz-Streaming und Objekt-Streaming.
-
Das Instanz-Streaming bestimmt, welche Instanzen das Gerät eines Benutzers streamen muss. Es ist nicht erforderlich, Teile der Experience zu streamen, die der Benutzer noch nicht sehen oder mit denen er noch nicht interagieren kann. Im obigen Beispiel werden nur die Instanzen, die die nahegelegenen Gebäude darstellen, in den Client gestreamt.
-
Das Objekt-Streaming bestimmt die Qualität der gestreamten Instanzen. Es ist nicht erforderlich, eine hochauflösende 4K-Textur für einen Berg herunterzuladen, der so weit entfernt ist, dass der Benutzer keine feinen Details erkennen kann. Im obigen Bild verwenden Gebäude in der Ferne und Gebäude, die nur wenig Platz auf dem Bildschirm einnehmen, dezimierte Meshes und Texturen mit niedrigerer Auflösung.
Das zentrale Gehirn für diesen Vorgang ist ein System, das wir Harmony nennen und das die verfügbaren Ressourcen jedes Benutzers in jedem Frame überwacht. Harmony passt sowohl das Instanz- als auch das Objekt-Streaming an, um das beste Erlebnis basierend auf dem Speicher, der GPU- und CPU-Auslastung sowie der Netzwerkbandbreite eines Geräts zu bieten. Auf einem High-End-Gaming-PC sorgt Harmony für höchste Qualität. Auf einem mobilen Gerät mit einer schwachen Verbindung skaliert es automatisch, damit der Benutzer trotzdem ein reibungsloses Erlebnis hat.
In Folge 30 des Podcasts "Tech Talk" spricht das Team über die Technik hinter dem Streaming, Cloud-Transcodierung und SLIM.
SLIM: Skalierbare, leichte, interaktive Modelle
Die Grundidee von SLIM ist so simpel wie stark: SLIM kann automatisch mehrere leichte, optimierte Darstellungen eines jeden Objekts oder Modells in der Welt eines Creators erstellen und diese auf dem Server speichern, damit sie zur Laufzeit abgerufen werden können. Der Client jedes Benutzers kann dann basierend auf den verfügbaren Ressourcen des Geräts dynamisch zwischen dem Rendern der ursprünglichen Instanzen und Objekten oder einer der leichten SLIM-Darstellungen wechseln.
SLIM verwendet zwei Haupttechniken, um eine leichte Darstellung zu generieren:
1. Zusammensetzung
Zunächst kombiniert SLIM mehrere Teile zu weniger Teilen. Anstatt das unten angezeigte Auto aus 112 separaten Meshes und 24 separaten Texturen zusammenstellen, benötigt die einfache Repräsentation nur ein Mesh und vier Texturen. Die Zusammensetzung ist genau darauf abgestimmt, wie die Engine den Inhalt schließlich rendert, wodurch unsichtbare Geometrie innerhalb eines Objekts eliminiert und die Anzahl der für das Rendering erforderlichen Draw-Calls reduziert wird.
2 Detaillierungsgrad (Level of Detail, LoD)
Nach dem Zusammenstellen des Modells generiert SLIM mehrere Versionen mit unterschiedlichen Detaillierungsgraden. Das bedeutet, dass Versionen des 3D-Mesh mit deutlich weniger Dreiecken erstellt und Texturen mit viel niedrigerer Auflösung generiert werden, wie wir es bei jedem einzelnen Mesh- oder Texturobjekt mit herkömmlichen LoD-Techniken tun. Diese Techniken können – auf SLIM-Modelle angewendet – weiter optimiert werden, da wir die einzelnen Koordinatenrahmen jeder zugrunde liegenden Instanz haben. So haben wir den vollständigen Kontext dafür, wie der Creator vorgesehen hat, dass diese Objekte gemeinsam gerendert werden. Mit diesem Wissen können wir mit SLIM fundiertere Entscheidungen darüber treffen, wo unnötige Details entfernt werden sollen und wo die Details, die die Benutzer bemerken, beibehalten werden sollen.
Die richtige Darstellung zur richtigen Zeit
Sobald wir mehrere Darstellungen eines Objekts erstellt haben, muss SLIM entscheiden, welche für das jeweilige Gerät eines Benutzers verwendet werden soll oder ob stattdessen besser herkömmliche Rendertechniken eingesetzt werden. Das System teilt die Welt in drei verschiedene Regionen auf. Eine einfache Möglichkeit, diese Regionen zu visualisieren, ist es, sie sich als konzentrische Kreise vorzustellen, deren Mittelpunkt der Spieler ist.
Streaming-Grenzen sind aber nicht wirklich kreisförmig. Ihre Form hängt von einer Vielzahl von Faktoren ab.
Heavy-Heavy-Region (schwere Instanzen, schweres Rendering)
In einer Heavy-Heavy-Region werden vollständige, schwere Instanzen vom Server zum Client-Datenmodell gestreamt und der Client legt die spezifische Objektdarstellung fest, die für jede Instanz heruntergeladen und gerendert wird. Die Skalierung kann in diesen Regionen weiterhin mit Mesh-LoDs und Texture-Mips erfolgen, aber es gibt keine Zusammensetzung. Vor SLIM wurde jede Instanz, die in eine Experience gestreamt wurde, auf diese Weise gerendert.
Heavy-Light-Region (schwere Instanzen, leichtes Rendering)
Die Heavy-Light-Region liegt zwischen der Heavy-Heavy- und der Light-Light-Region. In dieser Region hat der Client die schweren Instanzen im Datenmodell, kann aber wählen, ob er die vollständige Render-Pipeline oder die SLIM-Pipeline zum Rendern verwenden möchte. Diese Region passt sich an, um einen nahtlosen Übergang zwischen der Heavy-Heavy- und der Light-Light-Region zu gewährleisten, auch wenn es beim Benutzer zu Netzwerklatenz kommt. Der Übergangspunkt zwischen der Heavy-Heavy- und der Heavy-Light-Region ist dynamisch, sodass Harmony als Reaktion auf eine Ressourcenspitze in beide Richtungen sofort nach oben oder unten skalieren kann.
Light-Light-Region (leichte Instanzen, leichtes Rendering)
In der Light-Light-Region streamt der Client nur superleichte Darstellungen von Instanzen, die zur Definition eines Koordinatenrahmens für ein SLIM-Modell erforderlich sind, zusammen mit den minimalen Metadaten. In dieser Region werden nur leichte zusammengesetzte SLIM-Modelle gerendert, nicht jede einzelne Instanz und jedes einzelne Objekt. Die Light-Light-Region erfordert daher weniger Dreiecke sowie Draw-Calls und reduziert die Speichernutzung auf dem Gerät des Benutzers im Vergleich zum Streaming in schweren Instanzen und im Vergleich zur herkömmlichen Render-Pipeline.
Dank dieser Regionstechnik kann der Client die gesamte sichtbare Welt jederzeit rendern, ohne die vollen Rechenkosten für die gleichzeitige Nutzung jeder schweren Instanz und jedes Objekts zu verursachen. Weit entfernte Objekte sind hochoptimierte, leichte Darstellungen, die durch ihre hochauflösenden Pendants ersetzt werden, wenn der Benutzer näher kommt. Da SLIM Zusammensetzungen und mehrere skalierte LoD-Modelle erzeugen kann, hat Harmony mehr Möglichkeiten, die Objektqualität für das jeweilige Gerät des Benutzers zu optimieren.
Wenn alles zusammenkommt, sollte der Spieler vollständig in die Welt eintauchen und keine der Übergangsstellen oder unterschiedlichen Detaillierungsgrade bemerken.
Die Zukunft: Wie geht es mit SLIM weiter?
SLIM ist nur der erste Schritt auf einem mehrstufigen Weg, und wir sind gespannt, wie Creator die Technologie in ihre Arbeitsabläufe integrieren werden. Wir wollen SLIM in Zukunft in zwei Hauptrichtungen weiterentwickeln.
Bestimmen, was noch mit SLIM optimiert werden kann
Wir beginnen mit den statischen Modellen, die Creator in Studio festlegen, aber in Zukunft wird SLIM in der Lage sein, auch sehr komplexe Modelle auf Roblox zu optimieren: Plattform-Avatare. Avatare mit all ihren zugehörigen Animationen, ihrer mehrschichtigen Kleidung und ihren Accessoires können für Creator eine unvorhersehbare Variable sein. Wenn Avatare mit SLIM optimiert werden können, kann die Engine die Ressourcen, die ein einzelnes Avatar-Modell beansprucht, effektiv begrenzen.
Schließlich wollen wir Creator die Möglichkeit geben, SLIM für Änderungen an dynamischen Modellen zu nutzen. Stell dir ein Modell vor, in dem der Server aktiv Änderungen vornehmen kann (z. B. eine Tür öffnet sich oder ein Teil wird zerstört), doch mit einigen cleveren Tricks kann der Client dieselbe leichte Darstellung wiederverwenden.
Optimierung der SLIM-Pipeline
Jetzt, da wir eine End-to-End-Pipeline haben, die der Engine eine neue Dimension der Flexibilität bietet, konzentrieren wir uns auch darauf, die Pipeline selbst intelligenter, schneller und effizienter zu machen. Dazu gehört Folgendes:
-
Textur-Re-Atlasierung: Mehrere Modelltexturen werden intelligent in ein einziges, optimiertes Texturblatt verpackt.
-
Automatische Segmentierung: Das semantische und räumliche Verständnis der Welt wird automatisch verwendet, um die besten SLIM-fähigen Modelle zu identifizieren.
-
Leichtere Darstellungen: Für dynamische Objekte, die weniger latenzabhängig sind, untersuchen wir die Erzeugung von 2D-Darstellungen, die praktisch ressourcenfrei auf dem Client gerendert werden können.
-
Hierarchisches SLIM: SLIM-Modelle werden nacheinander verschachtelt, sodass ganze Gruppen von Instanzen vereinfacht werden können und die Engine dynamisch zwischen Granularitätsstufen wählen kann – z. B. von einem einzelnen Baum über einen Wald bis hin zu einer ganzen Landmasse voller Wälder und anderer Objekte.
-
Up-Rezzing (Hochskalieren): Aktuell konzentrieren wir uns auf die Optimierung der Leistung. Sehr bald wird uns dasselbe System aber auch ermöglichen, die Auflösung von Objekten für zukünftige Hardware zu erhöhen und gleichzeitig die ursprüngliche künstlerische Absicht des Creators beizubehalten. Diese neue Architektur bedeutet, dass wir die Darstellungen, die unsere Engine verwendet, kontinuierlich optimieren können, während sie die Realität immer besser simuliert.
SLIM ist in Kombination mit Harmony und unserer weiteren Streaming- und Content-Bereitstellungsarchitektur ein großer Schritt nach vorn in unserer Vision, umfangreichere und detailliertere Welten für mehr Spieler zu unterstützen. Die enge Integration unserer Engine, der Content-Bereitstellung und der Cloud-Infrastruktur in Verbindung mit der massiven Content-Basis von Millionen von Creator ermöglicht es uns, eng miteinander verbundene Systeme zu entwickeln, die die gesamte Experience verbessern. Während unsere Engine die Realität immer besser simuliert, können wir die Darstellungen, die sie verwendet, kontinuierlich verbessern. Heute konzentrieren wir uns auf die Optimierung der Leistung, aber sehr bald wird uns dasselbe System ermöglichen, die Auflösung von Objekten für zukünftige Hardware zu erhöhen und gleichzeitig die ursprüngliche künstlerische Absicht der Creator beizubehalten.
Wir bauen eine Plattform auf, die nicht nur diese künstlerische Absicht respektiert, sondern auch in der Lage ist, ihre Kreationen intelligent und automatisch jedem Benutzer auf einer Vielzahl von Geräten zur Verfügung zu stellen, auf denen Roblox verfügbar ist. Wir können es kaum erwarten zu sehen, was die Community mit dieser neuen Technik erschaffen wird.
1Stand: Q3 2025.