API Game Mode

A API Game Mode permite otimizar o jogo para ter o melhor desempenho ou a maior duração da bateria quando o usuário seleciona o modo jogo correspondente.

Como alternativa, você pode enviar solicitações para intervenções do modo jogo com o objetivo de melhorar o desempenho dos jogos que não estão mais sendo atualizados pelos desenvolvedores.

A API Game Mode e as intervenções estão disponíveis nos seguintes dispositivos:

Cada jogo pode implementar o comportamento da API Game Mode, propor configurações de intervenções do modo jogo para OEMs ou desativar as intervenções do modo jogo.

Configurar

Para usar a API Game Mode no seu jogo, faça o seguinte:

  1. Faça o download e instale o SDK do Android 13.

  2. No arquivo AndroidManifest.xml, declare o app como um jogo definindo o atributo appCategory no elemento <application>:

android:appCategory="game"
  1. Para consultar o modo jogo atual, adicione o seguinte à sua atividade principal:

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
}
Modo jogo compatível Descrição
INCOMPATÍVEL O jogo não declara compatibilidade com a API Game Mode e não é compatível com intervenções do modo jogo.
PADRÃO O usuário não escolheu um modo jogo ou selecionou o modo padrão.
DESEMPENHO Fornece os menores frame rates de latência em troca de fidelidade e duração da bateria reduzidas.
BATERIA Proporciona a maior duração possível da bateria em troca de fidelidade ou frame rates reduzidos.
  1. Adicione o código para consultar o estado do modo jogo na função onResume:

    Exemplo com configuração de modo de bateria pelo usuário

Práticas recomendadas

Se o seu jogo já é compatível com vários objetivos de fidelidade e frame rate, identifique as configurações adequadas para os modos de desempenho e economia de bateria:

  • Para atingir os frame rates máximos do dispositivo, considere pequenas reduções de fidelidade para conseguir frame rates mais altos.

  • Para melhorar a duração da bateria, escolha uma taxa de atualização de tela mais baixa (por exemplo, 30 Hz ou 60 Hz) e use o ritmo de frames para atingir a taxa reduzida.

Em jogos de alta fidelidade, como jogos de tiro em primeira pessoa, arenas multiplayer de batalhas on-line (MOBAs, na sigla em inglês) e jogos de RPG, é necessário se concentrar em alcançar altos frame rates consistentes para maximizar a imersão do usuário.

Para jogos casuais e de alta fidelidade, é preciso oferecer compatibilidade com o modo de economia de bateria para aumentar o tempo de jogo, reduzindo os picos de frame rates.

Declarar suporte a modos de jogo

Para declarar suporte a modos de jogo e substituir qualquer intervenção do modo jogo por OEMs, primeiro adicione a configuração dele ao elemento <application> no arquivo AndroidManifest.xml:

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

Em seguida, crie um arquivo game_mode_config.xml no diretório res/xml/ do projeto com o seguinte conteúdo:

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

Alternar modos de jogo

Para alternar entre os modos de jogo, você pode usar o Painel de jogo (disponível em dispositivos Pixel) ou aplicativos semelhantes fornecidos por OEMs. Como alternativa, é possível usar o comando de shell do Modo jogo durante o desenvolvimento.

Se você estiver usando o Painel de jogo, e o ícone de otimização não aparecer quando o jogo for iniciado, talvez seja necessário fazer upload do app no Google Play Console e instalá-lo pela Play Store. Para informações sobre testes de apps na Play Store, consulte Compartilhar pacotes de apps e APKs internamente.

Atividade do Painel de jogo Figura 1. Painel de jogo sobreposto ao jogo em execução em um dispositivo Pixel.

Na Figura 1, o modo jogo do jogo em execução pode ser mudado no widget "Otimização". Conforme mostrado no widget, o jogo está sendo executado no modo PERFORMANCE.

Durante o desenvolvimento, se você estiver usando um dispositivo sem Painel de jogo e o fabricante não oferecer nenhuma maneira de definir o Modo jogo para cada app, será possível mudar o status dele usando o adb:

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

Exemplo de aplicativo

O exemplo da API Game Mode destaca como você pode otimizar os QPS e renderizar os limites de resolução para economizar aproximadamente 25% de energia nos seus apps.

Próximo

Leia Intervenções do modo jogo para melhorar o desempenho de um jogo quando não for possível fornecer atualizações.