Interwencje w trybie gry to optymalizacje związane z grą, które są wprowadzane przez producentów oryginalnego sprzętu (OEM), aby poprawić wydajność gier, które nie są już aktualizowane przez deweloperów. Na przykład:
- Użycie zmiany rozmiaru bufora wstecznego w WindowManager.
- Używam ANGLE zamiast natywnych sterowników GLES.
Możesz zwrócić się do zespołu pomocy ds. gier i zarządzać interfejsem Game Mode API, który zastępuje interwencje w trybie gry określone przez OEM.
Interfejs Game Mode API i interwencje są dostępne na tych urządzeniach:
- wybranych urządzeniach z Androidem 12,
- urządzeń z Androidem 13 lub nowszym;
Każda gra może:
- zaimplementować zachowanie interfejsu Game Mode API,
- oferować producentom OEM ustawienia interwencji w trybie gry;
- Wyraźnie zrezygnuj z interwencji w trybie gry.
Tło
W tej sekcji opisujemy, jak działają interwencje w trybie gry i jak zoptymalizować grę pod kątem każdego z nich.
Zmiana rozmiaru bufora wstecznego w WindowManager
Interwencja zmiany rozmiaru bufora wstecznego WindowManager może zmniejszyć obciążenie GPU urządzenia. Może też zmniejszyć zużycie baterii, gdy gra jest grana z docelową liczbą klatek.
Włączenie zmiany rozmiaru może spowodować zmniejszenie nawet o 30% GPU i 10% ogólnego zużycia energii przez system. Wyniki mogą się różnić w zależności od używanego urządzenia, warunków środowiskowych i innych czynników, takich jak jednoczesne przetwarzanie danych.
Gry o swobodnym tempie i połączone z GPU mogą prawdopodobnie uzyskać większą liczbę klatek przy mniejszym obciążeniu GPU.
Zdecydowanie zalecamy, aby wszystkie gry miały dobre tempo, ponieważ nierównomierne liczby klatek znacząco wpływają na postrzeganie wydajności użytkowników.
Ograniczanie liczby klatek na sekundę
Ograniczanie liczby klatek na sekundę na Androidzie to interwencja trybu gry, która pomaga rozgrywce działać ze stabilną liczbą klatek, co zmniejsza zużycie baterii. Interwencja jest dostępna na Androida 13 i nowszych. Więcej informacji znajdziesz w omówieniu ograniczania liczby klatek na sekundę.
Ocena interwencji w trybie gry
W tej sekcji używa się polecenia adb.
Skonfiguruj tryby
Przed przetestowaniem interwencji trybu gry musisz zrezygnować z trybów gry w pliku konfiguracyjnym trybu gry. W przeciwnym razie platforma je ominie i uwzględni tylko optymalizacje w grze.
<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
xmlns:android="http://schemas.android.com/apk/res/android"
android:supportsBatteryGameMode="false"
android:supportsPerformanceGameMode="false"
/>
(Opcjonalnie) Utwórz kopię zapasową istniejącej konfiguracji urządzenia
W przypadku Pixela i innych urządzeń w konfiguracji urządzenia może być już obecna konfiguracja interwencji w grze. Możesz przesłać zapytanie dotyczące konfiguracji za pomocą polecenia:
adb shell device_config get game_overlay <PACKAGE_NAME>
Jeśli zapytanie zwraca wartość null
, zignoruj istniejącą konfigurację. W przeciwnym razie zapisz go
i przywróć po dokonaniu oceny.
Ocena interwencji
Aby samodzielnie ocenić interwencję zmiany rozmiaru bufora WindowManagera, ustaw różne wartości rozmiaru bufora WindowManagera w różnych trybach gry za pomocą tego polecenia.
adb shell device_config put game_overlay <PACKAGE_NAME>
mode=2,downscaleFactor=0.9:mode=3,downscaleFactor=0.5
W powyższym przykładzie mode=2
to „Wydajność”, a mode=3
– „Oszczędzanie baterii”. Wartość downscaleFactor
jest określona jako wartość procentowa odpowiadająca ustawieniu zmiany rozmiaru (np. 0,7 oznacza 70%, a 0,8 – 80%). Zmiana rozmiaru wynosząca 90% (0,9) jest prawie niezauważalna, a 50% (0,5) jest znacząca.
Ostrzeżenie: w Androidzie 12 rozmiar procesów podrzędnych może nie być prawidłowo zmieniany. Zwróć szczególną uwagę na to, aby tosty i wyskakujące okienka renderowały się poprawnie. Zalecamy ograniczenie zmiany rozmiaru do co najmniej 70%.
Po skonfigurowaniu nowych opcji zmiany rozmiaru przełączaj się między trybami gry, aby sprawdzić, jak na Twoją grę wpływa interwencja zmiany rozmiaru bufora wstecznego WindowManagera:
adb shell cmd game mode [standard|performance|battery] <PACKAGE_NAME>
Pamiętaj, aby ponownie uruchamiać grę po każdym wybranym trybie gry. Taka operacja wymaga ponownego uruchomienia aplikacji.
Zrezygnuj z interwencji
Aby określić, czy w Twojej grze zostanie zastosowana interwencja, możesz zrezygnować. Każda interwencja ma własne ustawienie rezygnacji.
- Ten sam plik XML konfiguracji, który służy do kontrolowania włączania i wyłączania trybów gry, jest też używany w ustawieniach interwencji:
<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
xmlns:android="http://schemas.android.com/apk/res/android"
android:allowGameDownscaling="false"
android:allowGameFpsOverride="false"
/>
- Aby z niej zrezygnować, utwórz grę ponownie i prześlij ją jeszcze raz.
Domyślnie zastosowane zostaną interwencje określone przez producentów oryginalnego sprzętu (OEM), chyba że wyraźnie zrezygnujesz z korzystania z nich w grze.
Zasoby
Więcej informacji o mierzeniu i optymalizowaniu wydajności gier:
Programy profilujące – analizuj wykorzystanie procesora i wywołania graficzne.
Android GPU Inspector – grafika profilu na Androidzie.
Biblioteka Android Frame Pacing Library – pomóż grom z biblioteki OpenGL i Vulkan uzyskać płynne renderowanie i poprawne tempo renderowania klatek.
Android Performance Tuner – narzędzie do pomiaru i optymalizacji liczby klatek i grafiki na urządzeniach z Androidem na dużą skalę.
Energy Profiler – określa, gdzie aplikacja zużywa więcej energii, niż jest to konieczne.