Optymalizacja doświadczenia to proces konfigurowania Twoich zasobów oraz ustawień Studio w celu utrzymania wysokiej liczby klatek na sekundę i poziomów wydajności na urządzeniach z ograniczeniami pamięciowymi i graficznymi (GPU). Proces ten zapewnia, że niemal każdy użytkownik ma taką samą rozgrywkę i wizualne doświadczenie podczas przeglądania Twojego środowiska.
Używając pliku Environment Art - Optimizing .rbxl jako odniesienia, ta sekcja programu nauczania w sztuce środowiskowej pokazuje, jak przeglądać i konfigurować plik miejsca, aby uzyskać optymalną grafikę, w tym wskazówki dotyczące:
- Przeglądania parametrów fizyki i renderowania każdego zasobu, aby upewnić się, że zachowują pamięć i wydajność silnika.
- Usuwania nadmiaru tekstur, geometrii lub przezroczystości, które niepotrzebnie zwiększają liczbę obliczeń, które silnik Roblox musi wykonać w celu renderowania Twoich zasobów.
Podczas gdy silnik Roblox zajmuje się większością pracy związanej z optymalizacją, możesz wspierać te wysiłki optymalizacyjne, korzystając z Microprofilera, aby zobaczyć, gdzie zajmuje więcej czasu renderowanie poszczególnych klatek. Korzystając z tych informacji, możesz podejmować świadome decyzje dotyczące tego, które zasoby wymagają Twojej uwagi w zakresie ich parametrów lub nadmiaru treści. Analiza sceny to kolejne potężne narzędzie do sprawdzania użycia zasobów.

Przeglądaj parametry fizyki i renderowania
W Zbierz bibliotekę zasobów nauczyłeś się, jak ważne jest ustawienie parametrów fizyki i renderowania, które pozwolą Twoim zasobom zachować wysoką jakość wizualną na urządzeniach z ograniczeniami pamięciowymi i GPU. Jednak podczas budowy swojego środowiska może być konieczne dostosowanie tych parametrów w zależności od kontekstualnej pozycji i celu zasobu w Twoim doświadczeniu. Na przykład, wiele roślinności w finalnym próbce środowiska laser tag rzuca cienie, pomimo kosztów wydajności, ponieważ dodaje to realizmu środowisku.
Kiedy modyfikujesz parametry fizyki i renderowania, przydatne jest w końcowej fazie procesu dewelopmentu przeglądanie wszystkich parametrów, aby zobaczyć, gdzie możesz zoptymalizować parametr, jednocześnie utrzymując cele estetyczne i wymagania dotyczące rozgrywki. Na przykład możesz wyłączyć właściwość BasePart.CastShadow dla roślinności blisko krawędzi obszaru rozgrywki, aby oszczędzać na wydajności, nie wpływając na rozgrywkę lub wizualne doświadczenie użytkownika.


Usuwanie nieistotnych treści
Po przeglądnięciu swoich parametrów fizyki i renderowania, możesz przejrzeć same zasoby, aby zobaczyć, gdzie możesz usunąć wszelkie nieistotne treści z doświadczenia, które nie wpływają na Twoją rozgrywkę, takie jak identyczne tekstury z różnymi identyfikatorami zasobów, złożona geometria z wieloma wierzchołkami lub przezroczystości, które nakładają się na siebie w zależności od widoku kamery. W następnych sekcjach szczegółowo opisano, co możesz zrobić, aby przeglądać te treści i dlaczego pomaga to w wysiłkach optymalizacyjnych.
Usuń powielone tekstury
W miarę przechodzenia od rozwoju swoich zasobów do budowania swojego środowiska, powszechne jest iterowanie nad siatkami lub teksturami, gdy szukasz tego, co jest potrzebne do osiągnięcia swoich celów estetycznych lub wymagań dotyczących rozgrywki. Jeśli nie zamienisz swoich zasobów na pakiety, importując te iteracje do Studio, tworzysz unikalne identyfikatory zasobów, które silnik Roblox musi odwoływać w trakcie renderowania Twoich zasobów w środowisku.
Na przykład, jeśli miałbyś importować następujące dwie siatki hydrantów przeciwpożarowych do Studio oddzielnie, nawet jeśli są dokładnie takie same pod względem wyglądu, silnik Roblox traktuje je jako dwa obiekty z unikalnymi identyfikatorami zasobów. Im więcej unikalnych wywołań musi dokonać silnik, tym większy wpływ na pamięć i wydajność. Z tego powodu ważne jest, aby upewnić się, że gdy wielokrotnie używasz jednego zasobu, każda instancja tego zasobu używa tego samego identyfikatora zasobu, aby silnik musiał tylko jedno wywołanie, aby renderować go wielokrotnie.

Optymalizuj geometrię
Jeśli odkryjesz, że musisz dokonać więcej dostosowań, aby zwiększyć liczbę klatek na sekundę na różnych urządzeniach, użyteczne jest sprawdzenie, gdzie możesz zoptymalizować swoją geometrię, either:
- Łącząc grupy siatek w pojedynczy zasób.
- Zmniejszając liczbę wielokątów zasobów o złożonej geometrii.
Rozwijając tę pierwszą technikę, każdy unikalny zasób w Twoim doświadczeniu reprezentuje wywołanie rysujące na GPU, w którym wysyła sygnał do GPU, aby zażądał informacji, aby silnik Roblox poprawnie wyrenderował zasób. Im więcej unikalnych zasobów masz, tym więcej wywołań rysujących system musi wykonać. Z tego powodu, jeśli masz grupę siatek, które tworzą większy komponent w Twoim doświadczeniu, możesz połączyć je razem w narzędziach modelowania stron trzecich, aby zmniejszyć potrzebę wielu wywołań rysujących.
Aby zilustrować ten punkt, finalne środowisko próbki laser tag łączy wiele części i siatek, aby stworzyć duże wieże na zewnątrz budynku. Gdybyś połączył wszystkie te indywidualne komponenty w jedną całość, mógłbyś to uczynić jednym zasobem z tylko jednym identyfikatorem zasobu i zredukować liczbę wywołań rysujących z 8 do 1. Jednak ważne jest, aby zauważyć, że ta technika usuwa Twoją zdolność do swobodnej zmiany wizualnych i fizycznych cech każdego komponentu, takich jak jego pozycja czy materiały.
Na przykład na poniższym obrazie lewa wieża pozostaje wieloma zasobami pod obiektem Model, a prawa wieża jest jednym zasobem. Możesz modyfikować każdy składnik lewej wieży indywidualnie, ale gdy modyfikujesz prawą wieżę, na przykład zmieniając jej kolor na czarny, wpływa to na całość obiektu. Dlatego ważne jest, aby rozważać tę technikę tylko na końcu rozwoju swojego środowiska, gdy wiesz, gdzie możesz poprawić wydajność bez wpływania na swoje cele estetyczne.

Rozwijając drugą technikę, zasoby o złożonej geometrii mają więcej wielokątów, co oznacza, że mają więcej wierzchołków, które silnik musi obliczyć podczas renderowania ich wizualnego wyglądu. Oznacza to, że zasoby z mniejszą złożonością i wiernością są mniej kosztowne do renderowania, co prowadzi do poprawy zarówno wydajności, jak i pamięci.
Usuń warstwowe przezroczystości
Aby zapewnić poczucie realizmu w środowisku, finalne środowisko laser tag zawiera wiele siatek z różnymi poziomami przezroczystości, takich jak roślinność w przestrzeni zewnętrznej, szkło na futurystycznych znakach lub balustrady doniczek. Gdy kamera widzi wiele półprzezroczystych obiektów, które są przed lub za sobą, silnik Roblox musi renderować nakładające się piksele wielokrotnie, aby uwzględnić przezroczyste obszary. Proces ten nazywa się niewysokim przezroczystym nadwłasnością (high transparency overdraw) i wiąże się z Wyraźnym wpływem na wydajność.
Na przykład, weź pod uwagę następujący widok doniczki w próbce środowiska. Silnik musi renderować przezroczyste obszary liści między rośliną najbliżej kamery a rośliną najbliżej obszaru zewnętrznego warstwowo, co sprowadza się do setek tysięcy nadwłasnych pikseli. Aby złagodzić nieco ten wpływ, ważne jest, aby przeglądać układ wszystkich półprzezroczystych obiektów w Twoim środowisku i upewnić się, że nie ma zbyt wielu miejsc, gdzie warstwy nakładają się, zwłaszcza w dużych obszarach ekranu.


Gdy skończysz przeglądać wszystkie swoje treści, aby upewnić się, że są optymalne na różnych urządzeniach, Twoje doświadczenie jest teraz gotowe do publikacji!