Interwencje w trybie gry

Interwencje w trybie gry to optymalizacje dotyczące konkretnych gier, które zostały wprowadzone przez producentów oryginalnego sprzętu (OEM) w celu poprawy wydajności gier, które nie są już aktualizowane przez deweloperów. Może to obejmować np. te funkcje:

  • Użycie funkcji WindowManager do zmiany rozmiaru bufora.
  • Używanie ANGLE zamiast natywnych sterowników GLES.

Możesz uzyskać pomoc dotyczącą korzystania z interfejsu Game Mode API, aby zastąpić interwencje w trybie gry oferowane przez producenta OEM.

Interfejs API trybu gry i interwencje są dostępne w tych usługach:

Każda gra może:

  • Zaimplementuj zachowanie interfejsu Game Mode API,
  • zaproponować OEM-om ustawienia interwencji w trybie gry.
  • wyraźnie zrezygnować z interwencji trybu gry.

Tło

W tej sekcji opisujemy, jak działają interwencje w trybie gry, i jak zoptymalizować grę pod kątem każdego trybu.

Zmiana rozmiaru bufora podręcznego przez WindowManager

Interwencja polegająca na zmianie rozmiaru bufora wstecznego przez WindowManager może zmniejszyć obciążenie karty graficznej urządzenia. Może to też zmniejszyć zużycie baterii, gdy gra jest uruchamiana z doceloną liczbą klatek na sekundę.

Włączenie funkcji zmiany rozmiaru może spowodować zmniejszenie wykorzystania GPU nawet o 30% i ogólnego zużycia energii przez system o 10%. 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.

W nieskończonej grze, która jest powiązana z GPU, prawdopodobnie będzie wyższa częstotliwość klatek przy zmniejszonym obciążeniu GPU.

Zdecydowanie zalecamy, aby wszystkie gry były dobrze zsynchronizowane, ponieważ nierówna częstotliwość wyświetlania klatek znacząco wpływa na to, jak użytkownicy postrzegają wydajność.

Ograniczanie liczby klatek na sekundę

Ograniczanie liczby klatek na sekundę w Androidzie to interwencja w trybie gry, która pomaga uruchamiać gry z bardziej stabilną liczbą klatek na sekundę, aby zmniejszyć zużycie baterii. Ta interwencja jest dostępna w Androidzie 13 lub nowszym. Więcej informacji znajdziesz w artykule Omówienie ograniczania liczby klatek na sekundę.

Ocena interwencji w trybie gry

W tej sekcji używamy polecenia adb.

Konfigurowanie trybów

Zanim przetestujesz interwencje w trybie gry, musisz wyłączyć tryby gry w pliku konfiguracyjnym trybu gry aplikacji. W przeciwnym razie platforma je pominie 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) Tworzenie kopii zapasowej istniejącej konfiguracji urządzenia

W przypadku urządzeń Pixel lub innych może istnieć wcześniej skonfigurowana interwencja dotycząca gier w konfiguracji urządzenia. Aby wysłać zapytanie o konfigurację, użyj tego polecenia:

adb shell device_config get game_overlay <PACKAGE_NAME>

Jeśli zapytanie zwróci wartość null, zignoruj wcześniejszą konfigurację. W przeciwnym razie zapisz go i przywróć po zakończeniu oceny.

Ocena interwencji

Aby ocenić interwencję polegającą na zmianie rozmiaru bufora podręcznego WindowManager, użyj tego polecenia, aby ustawić różne wartości zmiany rozmiaru bufora WindowManager w różnych trybach gry.

adb shell device_config put game_overlay <PACKAGE_NAME>
mode=2,downscaleFactor=0.9:mode=3,downscaleFactor=0.5

W tym przykładzie mode=2 to „Wydajność”, a mode=3 to „Tryb oszczędzania baterii”. Wartość downscaleFactor jest podana jako procent, który ma zastosowanie do ustawienia zmiany rozmiaru (np. 0,7 to 70%, a 0,8 to 80%). Zmiana rozmiaru o 90% (0,9) jest prawie niezauważalna, natomiast zmiana o 50% (0,5) jest znacząca.

Ostrzeżenie: w Androidzie 12 rozmiar procesów podrzędnych może nie być prawidłowo zmieniany. W szczególności sprawdź, czy toasty i wyskakujące okienka są renderowane prawidłowo. Zalecamy ograniczenie ustawienia zmiany rozmiaru do co najmniej 70%.

Po skonfigurowaniu nowych wartości rozmiaru przełącz się między trybami gry, aby sprawdzić, jak na grę wpływa interwencja WindowManagera w zakresie zmiany rozmiaru bufora podrzędnego:

adb shell cmd game mode [standard|performance|battery] <PACKAGE_NAME>

Po każdym wybraniu trybu gry uruchom ponownie grę. Interwencja polegająca na zmniejszeniu rozdzielczości wymaga ponownego uruchomienia aplikacji.

Rezygnacja z interwencji

Możesz określić, czy interwencja ma być stosowana w Twojej grze, rezygnując z interwencji. Każda interwencja ma własne ustawienie rezygnacji.

  1. Ten sam plik konfiguracji XML, który służy do włączania i wyłączania udziału w Programie testów gry, jest też używany do konfigurowania ustawień 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"
/>
  1. Aby zrezygnować z użycia reklam, musisz ponownie skompilować i przesłać grę.

Domyślnie będą używane interwencje ustawione przez producentów oryginalnego sprzętu (OEM), chyba że wyraźnie zrezygnujesz z ich używania w swojej grze.

Materiały

Więcej informacji o mierzeniu i optymalizacji skuteczności gry: