Interfejs Game Mode API

Interfejs Game Mode API pozwala zoptymalizować grę pod kątem maksymalnej wydajności lub jak najdłuższego czasu pracy na baterii, gdy użytkownik wybierze odpowiedni tryb gry.

Możesz też przesłać prośbę 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ć działanie interfejsu Game Mode API, proponować producentom ustawienia interwencji w trybie gry lub zrezygnować z interwencji w trybie gry.

Skonfiguruj

Aby korzystać w grze z interfejsu Game Mode API:

  1. Pobierz i zainstaluj pakiet SDK do Androida 13.

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

android:appCategory="game"
  1. Wyświetl zapytanie dotyczące bieżącego trybu gry, dodając ten fragment do swojej głównej aktywności:

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 ani nie obsługuje interwencji w trybie gry.
STANDARDOWA Użytkownik nie wybrał trybu gry lub trybu standardowego.
WYKONYWANIE Najniższa liczba klatek na sekundę w zamian za skrócenie czasu pracy na baterii i jakości obrazu.
BATERIA Najdłuższa możliwa żywotność baterii w zamian za niższą jakość obrazu lub mniejszą liczbę klatek.
  1. Dodaj kod, który będzie wysyłać zapytanie dotyczące stanu trybu gry w funkcji onResume:

    Przykład z ustawieniem przez użytkownika opcji „Tryb baterii”

Sprawdzone metody

Jeśli Twoja gra obsługuje już wiele docelowych poziomów jakości i liczby klatek, określ odpowiednie ustawienia wydajności i trybów oszczędzania baterii:

  • Aby konsekwentnie osiągać maksymalną liczbę klatek na urządzeniu, rozważ niewielkie zmniejszenie jakości i skorzystanie z większej liczby klatek.

  • 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 określenia tempa wyświetlania klatek, by obniżyć częstotliwość odświeżania.

W przypadku gier z wysokiej jakości obrazu, takich jak strzelanki FPP, gry wieloosobowe online (MOBA) i gry fabularne (RPG), należy skupić się na uzyskaniu wysokiej stałej liczby klatek, aby zmaksymalizować zaangażowanie użytkownika.

Zarówno w grach wysokiej jakości, jak i w grach rekreacyjnych warto korzystać z trybu oszczędzania baterii, który pozwala wydłużyć czas gry przez zmniejszenie maksymalnej liczby klatek.

Deklarowanie obsługi trybów gry

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

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

Następnie w katalogu res/xml/ projektu utwórz plik game_mode_config.xml 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łącz tryby gry

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

Jeśli korzystasz z panelu gier, a po uruchomieniu gry nie wyświetla się ikona optymalizacji, być może musisz przesłać aplikację do Konsoli Google Play i zainstalować ją ze Sklepu Play. Informacje 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 z nałożonym rozgrywką na urządzeniu Pixel.

Na ilustracji 1 można zmienić tryb gry za pomocą widżetu optymalizacji. Jak widać w widżecie, gra działa obecnie w trybie PERFORMANCE.

Jeśli w fazie tworzenia aplikacji używasz urządzenia bez panelu gier, a producent nie umożliwia ustawienia trybu gry w przypadku każdej aplikacji, stan trybu gry możesz zmienić za pomocą polecenia adb:

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

Przykładowa aplikacja

Przykładowy interfejs Game Mode API wyjaśnia, jak zoptymalizować liczbę klatek na sekundę i ograniczenie rozdzielczości renderowania, aby oszczędzać około 25% energii w aplikacjach.

Dalej

Przeczytaj artykuł Interwencje w trybie gry, aby dowiedzieć się, jak poprawić wydajność gry, gdy nie można zaktualizować gry.