Tło
NEW STATE Mobile to gra typu battle royale firmy Krafton, która została wydana w listopadzie 2021 r. na całym świecie. W pierwszym miesiącu od premiery osiągnęła ponad 45 mln pobrania. KRAFTON, Inc. to grupa niezależnych studiów tworzących gry, które wspólnie tworzą innowacyjne i wciągające rozrywki dla graczy na całym świecie. Firma składa się z PUBG Studios, Bluehole Studio, Striking Distance Studios, RisingWings, Dreamotion i Unknown Worlds, z których każda ma unikalną wiedzę. NEW STATE Mobile zostało stworzone za pomocą Unreal Engine 4. W ramach tego projektu podjęliśmy różne próby zmniejszenia wydzielania ciepła i zużycia baterii spowodowanego wysokim wykorzystaniem procesora graficznego przez charakterystyczne funkcje gry.
Gracze mogą toczyć bitwy na dużych dystansach, więc silnik gry musi być w stanie renderować sceny z dużej odległości. Na polu bitwy znajduje się też wiele roślin, których nadmierne wyświetlanie może znacząco obniżyć wydajność. W tym celu zespół użył Android GPU Inspector (AGI), aby zoptymalizować wykorzystanie GPU w grze i wyeliminować wąskie gardła.
Rysunek 1. Zrzut ekranu z aplikacji NEW STATE Mobile
Rozwiązanie
NEW STATE Mobile używał AGI do uzyskiwania wielu informacji o licznikach GPU i odpowiedniego optymalizowania ich wykorzystania. Dzięki danym profilowania aktywności GPU udostępnionym przez AGI zidentyfikowali niepotrzebne przejścia renderowania. Po zidentyfikowaniu segmentów, które pochłaniały wykorzystanie GPU i przepustowość pamięci, zespół sprawdzał postępy optymalizacji za pomocą licznika GPU i aktywności GPU, aby sprawdzić, czy idzie w odpowiednim kierunku.
Rysunek 2. Zrzut ekranu z aplikacji NEW STATE Mobile
Oto kilka informacji o wydajności gry uzyskanych dzięki AGI:
Optymalizacja podstawowego przejścia: prepass głębi, czyli technologia zwiększająca wykorzystanie Early-z, pomogła zmniejszyć wykorzystanie cieniowania fragmentów. Przetwarzanie głębi zostało użyte w przypadku LOD0, które zajmuje większość przestrzeni ekranu, co minimalizuje obciążenie związane z dodatkowymi wywołaniami rysowania. Korzystanie z 32-bitowego formatu kolorów sceny może też zwiększyć wydajność całego procesu renderowania. Domyślny format SceneColor w Unreal Engine 4 to FloatRGBA, który jest 64-bitowy. Jeśli używasz formatu 32-bitowego, przepustowość pamięci może zostać zmniejszona o połowę.
Zmierzony wpływ: po zastosowaniu prepassu głębi wykorzystanie GPU spadło o 7, 5%. Z powodu prepassu głębokości więcej fragmentów może być wczesnych Z. Czas potrzebny na cieniowanie fragmentów zmniejszył się o 2%. Dzięki 32-bitowemu formatowi scenecolor udało się zmniejszyć wykorzystanie GPU o 5, 3%. Zajętość shaderów zmniejszyła się o 2%, a łączna ilość danych odczytywanych przez GPU z pamięci systemowej zmniejszyła się o 330 MB/s. Ilość danych zapisywanych przez GPU do pamięci systemowej została zmniejszona o 78 MB/s, a czytanie danych z pamięci tekstur – o 43 MB/s.
Optymalizacja cieni: gdy siatki są używane jako źródła cieni, stosowanie wysokiego poziomu szczegółów nie ma większego wpływu na jakość. Zaleca się używanie niskiego poziomu szczegółów poligonów, co pomaga zmniejszyć liczbę trójkątów. W Unreal Engine 4 można używać LOD z małą liczbą wielokątów za pomocą polecenia konsoli „ForceLODShadow”.
Zmierzony wpływ: liczba trójkątów użytych do cieni zmniejszyła się o około 120 tys. jednostek. Dane z licznika GPU w modelu AGI pokazały, że wykorzystanie GPU spadło o około 2%, ilość danych odczytanych z pamięci systemowej przez GPU spadła o 130 MB/s, a zapisane z GPU do pamięci systemowej – o około 23 MB/s.
Automatyczne tworzenie instancji: automatyczne tworzenie instancji, które można stosować zarówno w przypadku optymalizacji w przebiegu i optymalizacji w przebiegu z użyciem obrazu cienia, umożliwia scalanie tych samych poleceń renderowania w czasie wykonywania, a następnie ich jednoczesne renderowanie. Dzięki temu aplikacja mobilna NEWSTATE mogła stosować globalne oświetlenie do poszczególnych obiektów bez utraty wydajności. Automatyczne tworzenie instancji to podstawowa funkcja Unreal Engine 4.
Zmierzony wpływ: liczba wywołań metody draw została zmniejszona o 500. Zmniejszyło to liczbę wywołań do funkcji draw o około 48%. Wykorzystanie karty graficznej spadło o 3,5%. Te pomiary zostały wykonane za pomocą OpenGL.
Ilustracja 3. Dane wewnętrzne przedstawiające zmniejszenie wykorzystania karty graficznej
Wyniki
Dzięki zastosowaniu AGI firma NEW STATE Mobile zmniejszyła wykorzystanie GPU o 22%. Dzięki optymalizacji przejść głębi i cieni wykorzystanie GPU zmniejszyło się odpowiednio o 19% i 3%. Znacznie zmniejszyła się też liczba wywołań funkcji rysowania oraz łączna ilość odczytana i zapisywana przez GPU z pamięci systemowej.
Rozpocznij
Dowiedz się, jak analizować wpływ gry na urządzenia z Androidem, identyfikując problemy z wydajnością i obszary, które należy zoptymalizować za pomocą Inspektora GPU na Androidzie (AGI).