Optymalizacja twojej gry to proces konfigurowania twoich zasobów i ustawień Studio, aby utrzymać wysoką liczbę klatek na sekundę i poziomy wydajności na urządzeniach z ograniczeniami pamięci i jednostki przetwarzania grafiki (GPU). Proces ten zapewnia, że niemal każdy użytkownik ma takie same doświadczenia w grze i wizualne podczas przeglądania twojego środowiska.
Korzystając z pliku Environment Art - Optimizing .rbxl jako odniesienia, ta sekcja programu nauczania dotyczącego sztuki środowiskowej pokazuje, jak przeglądać i konfigurować plik miejsca dla optymalnej grafiki, w tym wskazówki dotyczące:
- Przeglądania parametrów fizyki i renderowania każdego zasobu, aby potwierdzić, że zachowują pamięć i wydajność silnika.
- Usuwania nadmiarowych tekstur, geometrii lub przezroczystości, które niepotrzebnie zwiększają liczbę obliczeń, które silnik Roblox musi wykonać, aby renderować twoje zasoby.
Podczas gdy silnik Roblox zajmuje się większością pracy związanej z optymalizacją, możesz pomóc w tych wysiłkach optymalizacyjnych, korzystając z Microprofilera, aby zobaczyć, gdzie zajmuje więcej czasu renderowanie konkretnych klatek. Korzystając z tych informacji, możesz podejmować świadome decyzje dotyczące tego, które zasoby wymagają twojej uwagi w odniesieniu do ich parametrów lub nadmiarowej zawartości. Analiza sceny to kolejne potężne narzędzie do sprawdzania wykorzystania zasobów.

Przegląd parametrów fizyki i renderowania
W Zbuduj bibliotekę zasobów nauczyłeś się, jak ważne jest ustawienie parametrów fizyki i renderowania, które pozwalają twoim zasobom zachować wysoką jakość wizualną na urządzeniach z ograniczeniami pamięci i GPU. Jednak podczas konstruowania swojego środowiska powszechne jest dostosowywanie tych parametrów w zależności od kontekstowej pozycji i celu zasobu w twojej grze. Na przykład, wiele roślinności w końcowym przykładzie środowiska laser tag rzuca cienie pomimo kosztów wydajności, ponieważ dodaje to realizmu środowiska.
Gdy modyfikujesz parametry fizyki i renderowania, przydatne jest na końcu procesu rozwoju przeglądanie wszystkich parametrów, aby zobaczyć, gdzie możesz zoptymalizować parametr, zachowując cele estetyczne i wymagania dotyczące rozgrywki. Na przykład, możesz wyłączyć właściwość BasePart.CastShadow dla roślinności w pobliżu krawędzi obszaru rozgrywki, aby zaoszczędzić na wydajności, nie zakłócając rozgrywki ani doświadczenia wizualnego użytkownika.


Usuwanie nieistotnej zawartości
Po przeglądzie parametrów fizyki i renderowania możesz przeglądać same zasoby, aby zobaczyć, gdzie możesz usunąć jakąkolwiek nieistotną zawartość z gry, która nie wpływa na twoją rozgrywkę, taką 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. Następujące sekcje szczegółowo opisują, co możesz zrobić, aby przeglądać tę zawartość i dlaczego pomaga to w wysiłkach optymalizacyjnych.
Usuń zduplikowane tekstury
Podczas przechodzenia od rozwoju swoich zasobów do konstruowania swojego środowiska, powszechne jest iterowanie nad siatkami lub teksturami, gdy odkrywasz, co jest konieczne dla twoich celów estetycznych lub wymagań dotyczących rozgrywki. Jeśli nie przekształcisz swoich zasobów w pakiety, gdy importujesz te iteracje do Studio, tworzysz unikalne identyfikatory zasobów, które silnik Roblox musi odwołać, gdy renderuje twoje zasoby w środowisku.
Na przykład, jeśli zaimportujesz następujące dwa siatki hydrantów przeciwpożarowych do Studio osobno, 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 wykonać silnik, tym większy wpływ na pamięć i wydajność. Z tego powodu ważne jest, aby potwierdzić, że gdy wielokrotnie używasz zasobu, każda instancja tego zasobu używa tego samego identyfikatora zasobu, aby silnik musiał wykonać tylko jedno wywołanie, aby renderować go wielokrotnie.

Optymalizuj geometrię
Jeśli stwierdzisz, że musisz wprowadzić więcej poprawek, aby zwiększyć liczbę klatek na sekundę na różnych urządzeniach, przydatne jest zobaczenie, gdzie możesz zoptymalizować swoją geometrię, poprzez:
- Łączenie grup siatek w jeden zasób.
- Zmniejszenie liczby wielokątów zasobów o złożonej geometrii.
Rozwijając tę pierwszą technikę, każdy unikalny zasób w twojej grze reprezentuje wywołanie rysowania na GPU, w którym wysyła sygnał do GPU, aby wywołać informacje, aby silnik Roblox poprawnie renderował zasób. Im więcej unikalnych zasobów masz, tym więcej wywołań rysowania system musi wykonać. Z tego powodu, jeśli masz grupę siatek, które tworzą większy komponent w twojej grze, możesz je połączyć w narzędziach modelowania zewnętrznego, aby zmniejszyć potrzebę wielu wywołań rysowania.
Aby zilustrować ten punkt, końcowe środowisko laser tag łączy wiele części i siatek, aby stworzyć duże wieże na zewnątrz budynku. Jeśli połączysz wszystkie te indywidualne komponenty razem, możesz stworzyć jeden zasób z tylko jednym identyfikatorem zasobu, a liczba wywołań rysowania zmniejszy się 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ł.
Na przykład, na poniższym obrazie, lewa wieża pozostaje wieloma zasobami pod obiektem Model, a prawa wieża to pojedynczy zasób. Możesz modyfikować każdy komponent 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żyć tę technikę tylko pod koniec rozwoju twojego środowiska, gdy wiesz, gdzie możesz poprawić wydajność, nie wpływając 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 o mniejszej 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, końcowe środowisko laser tag zawiera wiele siatek o różnych poziomach przezroczystości, takich jak roślinność w przestrzeni na zewnątrz, szkło na futurystycznych znakach lub balustradach donic. Gdy kamera widzi wiele półprzezroczystych obiektów, które są przed sobą lub za sobą, silnik Roblox musi renderować nakładające się piksele wielokrotnie, aby uwzględnić przezroczyste obszary. Proces ten nazywa się wysokim przezroczystym nadrysowaniem i ma znaczący wpływ na wydajność.
Na przykład, rozważ następujący widok donicy w przykładowym środowisku. Silnik musi renderować przezroczyste obszary liści między rośliną najbliżej kamery a rośliną najbliżej obszaru na zewnątrz w warstwach, co odpowiada setkom tysięcy nadrysowanych pikseli. Aby złagodzić część tego wpływu, 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 występuje wiele warstw nakładania się, szczególnie w dużych obszarach ekranu.


Gdy skończysz przeglądać całą swoją zawartość, aby upewnić się, że jest optymalna na różnych urządzeniach, twoja gra jest teraz gotowa do publikacji!