Interwencje w trybie gry

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:

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.

  1. 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"
/>
  1. 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: