A limitação de QPS do Android é uma intervenção do modo jogo que estabiliza o frame rate dos jogos para reduzir o consumo da bateria. A intervenção está disponível no Android 13 ou em versões mais recentes.
À medida que mais dispositivos Android vêm com telas com taxas de atualização mais altas, como 90 Hz e 120 Hz, a maioria dos jogos tenta acompanhar com um ritmo alto de QPS. No entanto, eles geralmente não consideram as preferências do usuário para priorizar o desempenho ou a duração da bateria. Isso causa vários problemas:
Os jogos que não têm ritmo consistente a QPS mais altos acabam tendo QPS instáveis ou desiguais.
Os usuários geralmente não querem um ritmo de QPS mais alto porque a bateria acaba muito rápido.
A limitação de QPS só pode limitar o frame rate. Por exemplo, quando um jogo é executado a 60 QPS, a intervenção de limitação de QPS não pode acelerá-lo para 120 QPS, mas uma limitação de 30 ou 40 QPS é válida.
A limitação de QPS pode resultar em uma redução de energia de até 50% da GPU e 20% do sistema. Ela também ajuda a executar jogos sem ritmo em um frame rate mais suave e menos instável.
Um jogo sem ritmo geralmente tem picos de frame rates mais altos, mas com variação maior de tempo para a renderização do frame. Isso impacta significativamente a forma como o desempenho é percebido pelos jogadores. A intervenção de limitação de QPS só ajuda os jogos sem ritmo a atingir o ritmo de frames do lado da plataforma.
Os resultados da intervenção de limitação de QPS podem variar de acordo com o dispositivo usado, as condições do ambiente e outros fatores.
Interações com implementações de ritmo de frame do app
Quando a implementação do ritmo de frame do app e a limitação de QPS são aplicadas, geralmente o frame rate final é o mais baixo.
Primeiros passos
Esta seção descreve como configurar e usar a limitação de QPS usando o Android Debug Bridge (adb).
Ativar as intervenções do modo jogo
Para ativar as intervenções do modo jogo, use o seguinte comando:
adb shell device_config put game_overlay <PACKAGE_NAME> <CONFIG>
Definir a intervenção de QPS
Para definir a intervenção de limitação de QPS de destino, use o comando device_config
.
Confira um exemplo que define a limitação de QPS para o desempenho e o modo de bateria:
adb shell device_config put game_overlay <PACKAGE_NAME> mode=2,fps=90:mode=3,fps=30
Detalhes dos parâmetros:
mode
[2|3]:2
e3
para desempenho e modo de bateria.fps
[0|30|40|45|60|90|120]: dependendo do dispositivo que você está usando (de 120, 90 ou 60 Hz), recomendamos escolher os frame rates que são divisores da taxa de atualização máxima do dispositivo.0
é o valor padrão.
Confira os frame rates com suporte para cada tipo de tela:
- Telas de 60 Hz: 60 QPS, 30 QPS
- Telas de 90 Hz: 90 QPS, 45 QPS e 30 QPS
- Telas de 120 Hz: 120 QPS, 60 QPS, 40 QPS e 30 QPS
Conferir resultados
Para conferir e analisar os resultados, inspecione o contador QPS ou capture um rastreamento do Perfetto. Veja um exemplo de como visualizar o contador de QPS em um jogo em execução a 120 QPS:
Conferir o contador de QPS
Para verificar as configurações de limitação de QPS, é possível executar o jogo e abrir o contador de QPS no Painel de jogo. Para fazer isso, siga estas instruções:
Ao executar o jogo, deslize para baixo e pressione o ícone do Painel de jogo.
Ative o contador de QPS pressionando o botão QPS.
Feche o Painel de jogo pressionando o botão X. Deslize a seta para a direita para exibir o contador de QPS.
Capturar um rastreamento do Perfetto
Para ter uma visão detalhada do desempenho do jogo, recomendamos fazer um rastreamento do Perfetto. Para saber mais sobre como executar um rastreamento, consulte Guia de início rápido: gravar rastros no Android.
Ao executar um rastreamento, use a fonte de dados android.game_interventions
.
Depois que o trace for concluído, a página do leitor de traces será exibida. Na
barra de navegação, selecione Informações e estatísticas e visualize a lista de modo e intervenção do jogo. Exemplo:
As intervenções de limitação de QPS são mostradas no formato "qps=X", em que X
é
a limitação em um modo de jogo específico. 0
é o valor padrão.