Criação de perfis de desempenho

A criação de perfis e o ajuste de performance são tarefas complexas que parecem mais uma arte do que uma ciência. As muitas partes móveis que precisam estar perfeitamente sincronizadas em um jogo, combinadas com a complexidade de uma determinada cena, podem dificultar a compreensão e o isolamento de problemas. No ChromeOS, muitas ferramentas são projetadas para chipsets ARM. Confira algumas dicas para acelerar o processo.

Ao otimizar o desempenho do jogo no ChromeOS, é importante lembrar que os problemas de desempenho subjacentes são compartilhados em todos os dispositivos, e as melhorias beneficiam o desempenho e a duração da bateria para todos os usuários. O ChromeOS, com tendência a telas maiores e dispositivos de entrada de computador, pode apenas apresentar certos problemas com mais facilidade. Por exemplo, um algoritmo de carregamento de textura ineficiente pode "funcionar bem" em dispositivos móveis de última geração, mas não conseguir acompanhar um Chromebook com uma tela 4K. Melhorar o algoritmo vai melhorar o jogo em todos os dispositivos.

Se você não conhece o processo de criação de perfis, uma boa abordagem geral é:

  1. Determine se a performance é limitada por:
    • CPU
    • GPU
    • Outro: entrada/disco/rede
  2. Tente isolar a causa principal
  3. Tente otimizar
  4. Repetir

Na maioria dos casos, os jogos se mostram "limitados pela CPU" ou "limitados pela GPU". Usando as dicas e ferramentas de criação de perfil abaixo, tente determinar onde o sistema está "gastando seu tempo" em cada frame. Por exemplo, se demorar muito para calcular e carregar os vértices antes de a GPU começar a renderizar, o jogo poderá estar limitado pela CPU. Em vez disso, se você estiver usando um grande número de filtros detalhados baseados em GPU, é provável que o jogo esteja limitado à GPU. Muitos smartphones e dispositivos ChromeOS não têm placas de vídeo discretas. Um jogo para computador que pressupõe que os filtros de GPU são rápidos pode descobrir que as GPUs integradas levam muito tempo para renderizar cada cena.

Para mais detalhes sobre como abordar a criação de perfil, confira o guia da ARM sobre O processo de otimização.

Ferramentas

Embora seja possível determinar gargalos por conta própria, ter as ferramentas certas facilita a análise da performance do jogo e dá a certeza de que você está se concentrando nas coisas certas. Há muitas ferramentas disponíveis, mas estes são alguns dos nossos programas favoritos.

Android Studio Profiler

A maneira mais fácil de começar a criar perfis de qualquer app Android é com o criador de perfis do Android Studio integrado. No Android Studio, em vez de clicar em "Executar", escolha "Criar perfil" para executar o app e receber insights em tempo real sobre o uso da CPU, da memória e da rede. Rastreamentos simples da CPU podem ser uma maneira rápida de isolar áreas do código para analisar.

Essa ferramenta não oferece insights reais sobre o uso da GPU nem sobre o que acontece entre cada sincronização de frames. Portanto, embora seja uma boa ferramenta para ter na caixa de ferramentas, provavelmente não será suficiente para que o jogo funcione com desempenho máximo.

Snapdragon Profiler

Como o comportamento dos jogos é o mesmo em todos os dispositivos, uma boa maneira de receber informações detalhadas sobre o desempenho é usar o Snapdragon Profiler em um smartphone ARM baseado em Qualcomm. Embora não seja um perfilamento direto em um dispositivo ChromeOS, isso fornece informações sobre onde o jogo está gastando a maior parte do tempo em cada frame e pode dar insights sobre quais chamadas de GPU estão sendo usadas.

Por exemplo, se você notar que uma grande quantidade de tempo está sendo gasta nos filtros anisotrópicos da GPU e que eles estão dominando o trabalho realizado em cada frame, é possível melhorar muito o desempenho mudando essa configuração.

Se você notar que os tempos da GPU são curtos e regulares, mas os tempos da CPU estão dominando e fazendo com que você perca sincronizações de frames, analise seus algoritmos de carregamento de textura/preparação de frames.

Consulte a documentação oficial de uso para mais informações.

ARM Mobile Studio

Outro criador de perfil de dispositivo ARM útil é o ARM Mobile Studio (link em inglês). Alguns desenvolvedores podem preferir o Perfetto ao Snapdragon Profiler, mas eles podem ser usados de maneiras semelhantes. Consulte a documentação de uso oficial.

Android GPU Inspector

O Android GPU Inspector é uma nova ferramenta desenvolvida pelo Google e projetada especificamente para ajudar você a aproveitar ao máximo o desempenho do seu jogo com OpenGL e Vulkan. No momento, ele está em prévia para desenvolvedores e pode exigir algum trabalho para ser configurado. Além disso, só funciona em alguns dispositivos. Ela promete ser uma das principais ferramentas para criação de perfis gráficos no futuro. Consulte a documentação oficial.

Visão geral do rastreamento do ARC

Há também uma ferramenta mais generalizada, o rastreamento de visão geral do ARC, que funciona de maneira semelhante à ferramenta de rastreamento de gráficos do ARC acima. Esse rastreador fornece métricas de alto nível sobre o desempenho de um app e do ChromeOS. As leituras mostram o FPS do app e do próprio Chrome, além do uso da CPU e da GPU, do consumo de energia e muito mais. É possível executar a ferramenta várias vezes e ver gráficos de cada execução sobrepostos com cores para diferenciá-los. Cada modelo de rastreamento será salvo na pasta "Downloads" e poderá ser importado novamente para comparações futuras. Para verificações gerais de integridade do app, o rastreamento da visão geral do ARC é um bom ponto de partida.

Acesse chrome://arc-overview-tracing no navegador do ChromeOS para usar essa ferramenta.

Próximas etapas

Talvez você tenha encontrado alguns gargalos, mas não sabe o que fazer com eles. Ou você já encontrou e resolveu os problemas, mas não sabe qual é a próxima etapa. Confira abaixo uma lista de dicas e recursos gerais do Android e específicos do mecanismo.

Dicas gerais

O portal para desenvolvedores Android tem ótimas dicas para melhorar o desempenho do seu aplicativo. Lá você encontra considerações sobre o tempo de carregamento, como usar multithreading, como lidar com o atraso de entrada e muito mais.

Faça o perfilamento com frequência e desde o início, principalmente se você estiver segmentando máquinas menos potentes ou ultrapassando os limites da arquitetura de ponta. Acompanhar as estatísticas de performance do seu app ajuda a identificar quais mudanças prejudicaram o frame rate e quais estão ajudando você a manter a experiência fluida que deseja.

Mecanismo Unity

Além da documentação geral do Android, a Unity oferece documentação específica do Chrome OS para ajudar você a criar um aplicativo Chrome OS eficiente usando o mecanismo dela. Confira a documentação do ChromeOS sobre como começar, entrada, depuração e criação, que inclui como criar builds x86. Para conferir o conteúdo sobre performance, acesse Entender a otimização e o curso sobre performance e otimização.

Leia o guia da ARM sobre como criar perfis e otimizar jogos do Unity e as práticas recomendadas associadas. Isso vai orientar você no processo de criação de perfil de um jogo de exemplo no Unity com a ferramenta Streamline, uma faceta do ARM Mobile Studio.

Unreal Engine

A Unreal escreveu as próprias diretrizes de performance e os documentos de dicas e truques que ensinam a aproveitar ao máximo muitas das opções e configurações fornecidas pelo mecanismo. Aqui você encontra dicas sobre nível de detalhes, como aproveitar ao máximo a iluminação, guias passo a passo sobre configurações de qualidade de materiais e shaders, entre outras sugestões.

Para mais otimizações baseadas em gráficos, a ARM escreveu um guia para otimizar jogos para dispositivos móveis. Confira dicas gerais de otimização e considerações específicas sobre gráficos do Unreal aqui.