API Game Mode

L'API Modalità di gioco ti consente di ottimizzare il gioco per ottenere le migliori prestazioni o la massima durata della batteria quando l'utente seleziona la modalità di gioco corrispondente.

In alternativa, puoi inviare richieste di interventi della modalità di gioco per migliorare le prestazioni dei giochi che non vengono più aggiornati dagli sviluppatori.

L'API e gli interventi della modalità di gioco sono disponibili su:

Ogni gioco può implementare il comportamento dell'API Modalità di gioco, proporre impostazioni di interventi della modalità di gioco agli OEM o disattivare gli interventi della modalità di gioco.

Configurazione

Per utilizzare l'API Modalità di gioco nel tuo gioco:

  1. Scarica e installa l' SDK Android 13.

  2. Nel file AndroidManifest.xml, dichiara la tua app come gioco impostando l'attributo appCategory nell'elemento <application>:

android:appCategory="game"
  1. Esegui una query sulla modalità di gioco corrente aggiungendo quanto segue all'attività principale:

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
}
Modalità di gioco supportata Descrizione
NON SUPPORTATA Il gioco non dichiara il supporto per l'API Modalità di gioco e non supporta gli interventi della modalità di gioco.
STANDARD L'utente non ha selezionato una modalità di gioco o ha selezionato la modalità standard.
RENDIMENTO Fornisce le frequenze fotogrammi con la latenza più bassa in cambio di una durata della batteria e una fedeltà ridotte.
BATTERIA Fornisce la massima durata possibile della batteria in cambio di una fedeltà o frequenza fotogrammi ridotte.
  1. Aggiungi il codice per eseguire una query sullo stato della modalità di gioco nella onResume funzione:

    Esempio con la modalità Batteria impostata dall&#39;utente

Best practice

Se il tuo gioco supporta già più target di fedeltà e frequenza fotogrammi, devi identificare le impostazioni appropriate per le modalità di rendimento e risparmio energetico:

  • Per ottenere costantemente le frequenze fotogrammi massime del dispositivo, valuta la possibilità di ridurre leggermente la fedeltà per ottenere frequenze fotogrammi più elevate.

  • Per migliorare la durata della batteria, valuta la possibilità di scegliere una frequenza di aggiornamento dello schermo inferiore (ad es. 30 Hz o 60 Hz) e utilizza il frame pacing per indirizzare la frequenza ridotta.

Per i giochi ad alta fedeltà come gli sparatutto in prima persona, le arene di battaglia online multiplayer (MOBA) e i giochi di ruolo (RPG), devi concentrarti sul raggiungimento di frequenze fotogrammi elevate e costanti per massimizzare l'immersione dell'utente.

Sia per i giochi ad alta fedeltà sia per i giochi casual, devi supportare la modalità Risparmio energetico per prolungare il tempo di gioco riducendo le frequenze fotogrammi di picco.

Dichiarare il supporto per le modalità di gioco

Per dichiarare il supporto per le modalità di gioco ed eseguire l'override di eventuali interventi della modalità di gioco da parte di OEM, aggiungi prima la configurazione della modalità di gioco all' <application> elemento nel tuo AndroidManifest.xml file:

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

Poi crea un file game_mode_config.xml nella directory res/xml/ del progetto con i seguenti contenuti:

<?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"
/>

Cambiare modalità di gioco

Per passare da una modalità di gioco all'altra, puoi utilizzare il Pannello di gioco (disponibile sui dispositivi Pixel) o applicazioni simili fornite dagli OEM. In alternativa, puoi utilizzare il comando shell della modalità di gioco durante lo sviluppo.

Se utilizzi il Pannello di gioco e l'icona di ottimizzazione non viene visualizzata all'avvio del gioco, potrebbe essere necessario caricare l'app su Google Play Console e installarla tramite il Play Store. Per informazioni sui test delle app nel Play Store, consulta Condividere internamente app bundle e APK.

Attività del Pannello di gioco. Figura 1. Il Pannello di gioco mostrato in overlay sul gioco in esecuzione su un dispositivo Pixel.

Nella figura 1, la modalità di gioco del gioco in esecuzione può essere modificata dal widget Ottimizzazione. Come mostrato nel widget, il gioco è attualmente in esecuzione in modalità PERFORMANCE.

Durante lo sviluppo, se utilizzi un dispositivo senza il Pannello di gioco e il produttore non fornisce alcun modo per impostare la modalità di gioco per ogni app, puoi modificare lo stato della modalità di gioco tramite adb:

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

Prova l'applicazione

L'esempio dell'API Modalità di gioco mostra come ottimizzare i limiti di FPS e risoluzione di rendering per risparmiare circa il 25% di energia nelle tue app.

Avanti

Leggi Interventi della modalità di gioco per migliorare le prestazioni di un gioco quando non è possibile fornire aggiornamenti del gioco.