Interfejs Game Mode API

Interfejs Game Mode API umożliwia optymalizację gry pod kątem najlepszej wydajności lub najdłuższego czasu pracy na baterii, gdy użytkownik wybierze odpowiedni tryb gry.

Możesz też przesyłać prośby o interwencje w trybie gry, aby poprawić wydajność gier, które nie są już aktualizowane przez deweloperów.

Interfejs Game Mode API i interwencje są dostępne na tych urządzeniach:

Każda gra może implementować zachowanie interfejsu Game Mode API, proponować producentom OEM ustawienia interwencji w trybie gry lub zrezygnować z interwencji w trybie gry.

Konfiguracja

Aby używać interfejsu Game Mode API w grze:

  1. Pobierz i zainstaluj pakiet Android 13 SDK.

  2. W pliku AndroidManifest.xml zadeklaruj aplikację jako grę, ustawiając atrybut appCategory w elemencie <application>:

android:appCategory="game"
  1. Aby sprawdzić bieżący tryb gry, dodaj ten kod do głównego działania:

Java

// Only call this for Android 12 and higher devices
if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ) {
  // Get GameManager from SystemService
  GameManager gameManager = Context.getSystemService(GameManager.class);

  // Returns the selected GameMode
  int gameMode = gameManager.getGameMode();
}

Kotlin

// Only call this for Android 12 and higher devices
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
  // Get GameManager from SystemService
  val gameManager: GameManager? = context.getSystemService(Context.GAME_SERVICE) as GameManager?

  // Returns the selected GameMode
  val gameMode = gameManager?.gameMode
}
Obsługiwany tryb gry Opis
NIEOBSŁUGIWANE Gra nie deklaruje obsługi interfejsu Game Mode API i nie obsługuje interwencji w trybie gry.
STANDARD Użytkownik nie wybrał trybu gry lub wybrał tryb standardowy.
WYKONYWANIE Zapewnia najniższe opóźnienie i liczbę klatek na sekundę kosztem krótszego czasu pracy na baterii i niższej jakości.
BATERIA Zapewnia najdłuższy możliwy czas pracy na baterii kosztem niższej jakości lub liczby klatek na sekundę.
  1. Dodaj kod, aby sprawdzić stan trybu gry w funkcji onResume:

    Przykład z ustawieniem użytkownika Tryb baterii

Sprawdzone metody

Jeśli Twoja gra obsługuje już wiele docelowych wartości jakości i liczby klatek na sekundę, musisz określić odpowiednie ustawienia dla trybów wydajności i oszczędzania baterii:

  • Aby stale osiągać maksymalną liczbę klatek na sekundę na urządzeniu, rozważ niewielkie zmniejszenie jakości, aby uzyskać wyższą liczbę klatek na sekundę.

  • Aby wydłużyć czas pracy na baterii, rozważ wybranie niższej częstotliwości odświeżania wyświetlacza (np. 30 Hz lub 60 Hz) i użyj synchronizacji klatek, aby osiągnąć niższą częstotliwość.

W przypadku gier o wysokiej jakości, takich jak strzelanki pierwszoosobowe, gry MOBA i RPG, należy skupić się na osiągnięciu wysokiej i stałej liczby klatek na sekundę, aby zmaksymalizować immersję użytkownika.

Zarówno w przypadku gier o wysokiej jakości, jak i gier casualowych należy obsługiwać tryb oszczędzania baterii, aby wydłużyć czas gry przez zmniejszenie maksymalnej liczby klatek na sekundę.

Deklarowanie obsługi trybów gry

Aby zadeklarować obsługę trybów gry i zastąpić wszelkie interwencje w trybie gry przez producentów OEM, najpierw dodaj konfigurację trybu gry do <application> elementu w pliku AndroidManifest.xml:

<application>
    <meta-data android:name="android.game_mode_config"
               android:resource="@xml/game_mode_config" />
  ...
</application>

Następnie utwórz plik game_mode_config.xml w katalogu res/xml/ projektu z tą zawartością:

<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsBatteryGameMode="true"
    android:supportsPerformanceGameMode="true"
/>

Przełączanie trybów gry

Aby przełączać się między trybami gry, możesz użyć panelu gier (dostępnego na urządzeniach Pixel) lub podobnych aplikacji dostarczonych przez producentów OEM. Podczas programowania możesz też użyć polecenia powłoki trybu gry.

Jeśli używasz panelu gier, a po uruchomieniu gry nie wyświetla się ikona optymalizacji , może być konieczne przesłanie aplikacji do Konsoli Google Play i zainstalowanie jej ze Sklepu Play. Więcej informacji o testowaniu aplikacji w Sklepie Play znajdziesz w artykule Wewnętrzne udostępnianie pakietów aplikacji i plików APK.

Aktywność w panelu gier! Rysunek 1. Panel gier wyświetlany jako nakładka na uruchomioną grę na urządzeniu Pixel.

Na rysunku 1 tryb gry uruchomionej gry można zmienić za pomocą widżetu optymalizacji. Jak widać na widżecie, gra jest obecnie uruchomiona w trybie PERFORMANCE.

Jeśli podczas programowania używasz urządzenia bez panelu gier, a producent nie udostępnia żadnego sposobu ustawienia trybu gry dla każdej aplikacji, możesz zmienić stan trybu gry za pomocą adb:

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

Przykładowa aplikacja

Przykład interfejsu Game Mode API pokazuje, jak zoptymalizować liczbę klatek na sekundę i limity rozdzielczości renderowania, aby zaoszczędzić około 25% energii w aplikacjach.

Dalej

Przeczytaj artykuł Interwencje w trybie gry , aby poprawić wydajność gry, gdy nie można udostępnić jej aktualizacji.