Contexto
NEW STATE Mobile é um jogo de battle royale da Krafton, lançado em novembro de 2021 no mundo todo e com mais de 45 milhões de downloads no primeiro mês de lançamento. A KRAFTON, Inc. é um coletivo de estúdios independentes de desenvolvimento de jogos reunidos para criar experiências de entretenimento inovadoras e envolventes para jogadores de todo o mundo. A empresa é constituída por PUBG Studios, Bluehole Studio, Striking Distance Studios, RiseWings, Dreamotion e Unknown Worlds, cada um com o próprio conhecimento. O NEW STATE Mobile foi criado com o Unreal Engine 4, e várias tentativas foram feitas para reduzir o consumo de calor e da bateria causados pelo alto uso da GPU devido às características marcantes dos jogos.
Como os jogadores podem jogar batalhas de longa distância, o mecanismo do jogo precisa renderizar cenas a certa distância. Além disso, inúmeras plantas estão presentes no campo de batalha, levando o overdraw dessas plantas a ter um impacto significativo na queda do desempenho. Isso levou a equipe ao Android GPU Inspector (AGI), para ajudar a otimizar o uso da GPU do jogo e eliminar gargalos.
Figura 1: captura de tela da NEW STATE Mobile
O que a equipe fez
O NEW STATE Mobile usou o AGI para acessar cargas de informações do contador de GPU e otimizar seu uso de GPU adequadamente. Eles identificaram passes de renderização desnecessários com a ajuda dos dados de criação de perfil da atividade da GPU fornecidos pelo AGI. Depois de identificar quais segmentos estavam consumindo o uso da GPU e a largura de banda da memória, eles continuaram verificando o progresso da otimização usando o contador e a atividade da GPU de um lado para o outro para verificar se estavam indo na direção certa.
Figura 2: captura de tela da NEW STATE Mobile
Aqui estão algumas coisas que eles aprenderam sobre o desempenho do jogo usando o AGI:
Otimização de passe base: o pré-passagem de profundidade, uma tecnologia que aumenta o uso do Early-z, ajudou a diminuir o uso do sombreamento de fragmentos. O pré-passe de profundidade foi usado especificamente para LOD0, que ocupa a maior parte do espaço da tela, minimizando o fardo que pode vir de chamadas de desenho adicionais. Além disso, o uso do formato scenecolor de 32 bits pode aumentar o desempenho de todo o cartão de renderização. O formato SceneColor padrão do UnrealEngine4 é FloatRGBA, que é de 64 bits. Se um formato de 32 bits for usado, a largura de banda da memória poderá ser reduzida pela metade.
Impacto medido: após aplicar o pré-passe de profundidade, a utilização da GPU caiu 7,5%. Devido ao pré-passe de profundidade, mais fragmentos podem ser do início ao Z. A taxa de tempo necessário para sombreamento de fragmentos diminuiu 2%. Com o formato scenecolor de 32 bits, a utilização da GPU foi reduzida em 5,3%. Os sombreadores Ocupados diminuíram em 2%, e o total de leitura de GPU da memória do sistema diminuiu 330 MB/s. A quantidade de gravações da GPU na memória do sistema foi reduzida em 78 MB/s, e a leitura de memória de textura também foi reduzida em 43 MB/s.
Otimização de passagem de sombra: quando as malhas são usadas como lança-sombras, o uso de LOD de polígono alto não faz diferença na qualidade. É preferível usar um LOD de polígono baixo que ajuda a reduzir o número de triângulos. No Unreal Engine 4, o LOD com poucos polígonos pode ser usado com o comando do console "ForceLODShadow".
Impacto medido: o número de triângulos usados para sombras diminuiu cerca de 120.000. Os dados do contador de GPU no AGI mostraram que o uso da GPU diminuiu cerca de 2%, a quantidade de memória GPU lida da memória do sistema diminuiu 130 MB/s e a quantidade gravada da GPU para a memória do sistema diminuiu cerca de 23 MB.
Instanciação automática: pode ser aplicada para a otimização de passagem de sombra e de base e permite mesclar os mesmos comandos de renderização no tempo de execução e ser renderizados de uma só vez. Isso permitiu que o dispositivo móvel NEWSTATE aplicasse iluminação global a objetos individuais sem perder o desempenho. A instância automática é um recurso básico fornecido pelo UnrealEngine4.
Impacto medido: as chamadas de desenho foram reduzidas em 500. Isso reduziu cerca de 48% das chamadas de desenho. A utilização da GPU diminuiu cerca de 3,5%. Essas medições foram feitas usando o OpenGL.
Figura 3: dados internos mostrando a redução do uso da GPU.
Resultados
Com o AGI, a NEW STATE Mobile reduziu seu uso de GPU em 22%. Com a otimização de pré-passagem de profundidade e passagem sombra, o uso da GPU diminuiu 19% e 3%, respectivamente. As chamadas de desenho e a memória total lida e gravada pela GPU na memória do sistema também foram significativamente reduzidas.
Primeiros passos
Aprenda a analisar o impacto do seu jogo em dispositivos Android identificando problemas de desempenho e áreas a serem otimizadas com o Android GPU Inspector (AGI).