O Android 15 define uma taxa de atualização padrão de 60 Hz para jogos, otimizando o consumo de energia. Para desbloquear taxas de quadros mais altas, como 120 QPS, agora é necessário solicitá-las explicitamente usando a API Frame Rate ou a biblioteca Swappy.
No entanto, o sistema pode substituir essa solicitação com base em fatores como o nível da bateria ou a temperatura do dispositivo. Embora taxas de atualização mais altas melhorem a suavidade visual, elas também exigem mais energia e geram mais calor. Portanto, é fundamental oferecer aos usuários a opção de escolher a taxa de atualização preferida e monitorar cuidadosamente a performance para garantir uma experiência equilibrada.
Usar a setFrameRate() API
A API setFrameRate() permite que os desenvolvedores de jogos usem uma taxa de atualização de tela
específica. Há duas etapas para fazer isso:
- Verificar a compatibilidade do dispositivo e da versão do Android.
- Solicitar QPS alto usando
setFrameRate().
Verificar a compatibilidade do dispositivo e da versão do Android:
Use os métodos Display.getSupportedModes() para determinar se o dispositivo
oferece suporte a 90 Hz, 120 Hz ou outras taxas de atualização. Se o dispositivo estiver limitado a 60 Hz, não será possível exceder esse limite.
Kotlin
val display = windowManager.defaultDisplay
val supportedModes = display.supportedModes
for (mode in supportedModes) {
Log.d("DisplayInfo", "Supported mode: ${mode.physicalWidth}x${mode.physicalHeight}, ${mode.refreshRate}Hz")
}
Solicitar QPS alto
Invoque setFrameRate() quando o loop de renderização começar, durante a inicialização da janela do jogo
ou quando o QPS de destino precisar mudar a taxa de atualização da tela.
Mesmo que você solicite uma taxa mais alta, o sistema ainda poderá limitar a taxa de atualização a 60 Hz devido a fatores como o modo de economia de energia ou a limitação térmica. Se a performance de renderização do jogo não atingir o QPS de destino, solicitar uma taxa de atualização mais alta poderá consumir energia desnecessária e aumentar a temperatura do dispositivo.
O snippet a seguir demonstra como evitar uma taxa de atualização muito alta com a API setFrameRate().
Kotlin
val targetFps = 120f
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.setFrameRate(
targetFps,
Window.FrameRateCompatibility.FRAME_RATE_COMPATIBILITY_FIXED_SOURCE,
0
)
}
A página Framerate fornece informações mais detalhadas para leitura.
Usar a biblioteca Frame Pacing
A biblioteca Frame Pacing, ou Swappy, é uma biblioteca de código aberto projetada para
simplificar o gerenciamento do VSync e o agendamento de frames em mecanismos de jogos Android C/C++.
Essa ferramenta simplifica o processo de otimização das taxas de atualização, atuando como uma camada de abstração de nível superior em funcionalidades como
setFrameRate(). Além disso, a Swappy oferece recursos extras que podem melhorar a suavidade e a performance geral do jogo.
A página Swappy oferece informações mais detalhadas.
Outras dicas para melhores resultados
A seção a seguir apresenta várias dicas importantes:
- Troca dinâmica de frame rate.
- Monitoramento de performance.
- Oferecer opções de QPS com base na taxa máxima de atualização da tela.
Troca dinâmica de frame rate
Para otimizar a performance e o consumo de energia, implemente a troca dinâmica de frame rate no jogo. Essa técnica permite fazer a transição perfeita entre taxas de atualização mais altas, como 120 Hz, para uma jogabilidade mais suave durante cenas exigentes, e taxas mais baixas, como 60 Hz, durante momentos menos intensos ou quando a duração da bateria é uma preocupação ou o destino é abaixo de 60 QPS. A execução constante a 120 Hz pode levar à geração excessiva de calor e ao consumo elevado da bateria, resultando em uma experiência negativa do usuário. Ao ajustar de forma inteligente a taxa de atualização com base em a carga de renderização atual e nas condições do dispositivo, você pode encontrar um equilíbrio entre a fidelidade visual e a eficiência energética.
Monitoramento de performance
Para garantir que o jogo tenha uma performance ideal em taxas de atualização mais altas, integre ferramentas de monitoramento de performance, como um contador de frames ou uma sobreposição de performance. Essas ferramentas fornecem feedback em tempo real sobre a taxa de quadros real do jogo, permitindo que você verifique se está atingindo consistentemente o QPS de destino de 120.
Se a taxa de quadros variar significativamente, considere segmentar uma taxa de quadros mais baixa e possível no dispositivo. Isso pode oferecer uma experiência mais suave sem os problemas de performance que podem ocorrer ao tentar atingir a taxa de atualização mais alta.
Oferecer opções de QPS com base na taxa máxima de atualização da tela
O jogo precisa detectar a taxa máxima de atualização da tela com suporte no dispositivo atual, como 60 Hz, 90 Hz ou 120 Hz, e limitar as configurações de QPS de acordo. Por exemplo, se o dispositivo oferecer suporte apenas a até 60 Hz, é recomendável desativar todas as opções acima de 60 QPS nas configurações do jogo para evitar confundir o jogador.