SLIM (Skalowalne Lekkie Interaktywne Modele) to system automatycznej optymalizacji, który generuje lekkie, zoptymalizowane reprezentacje Models i awatarów platformy przy użyciu przetwarzania w chmurze (konwertowanie zasobów na bardziej efektywne formaty). Po włączeniu, SLIM łączy wiele części w mniejszą liczbę wywołań rysowania (komendy renderowania wysyłane do GPU) i generuje wiele poziomów szczegółowości, co pozwala silnikowi inteligentnie wybierać najlepszą reprezentację w zależności od odległości, możliwości urządzenia i dostępnych zasobów.


SLIM oferuje trzy kluczowe korzyści:
- Jakość wizualna— Odległe modele wydają się bardziej szczegółowe niż system poziomów szczegółowości modeli z przeszłości, zachowując większą wierność oryginałowi.
- Spójne przejścia— Wszystkie części w modelu przełączają poziomy szczegółowości jednocześnie, eliminując szokujące przejścia między częściami.
- Wydajność— Złożone siatki dramatycznie redukują wywołania rysowania, liczbę trójkątów i zużycie pamięci, umożliwiając bogatsze sceny na wszystkich poziomach urządzeń.
Zbadaj SLIM w tych opublikowanych grach:


Wymagania wstępne
SLIM wymaga następujących rzeczy:
- StreamingEnabled musi być włączone w obiekcie Workspace. Zobacz także właściwości przesyłania strumieniowego dla powiązanych zalecanych ustawień.
- Miejsce musi być zapisane w Robloxie (nie jako lokalny plik .rbxl), ponieważ SLIM używa przetwarzania w chmurze do generowania zoptymalizowanych zasobów. Jeśli testujesz lokalnie, opublikuj miejsce, a następnie włącz SLIM.
- Team Create musi być włączone dla gry, ponieważ SLIM polega na powiązanych właściwościach do generowania zasobów w chmurze.
Zachowanie techniczne
Gdy publikujesz lub testujesz grę z modelami włączonymi w SLIM, silnik przesyła dane modelu do usługi w chmurze, która generuje zoptymalizowane złożone siatki z wieloma poziomami szczegółowości. W czasie rzeczywistym klienci pobierają te zasoby z CDN, a silnik wybiera odpowiedni poziom szczegółowości w zależności od odległości i możliwości urządzenia, klasyfikując każdy model SLIM w strefy renderowania w zależności od odległości od kamery:

| Zasięg | Zachowanie |
|---|---|
| Pełne instancje przesyłane strumieniowo; tradycyjne renderowanie część po części. | |
| Pełne instancje przesyłane strumieniowo, ale silnik renderuje złożony SLIM, gdy jest to bardziej efektywne. | |
| Instancje przesyłane strumieniowo (istnieje tylko minimalny placeholder w DataModel, nie pełna hierarchia modelu), renderowanie złożonego SLIM. | |
| Minimalny placeholder w DataModel, nie renderowany. |
SLIM dla modeli
SLIM działa najlepiej na modelach, które reprezentują statyczną geometrię świata — budynki, rekwizyty, pojazdy, cechy terenu i inne obiekty środowiskowe, które nie zmieniają się w czasie rzeczywistym. Dodawanie lub usuwanie części, zmiana materiałów lub modyfikowanie geometrii w czasie rzeczywistym uniemożliwia SLIM poprawne renderowanie modelu. Zobacz strukturę modelu dla ogólnych wskazówek dotyczących struktury modelu oraz ograniczenia dla pełnej listy wykluczeń.
Aby włączyć SLIM w modelu, ustaw jego właściwość LevelOfDetail na SLIM w oknie Właściwości.

Gdy SLIM jest ustawione na modelu, silnik:
- Serializuje właściwości związane z renderowaniem modelu (geometria, materiały, tekstury, przekształcenia) do kompaktowej reprezentacji. Obsługiwane typy instancji w modelu to Part, MeshPart, Decal, Texture, SurfaceAppearance, PartOperation, NegateOperation i SpecialMesh.
- Przesyła te dane do usługi przetwarzania w chmurze przy pierwszej publikacji lub grze.
- Usługa w chmurze generuje złożoną siatkę z wieloma poziomami szczegółowości, usuwając ukrytą wewnętrzną geometrię i optymalizując tekstury.
- W czasie rzeczywistym klienci pobierają zoptymalizowany zasób SLIM i renderują go, gdy silnik przesyła oryginalny model lub gdy SLIM jest bardziej efektywne niż pełny model.
Jeśli twoja gra używa ustawienia z przeszłości StreamingMesh dla Model.LevelOfDetail, możesz konwertować pojedyncze modele, wybierając je i zmieniając właściwość w oknie Właściwości, lub możesz zbiorowo konwertować wiele modeli jednocześnie, używając skryptu takiego jak poniższy w Pasku poleceń. Zauważ, że niektóre modele, które działały z StreamingMesh, mogą wymagać dostosowań do SLIM, szczególnie te z nakładającymi się częściami lub złożonymi hierarchiami 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 dla awatarów
Awatary platformy znajdujące się poza aktualnie przesyłanym obszarem nie są domyślnie widoczne. Włączenie awatarów SLIM renderuje standardowe postacie graczy — niezależnie od tego, ile akcesoriów lub warstw odzieży mają — jako lekkie, animowane zamienniki, które zachowują wierność wizualną przy ułamku kosztów renderowania.


Kluczową właściwością specyficzną dla SLIM dla awatarów jest Workspace.EnableSLIMAvatars, która powinna być ustawiona na Enabled w oknie Właściwości, obok LevelOfDetail ustawionego na SLIM w twoich modelach świata, które nie są awatarami.

Z włączonym EnableSLIMAvatars, silnik:
- Renderuje wersję SLIM, gdy rzeczywisty model awatara jest przesyłany strumieniowo.
- Przełącza między reprezentacjami SLIM a pełną rozdzielczością w zależności od dostępnych zasobów, nawet wewnątrz promienia przesyłania strumieniowego.
- Ogranicza animacje SLIM w zależności od ważności sceny i dostępnej przepustowości.
W przeciwieństwie do modelu SLIM, który możesz testować samodzielnie, oddalając się od modelu, aż zostanie przesłany strumieniowo, awatary SLIM wymagają wielu graczy w grze, aby je zaobserwować. Użyj jednego z tych trybów testowych, aby przetestować awatary SLIM:
- Test zespołowy — Dołącz z przyjaciółmi lub alternatywnymi kontami, aby zobaczyć awatary SLIM w odległości.
- Serwer i Klienci — Uruchom dwa lub więcej okien klienta, w których każdy klient wyświetla kopie awatarów, które inni renderują jako SLIM, gdy są w odległości.
Zauważ, że awatary muszą być przetworzone w grze z włączonym SLIM, zanim pojawią się jako SLIM. Jeśli awatary nie renderują się jako SLIM w twoim pierwszym teście, dołącz ponownie do gry po chwili, aby umożliwić zakończenie przetwarzania.
Ograniczenia
| Ograniczenie | Szczegóły |
|---|---|
| Wymagane przesyłanie strumieniowe | SLIM działa tylko z StreamingEnabled ustawionym na true. Bez przesyłania strumieniowego modele kwalifikujące się do SLIM wracają do tradycyjnego renderowania poziomów szczegółowości. |
| Tylko statyczne modele | Model SLIM nie obsługuje modeli modyfikowanych w czasie rzeczywistym (części dodawane/usuwane, właściwości zmieniane) ani modeli, które odtwarzają animacje. |
| Instancje humanoidalne | Silnik wyklucza modele zawierające Humanoid z przetwarzania statycznego modelu SLIM. Użyj awatarów SLIM dla animowanych postaci graczy. |
| Ograniczenia awatarów | Awatary SLIM obsługują tylko postacie graczy R15. Riggi R6, NPC i awatary z niestandardowymi proporcjami wracają do domyślnego renderowania. |
| Zależność od chmury | Usługa w chmurze generuje i przechowuje zasoby SLIM na CDN. Testowanie offline lub lokalne bez opublikowanego miejsca nie produkuje wyników SLIM. |
| Modele o zerowej skali | Silnik wyklucza modele z Scale równym 0 z przetwarzania SLIM. |
| Dostępność platformy | Na platformach, na których SLIM nie jest jeszcze obsługiwany, modele ustawione na SLIM wracają do Disabled. |
Rozwiązywanie problemów
- Sprawdź, czy StreamingEnabled jest ustawione na true.
- Potwierdź, że miejsce jest opublikowane w Robloxie i że Team Create jest włączone.
- Sprawdź, czy LevelOfDetail jest ustawione na SLIM dla modelu.
- Poczekaj 1–2 minuty po pierwszej publikacji, aby zakończyć przetwarzanie w chmurze, a następnie dołącz ponownie.
- Upewnij się, że model nie zawiera instancji Humanoid.
Instancje PartOperation dla modelowania solidnego (unions, intersections, negations) mogą nie renderować się poprawnie w niektórych modelach SLIM. Jeśli unia wydaje się brakująca lub zniekształcona w reprezentacji SLIM, spróbuj oddzielić dotkniętą PartOperation do własnego modelu lub uprościć operację CSG.
Z-fighting może wystąpić, gdy części w oryginalnym modelu mają nakładające się lub współpłaszczyznowe powierzchnie. Aby rozwiązać:
- Przesuń nakładające się części nieco dalej od siebie (nawet 0.01 studów wystarczy).
- Unikaj idealnie płaskich powierzchni między sąsiednimi częściami w tym samym modelu.
SLIM regeneruje mapowania UV (jak tekstury są projektowane na powierzchnie 3D) podczas przetwarzania. Domyślne materiały Roblox mogą wykazywać nieco inne wzory układania w porównaniu do oryginału. Aby złagodzić:
- Użyj niestandardowych tekstur za pomocą SurfaceAppearance dla ważnych powierzchni.
- Grupuj wizualnie powiązane części w tym samym modelu, aby zapewnić spójne teksturowanie.
- Sprawdź, czy Workspace.EnableSLIMAvatars jest ustawione na Enabled.
- Testuj z wieloma klientami, używając trybu testowego Serwer i Klienci (wymaga co najmniej 2 klientów).
- Upewnij się, że awatar używa standardowego lub zaawansowanego rigg R15 bez niestandardowych proporcji.
- Potwierdź, że gra nie modyfikuje awatara po zdarzeniu Player.CharacterAppearanceLoaded.
Animacje całego ciała lub palców mogą czasami pokazywać artefakty wizualne z powodu synchronizacji replikacji kości. To jest znany problem, który jest aktywnie poprawiany. Jeśli problem jest poważny, upewnij się, że skrypty animacji nie modyfikują przekształceń kości poza standardowym procesem animacji.
Panel statystyk renderowania może zgłaszać nieprawidłowe liczby trójkątów, gdy awatary SLIM są włączone. To jest znany błąd raportowania i nie wpływa na rzeczywistą wydajność renderowania.