Treści na tej stronie zostały przetłumaczone przy użyciu sztucznej inteligencji (AI) lub technologii tłumaczenia maszynowego i mogą zawierać błędy.

Skip to content

Przedstawiamy SLIM: skalowalne, lekkie modele interaktywne

Wykorzystanie możliwości lekkich kompozytów renderujących do tworzenia większych i bardziej szczegółowych światów na każdym urządzeniu

SLIM Car Comparison.webp

Roblox oferuje miliony wrażeń, od prostych minigier po rozległe otwarte światy pełne wysokiej jakości zasobów 3D. Naszym celem jest wspieranie coraz bardziej rozbudowanych i złożonych doświadczeń, które twórcy wyobrażają sobie na szerokiej gamie urządzeń użytkowników, co wymaga innowacji w naszym silniku, systemach dostarczania treści i infrastrukturze. Scalable Lightweight Interactive Models, czyli SLIM, to jeden z elementów wieloetapowego projektu, który umożliwia twórcom realizację ich wielkich artystycznych wizji bez utraty wydajności. 

SLIM pozwala twórcom automatycznie tworzyć lekkie reprezentacje dowolnego obiektu w doświadczeniu Roblox, minimalizując liczbę wywołań rysowania, trójkątów i instancji modeli danych wymaganych przez klienta do renderowania solidnego, płynnego świata. SLIM zapewnia naszemu modelowi strumieniowania nowe, potężne sposoby optymalizacji treści, umożliwiając użytkownikowi z wysokiej klasy komputerem do gier oraz użytkownikowi z urządzeniem mobilnym niższej klasy dzielenie się tym samym doświadczeniem z najwyższą wiernością, jaką może obsłużyć ich urządzenie.

SLIM Scene.webp
W powyższej scenie wykorzystano znacznie mniej instancji modelu danych, trójkątów i wywołań rysowania dzięki włączeniu strumieniowania instancji i SLIM.

Bez strumieniowania instancji i SLIM

Z przesyłaniem instancji i SLIM

Instancje modelu danych klienta

159 745

92 536

Trójkąty

20 mln

3,35 mln

Wywołania rysowania

2 402

1 454

Dwa filary streamingu: instancje i zasoby

Kiedy oglądasz film w swojej ulubionej usłudze strumieniowej, Twoje urządzenie nie pobiera całego pliku przed rozpoczęciem oglądania. Pobiera tylko tyle danych, ile potrzeba, abyś mógł od razu zacząć oglądać, a następnie w sposób ciągły pobiera (lub buforuje) kolejne sekundy, dzięki czemu nie ma żadnych przerw w oglądaniu. Jeśli korzystasz ze streamingu na urządzeniu o niższej klasy lub przy wolnym połączeniu, platforma automatycznie dostosowuje się, wysyłając wersję treści o niższej jakości, podczas gdy pobiera wystarczającą ilość danych, aby zapewnić streaming treści o wysokiej jakości. 

Roblox wykorzystuje podobną koncepcję do strumieniowego przesyłania treści w locie, ale dane wymagane do przedstawienia symulacji 3D o wysokiej jakości stanowią osobne wyzwanie. Podczas gdy film ma liniową oś czasu treści oglądanej z jednej perspektywy, doświadczenia w Roblox obejmują rozległe, interaktywne światy 3D pełne wielu rodzajów zasobów, które można oglądać z wielu perspektyw kontrolowanych przez użytkownika. Dodajmy do tego 151,5 mln aktywnych użytkowników dziennie, którzy grają, eksplorują i ostatecznie przesyłają strumieniowo treści z szerokiej gamy urządzeń, a otrzymamy ogromny potencjał do optymalizacji sposobu dostarczania i wyświetlania treści.1

Wszystko, co użytkownik widzi w Roblox — samochód, drzewo, awatar czy budynek — jest reprezentowane w silniku jako szereg instancji. Na przykład samochód, którym można jeździć, jest podzielony na instancje zderzaków, drzwi, kół i tak dalej. Każda instancja jest tworzona w ramach doświadczenia przy użyciu wielu zasobów, takich jak siatki 3D, tekstury, animacje i dźwięk.

Prawie całe przesyłanie strumieniowe w Roblox dzieli się na dwie podstawowe technologie: przesyłanie strumieniowe instancji i przesyłanie strumieniowe zasobów.

  • Strumieniowanie instancji określa, które instancje urządzenie użytkownika musi strumieniować. Nie ma potrzeby strumieniowania części środowiska, których użytkownik jeszcze nie widzi lub z którymi nie może wchodzić w interakcję. W powyższym przykładzie do klienta strumieniowane są tylko instancje reprezentujące pobliskie budynki.
  • Strumieniowanie zasobów określa jakość strumieniowanych instancji. Nie ma potrzeby pobierania tekstury 4K o wysokiej rozdzielczości dla góry tak odległej, że użytkownik nie jest w stanie dostrzec drobnych szczegółów. Na powyższym obrazku budynki w oddali oraz budynki zajmujące niewielką część ekranu wykorzystują siatki o zmniejszonej gęstości i tekstury o niższej rozdzielczości. 

Centralnym mózgiem tej operacji jest system, który nazywamy Harmony, który monitoruje dostępne zasoby każdego użytkownika w każdej klatce. Harmony dostosowuje zarówno strumieniowanie instancji, jak i zasobów, aby zapewnić najlepsze wrażenia w oparciu o pamięć urządzenia, obciążenie procesora graficznego i procesora oraz przepustowość sieci. W przypadku wysokiej klasy komputera do gier Harmony ustawia wszystko na najwyższą jakość. W przypadku urządzenia mobilnego ze słabym połączeniem automatycznie zmniejsza jakość, aby zapewnić płynne wrażenia użytkownika.

Zespół omówił technologię stojącą za strumieniowaniem, transkodowaniem w chmurze i SLIM w 30. odcinku podcastu Tech Talks. 

SLIM: Skalowalne, lekkie modele interaktywne

Podstawowa idea SLIM jest prosta, ale potężna: SLIM może automatycznie tworzyć wiele lekkich, zoptymalizowanych reprezentacji dowolnego obiektu lub modelu w świecie twórcy i przechowywać je na serwerze w celu pobrania w czasie wykonywania. Klient każdego użytkownika może następnie dynamicznie przełączać się między renderowaniem oryginalnych instancji i zasobów a jedną z lekkich reprezentacji SLIM, w zależności od dostępnych zasobów urządzenia. 

SLIM wykorzystuje dwie główne techniki do generowania lekkich reprezentacji:

1. Kompozycja

Po pierwsze, SLIM łączy wiele części w mniejszą liczbę części. Zamiast samochodu poniżej, który wymaga 112 oddzielnych siatek i 24 oddzielnych tekstur, jego lekka reprezentacja może wymagać tylko jednej siatki i czterech tekstur. Proces kompozycji jest precyzyjnie dostrojony, aby dopasować się do tego, jak silnik ostatecznie wyrenderuje zawartość, eliminując niewidoczną geometrię w obiekcie i zmniejszając liczbę wywołań rysowania niezbędnych do jego renderowania.

SLIM Car Comparison.webp

2. Poziom szczegółowości (LoD)

Po skomponowaniu modelu SLIM generuje wiele wersji o różnych poziomach szczegółowości. Oznacza to tworzenie wersji siatki 3D ze znacznie mniejszą liczbą trójkątów i generowanie tekstur w znacznie niższej rozdzielczości, tak jak robimy to w przypadku każdej pojedynczej siatki lub tekstury przy użyciu tradycyjnych technik LoD. Techniki te można dodatkowo zoptymalizować w przypadku modeli SLIM, ponieważ dysponujemy indywidualnymi układami współrzędnych każdej z instancji bazowych. Daje nam to pełny kontekst tego, w jaki sposób twórca zamierzał renderować wszystkie te zasoby razem. Dzięki tej wiedzy SLIM pozwala nam podejmować bardziej świadome decyzje dotyczące tego, gdzie usunąć zbędne szczegóły, a gdzie zachować te, które użytkownicy zauważą.

undefined

Odpowiednia reprezentacja we właściwym czasie

Po utworzeniu wielu reprezentacji obiektu SLIM musi zdecydować, której z nich użyć dla konkretnego urządzenia użytkownika lub czy zamiast tego zastosować tradycyjne techniki renderowania. System dzieli świat na trzy odrębne regiony. Prostym sposobem wyobrażenia sobie tych regionów jest wyobrażenie sobie koncentrycznych okręgów szczegółowości rozciągających się na zewnątrz od odtwarzacza.

niezdefiniowane
Granice strumieniowania nie są w rzeczywistości okrągłe. Ich kształt zależy od wielu czynników.

Region HH (instancje o dużej objętości, renderowanie o dużej objętości)

W regionie HH pełne, ciężkie instancje są przesyłane strumieniowo z serwera do modelu danych klienta, a klient określa konkretną reprezentację zasobu do pobrania i renderowania dla każdej instancji. W tym regionie skalowanie można nadal osiągnąć za pomocą poziomów szczegółowości siatki (LoD) i miipów tekstur, ale nie ma kompozycji. Przed wprowadzeniem SLIM w ten sposób renderowano każdą instancję przesyłaną strumieniowo do doświadczenia. 

Region HL (instancje o dużej objętości, renderowanie o małej objętości) 

Region HL znajduje się pomiędzy regionami HH i LL. W tym regionie klient posiada instancje o dużej objętości w modelu danych, ale może wybrać renderowanie przy użyciu pełnego potoku renderowania lub potoku SLIM. Region ten dostosowuje się, aby zapewnić płynne przejście między regionami HH i LL, nawet jeśli użytkownik napotka opóźnienia sieciowe. Punkt przejścia między regionami HH i HL jest dynamiczny, co pozwala Harmony na natychmiastowe skalowanie w górę lub w dół w odpowiedzi na skokowe zapotrzebowanie na zasoby w dowolnym kierunku.

Region LL (instancje lekkie, renderowanie lekkie) 

W regionie LL klient przesyła strumieniowo jedynie bardzo lekkie reprezentacje instancji niezbędne do zdefiniowania układu współrzędnych dla modelu SLIM, wraz z absolutnym minimum metadanych. W tym regionie renderowane są wyłącznie lekkie, złożone modele SLIM, a nie każda pojedyncza instancja i zasób. Region LL wymaga znacznie mniejszej liczby trójkątów i wywołań rysowania oraz zmniejsza zużycie pamięci na urządzeniu użytkownika w porównaniu z przesyłaniem strumieniowym każdej instancji o dużej objętości i wykorzystaniem tradycyjnego potoku renderowania.

Ta technika regionowa pozwala klientowi renderować cały widoczny świat przez cały czas bez ponoszenia pełnych kosztów obliczeniowych związanych z jednoczesnym wykorzystaniem każdej ciężkiej instancji i zasobu. Obiekty znajdujące się daleko są wysoce zoptymalizowanymi, lekkimi reprezentacjami, które są zastępowane przez ich wierne odpowiedniki w miarę zbliżania się użytkownika. Zdolność SLIM do tworzenia kompozycji i wielu skalowanych modeli LoD daje Harmony więcej możliwości optymalizacji jakości zasobów dla urządzenia każdego użytkownika.

Gdy wszystko się połączy, gracz powinien poczuć się całkowicie zanurzony w świecie gry i nie zauważyć żadnych punktów przejściowych ani różnic w poziomie szczegółowości.

Przyszłość: dokąd zmierza SLIM?

SLIM to dopiero pierwszy krok w wieloetapowej podróży i nie możemy się doczekać, aby zobaczyć, jak twórcy wdrożą tę technologię do swoich procesów pracy. Rozważamy rozszerzenie SLIM w przyszłości w dwóch głównych kierunkach. 

Określenie, co jeszcze można poddać SLIM 

Zaczynamy od modeli statycznych, które twórcy wyznaczają w Studio, ale w przyszłości SLIM będzie w stanie zoptymalizować jedne z najbardziej złożonych modeli w Roblox: awatary platformowe. Awatary, wraz ze wszystkimi powiązanymi animacjami, warstwowymi ubraniami i akcesoriami, mogą stanowić nieprzewidywalną zmienną dla twórców. Umożliwienie zastosowania SLIM do awatarów oznacza, że silnik może skutecznie ograniczyć zasoby wykorzystywane przez poszczególne modele awatarów.

Ostatecznie chcemy dać twórcom możliwość wykorzystania SLIM do wprowadzania zmian w modelach dynamicznych. Wyobraź sobie model, w którym serwer może aktywnie wprowadzać zmiany (np. otwierają się drzwi lub część zostaje zniszczona), ale dzięki kilku sprytnym sztuczkom klient może ponownie wykorzystać tę samą lekką reprezentację.

Optymalizacja potoku SLIM 

Teraz, gdy dysponujemy kompleksowym potokiem, który zapewnia silnikowi nowy wymiar elastyczności, skupiamy się również na uczynieniu samego potoku inteligentniejszym, szybszym i bardziej wydajnym. Obejmuje to:

  • Ponowne tworzenie atlasów tekstur: inteligentne pakowanie wielu tekstur modelu w jeden, zoptymalizowany arkusz tekstur.
  • Automatyczną segmentację: automatyczne wykorzystanie semantycznego i przestrzennego zrozumienia świata w celu identyfikacji modeli najlepiej nadających się do przetworzenia przez SLIM.
  • Lżejsze reprezentacje: w przypadku obiektów dynamicznych, które są mniej zależne od opóźnień, badamy możliwość generowania reprezentacji 2D, których renderowanie na kliencie praktycznie nie wymaga zasobów.
  • Hierarchiczny SLIM: zagnieżdżanie modeli SLIM jeden po drugim, tak aby całe grupy instancji mogły zostać uproszczone, a silnik mógł dynamicznie wybierać między poziomami szczegółowości — np. od pojedynczego drzewa, przez las, aż po cały ląd pełen lasów i innych obiektów.
  • Zwiększanie rozdzielczości: Obecnie skupiamy się na optymalizacji w dół pod kątem wydajności, ale już wkrótce ten sam system pozwoli nam zwiększyć rozdzielczość zasobów dla przyszłego sprzętu, zachowując jednocześnie oryginalną intencję artystyczną twórcy. Ta nowa architektura oznacza, że w miarę jak nasz silnik staje się coraz lepszy w symulowaniu rzeczywistości, możemy stale ulepszać wykorzystywane przez niego reprezentacje. 

SLIM, w połączeniu z Harmony i resztą naszej architektury strumieniowania i dostarczania treści, stanowi ogromny krok naprzód w naszej wizji wspierania bardziej rozległych i szczegółowych światów dla większej liczby graczy. Ścisła integracja naszego silnika, dostarczania treści i infrastruktury chmurowej w połączeniu z ogromną bazą treści od milionów twórców pozwala nam budować głęboko połączone systemy, które poprawiają całe doświadczenie. W miarę jak nasz silnik coraz lepiej symuluje rzeczywistość, możemy stale ulepszać wykorzystywane przez niego reprezentacje. Obecnie skupiamy się na optymalizacji pod kątem wydajności, ale już wkrótce ten sam system pozwoli nam zwiększyć rozdzielczość zasobów pod kątem przyszłego sprzętu, zachowując jednocześnie oryginalne zamierzenia artystyczne twórców.

Tworzymy platformę, która nie tylko szanuje te intencje artystyczne, ale także może inteligentnie i automatycznie dostarczać ich dzieła do każdego użytkownika na szerokiej gamie urządzeń w dowolnym miejscu, gdzie dostępna jest platforma Roblox. Nie możemy się doczekać, aby zobaczyć, co społeczność z tego stworzy.

1Stan na III kwartał 2025 r.