Call of Duty: Warzone Mobile é um jogo de ação em primeira pessoa da famosa franquia Call of Duty. A evolução do console e do jogo para PC extremamente popular aproveita as APIs para dispositivos móveis de baixo nível para oferecer uma ótima experiência aos jogadores.
Do ponto de vista técnico, o objetivo da implementação para dispositivos móveis é oferecer suporte a uma ampla variedade de dispositivos móveis Android, mantendo a implementação o mais próxima possível da versão do console e garantindo que o pipeline de gráficos e o conjunto de ferramentas permaneçam compatíveis com os títulos e conteúdo atuais do console e do PC.
O mecanismo Call of Duty implementa sincronização, alocação de memória e programação para gerenciar o envio de renderização usando um sistema chamado render de gráfico de tarefas, que determina o trabalho a ser executado na GPU e especifica os recursos necessários. Mais especificamente, o sistema é um gráfico de renderização com tarefas, recursos e dependências definidos em um script de alto nível processado no momento do carregamento para gerar a ordem ideal do trabalho a ser executado na GPU e fornecer os recursos usados no momento do envio do frame.
A Vulkan, uma API moderna de gráficos 3D em várias plataformas, foi selecionada como a interface de renderização de back-end para o renderizador do gráfico de tarefas no Android.
![](https://developer.android.com/static/images/cards/distribute/stories/codwzm_figure1.jpg?authuser=0000&hl=pt-br)
Benefícios da API do Vulkan
Para manter o estilo visual distinto do Call of Duty e oferecer melhor suporte à progressão compartilhada entre o Call of Duty: Warzone Mobile e os consoles e PCs, o jogo usa uma API de renderização semelhante à das implementações existentes de console e PC. No Android, o Vulkan permite que a Activision crie com base em ferramentas, pipelines e sombreadores já existentes e ofereça suporte ao conteúdo criado por artistas, sem precisar revisar toda a pilha de software.
Tentar fazer isso com um renderizador completamente diferente seria proibidamente caro, e tentar oferecer suporte a APIs gráficas de geração mais antiga para o pipeline Call of Duty teria um impacto muito grande no conjunto de recursos. A Activision determinou que o Vulkan era a escolha mais apropriada para trazer todos os recursos para o Android, minimizando o impacto na sobrecarga geral de desenvolvimento. A Vulkan recebeu suporte significativo entre fabricantes de dispositivos Android, tornando a API uma boa escolha para desenvolvimentos futuras.
Dispositivos sem hardware ou drivers compatíveis com Vulkan geralmente são mais antigos e não têm a potência suficiente para executar o jogo. Além de o Vulkan ser uma adequação técnica para o pipeline de mecanismo e de conteúdo, o suporte a Vulkan como requisito de hardware funciona como um filtro de desempenho.
Compatibilidade com a API da plataforma atual
O Vulkan é conceitualmente semelhante às APIs existentes usadas para Call of Duty: Warzone, com gerenciamento explícito de recursos, atribuição de alias de memória, pipeline de computação semelhante e acesso a recursos sem vinculação. As semelhanças permitiram que a Activision mantivesse o renderizador estruturalmente consistente com o console e o PC, exigindo apenas mudanças de back-end para interface com o Vulkan.
O suporte a sombreadores baseados em HLSL com conjuntos de recursos completos usando DXC para compilação SPIR-V permite que o Android se integre aos pipelines de build já existentes da Activision. O processo não isenta os desafios, mas ainda é mais benéfico do que uma regravação e a sobrecarga incorrida de manutenção de várias versões ou linguagens.
![](https://developer.android.com/static/images/cards/distribute/stories/codwzm_figure2.jpg?authuser=0000&hl=pt-br)
![](https://developer.android.com/static/images/cards/distribute/stories/codwzm_figure3.jpg?authuser=0000&hl=pt-br)
Recursos do Vulkan usados no Call of Duty: Warzone Mobile
- A atribuição de alias de recursos e o controle
explícito de barreira permitem que o gráfico de tarefas de renderização
reduza significativamente os requisitos de memória para destinos de renderização em comparação com a alocação
estática.
- A flexibilidade permite o uso contínuo de práticas otimizadas para dispositivos móveis em tarefas de renderização.
- As passagens de renderização, como recursos principais, permitem que o renderizador tome as melhores decisões para arquiteturas de GPU para dispositivos móveis comuns. A maioria dessas decisões também fornece ganhos em outras plataformas.
- Por padrão, o gráfico de tarefas oferece suporte à resolução dinâmica de cenas, o que permite algum controle do desempenho e do consumo de energia.
- O pipeline de GPU completo com seleção extensiva baseada em computação permite
um aumento substancial da complexidade do cenário.
- Equilíbrio da granularidade da seleção para contabilizar a segmentação de renderizadores adiados baseados em blocos.
- O gargalo é uma carga de trabalho de computação complexa, diferente da contagem de triângulos.
- O pipeline da GPU foi projetado com diferentes cenários em mente.
- Opções para mudar a granularidade do agrupamento.
- Os conjuntos de descritores muito grandes permitem a renderização completa sem vínculos em hardware compatível, o que reduz substancialmente o custo de criação de chamadas de desenho da CPU com os benefícios térmicos, de desempenho e potência associados.
- O configurador de hardware permite ajustar as configurações de fidelidade com base em modelos
de dispositivos específicos para a melhor experiência do usuário
- Modo de configuração do usuário: melhor desempenho, melhor qualidade ou economia de bateria.
- O design do conjunto de sombreadores específico do dispositivo oferece diferentes
conjuntos de sombreadores para diferentes predefinições de GPU (configurações de qualidade e fidelidade). O configurador
de HW ajuda o jogo a escolher o melhor conjunto de sombreadores para o dispositivo.
- Ajuda a diminuir a explosão combinatória de sombreadores altamente configuráveis com os requisitos de criação de objetos de pipeline.
- Inclui conjuntos substitutos de sombreadores não vinculados para segmentar smartphones e drivers mais antigos que não têm suporte a tantos recursos de sombreador.
- Uso inteligente de constantes de especialização para lidar com
diferenças do driver.
- A maioria dos bugs do compilador de shader nos drivers é resolvida com o uso de constantes de especialização.
- Equilibra o número de conjuntos de sombreadores específicos do dispositivo.
![](https://developer.android.com/static/images/cards/distribute/stories/codwzm_figure4.jpg?authuser=0000&hl=pt-br)
Criação de perfil e depuração
No início do desenvolvimento, a Activision encontrou muitas lacunas na estabilidade e na funcionalidade das ferramentas de criação de perfil e depuração do Vulkan. Desde então, houve melhorias constantes para criadores de perfil específicos de fornecedor e ferramentas independentes de fornecedor, como o RenderDoc. Agora, os desenvolvedores podem limitar com mais confiança os problemas de renderização e as oportunidades de otimização.
Alta fidelidade com Vulkan
O Call of Duty: Warzone Mobile é executado em uma grande variedade de dispositivos Android com Vulkan usando a tecnologia de renderização compartilhada com os títulos de console e PC. O Vulkan reduziu o atrito e a sobrecarga de desenvolvimento e permitiu a entrega de conteúdo e jogabilidade autênticos e de alta fidelidade do Call of Duty para jogadores Android.