Introdução ao Android Dynamic Performance Framework (ADPF) no Unreal Engine

O Android Dynamic Performance Framework (ADPF) é uma ferramenta poderosa do Google para desenvolvedores que querem otimizar o desempenho dos apps. Por meio das APIs térmicas, o ADPF fornece informações em tempo real sobre o estado térmico do dispositivo, que é usado para ajustar as configurações gráficas no aplicativo.

Para fins de pesquisa, a Arm desenvolveu uma demonstração usando o Unreal Engine e o ADPF para investigar como o ADPF é usado para otimizar o desempenho do jogo.

O ADPF monitora o status térmico, com as qualidades gráficas sendo ajustadas no mecanismo de jogo de acordo com isso.

Pensando nos desenvolvedores, o objetivo é permitir que os usuários joguem por mais tempo sem afetar a experiência de jogo e o consumo de energia do dispositivo.

Antes de começar

Antes de analisar a demonstração em mais detalhes, é importante destacar a documentação oficial do Google sobre o ADPF. Esta documentação é um recurso valioso que oferece insights e orientações detalhadas sobre como usar o ADPF.

No entanto, para quem prefere o aprendizado personalizável, o repositório de exemplo de ADPF contém exemplos práticos de implementação de ADPF em apps Android.

Ajuste das configurações de gráficos

No contexto do Unreal Engine, podemos ajustar as configurações de gráficos de forma dinâmica para manter o desempenho.

Usamos o Thermal State Monitor e a API Thermal Headroom no ADPF para monitorar a limitação térmica. É possível ajustar as configurações de qualidade, como a qualidade de sombra, de reflexão e de textura, à medida que o dispositivo começa a ser limitado.

As seguintes configurações de qualidade gráfica no Unreal Engine são usadas para modificar várias configurações:

  • ViewDistanceQuality
  • ShadowQuality
  • GlobalIlluminationQuality
  • ReflectionQuality
  • AntiAliasingQuality
  • TextureQuality
  • VisualEffectQuality
  • PostProcessingQuality
  • FoliageQuality
  • ShadingQuality
  • OverallScalabilityLevel

Testes reais

A Arm cria nossos próprios jogos de demonstração, que são usados para pesquisar gráficos para dispositivos móveis e tecnologias de jogos. Este ano, testamos o ADPF em uma delas, a demonstração da SteelArms.

O SteelArms tem diferentes níveis de intensidade gráfica e uma carga de trabalho substancial de CPU. Ele foi criado para ser como os jogos modernos para dispositivos móveis, para que possamos modelar o comportamento do jogo em smartphones atuais. Isso também nos permite testar como diferentes tecnologias podem funcionar em um jogo em dispositivos móveis com processadores Arm.

Resultados

Figura 1:comparação da tela cheia do SteelArms com e sem o ADPF.

As imagens anteriores mostram a diferença entre a melhor qualidade (Cinemática) e a pior (Baixa) quando o ADPF é ativado para ajustar as configurações gráficas. Essa mudança é gradual e não é notada pelos usuários durante o jogo.

Figura 2. Jogo com integração de ADPF: tela dividida.

Uma tela dividida com as configurações de gráficos mais altas à esquerda (robô azul) e as mais baixas à direita (robô vermelho).

Figura 3. Jogo com integração de ADPF: comparação lado a lado dos detalhes.
Figura 4:jogo com integração do ADPF: lado a lado.

Nas figuras 3 e 4 anteriores, a mesma visualização do robô pode ser vista lado a lado. Se você olhar mais de perto, vai notar que as configurações gráficas ajustadas pelo uso do ADPF são mostradas. Você notou o chão do ringue, o ombro do robô, as cordas do ringue e a multidão? Todas elas parecem ter uma qualidade um pouco menor, o que foi feito usando o ADPF.

Quando o throttling era iminente, esses efeitos foram reduzidos na demonstração do SteelArms. É difícil identificar essas pequenas reduções no pós-processamento e nos efeitos visuais. Além disso, os usuários geralmente não percebem esses elementos ao jogar. Isso significa que você pode manter a maior parte da experiência visual do jogo sem afetar a experiência de jogo. Você pode fazer tudo isso mantendo o desempenho de energia do jogo e a duração da bateria do dispositivo.

Como mencionado anteriormente, para fins de demonstração, estamos comparando as imagens com as configurações de qualidade mais alta e mais baixa. É por isso que a diferença ainda pode ser vista quando observada com cuidado. No entanto, quando redimensionado durante o jogo, é difícil para o usuário perceber, mantendo uma experiência de jogo estável.

Resultados

Figura 5:comparações de QPS, temperatura do dispositivo, estado térmico e headroom quando o ADPF está ativado/desativado. Melhoria de 57% nas taxas de frames

O dispositivo evita o superaquecimento e fica dentro de 1,0 margem térmica.

Consumo de energia

Figura 6:comparação do consumo de energia com o ADPF ativado/desativado

Resultados do ADPF

Os resultados da ADPF ativada e desativada podem ser vistos nas figuras mostradas anteriormente. Mostrando que há uma diferença na taxa de frames do jogo e no consumo de energia das cores. Até 57% de melhoria na taxa de frames é observada quando o ADPF está ativado. Quando o ADPF está desativado, a GPU consome uma quantidade significativa de energia. O núcleo grande da CPU tem picos de energia consistentes com a carga de trabalho da GPU. À medida que ele se atualiza com a quantidade de processamento que precisa fazer. Em comparação, quando o ADPF está ativado, o núcleo grande da CPU responde ao throttling e reduz o consumo de energia geral de todos os núcleos no dispositivo.

Conclusão

O ADPF pode melhorar significativamente o consumo de energia dos jogos. Isso significa mais tempo de jogo para os jogadores, com maior duração da bateria e temperatura mais baixa para o dispositivo em uso. Do ponto de vista do desenvolvedor, o ADPF mantém a taxa de frames correta do jogo. Além de dar a eles a flexibilidade de reduzir as configurações de qualidade e ainda oferecer ao usuário uma ótima experiência de jogo.

Dispositivos mais novos e mais antigos podem se beneficiar do uso do ADPF. Isso permite que os jogos sejam executados em um alto padrão em gerações anteriores de dispositivos sem trabalho adicional de otimização.