O jogo de cartas colecionáveis (TCG, na sigla em inglês) do Pokémon é jogado no mundo todo há quase 30 anos. O Pokémon Estampas Ilustradas Pocket, lançado recentemente, foi criado para que os jogadores experimentem coleções e batalhas de Pokémon a qualquer hora e em qualquer lugar, sem a necessidade de cartas físicas. A acessibilidade do jogo em smartphones contribuiu para a popularidade generalizada entre os usuários.
Embora pareça um jogo de cartas casual, o Pokémon Estampas Ilustradas Pocket usa shaders complexos, o que representa um desafio significativo na redução do tempo de compilação. Para resolver esse problema e garantir gráficos de alta qualidade e uma experiência de jogo tranquila, a versão para Android do Pokémon TCG Pocket adotou o Vulkan, a API gráfica de última geração.
Este documento aborda a adoção do Vulkan pela equipe de desenvolvimento do Pokémon TCG Pocket, os desafios encontrados e as vantagens oferecidas pelo Vulkan.
Motivos para adotar o Vulkan
Inicialmente, a equipe de desenvolvimento do Pokémon Estampas Ilustradas Pocket planejou usar o OpenGL ES. No entanto, eles decidiram adotar o Vulkan, uma API gráfica com um futuro promissor. Os principais motivos para escolher o Vulkan foram:
- Gerenciamento de apps de longo prazo: reconhecendo a tendência de a Vulkan se tornar a API gráfica dominante para Android, a equipe determinou que a Vulkan é a escolha ideal para o gerenciamento de apps de longo prazo.
- Desempenho estável em dispositivos de baixa especificação: para oferecer uma experiência tranquila a uma ampla variedade de usuários, é essencial ter um desempenho estável em dispositivos de baixa especificação. A capacidade do Vulkan de reduzir a carga da CPU deve melhorar as taxas de frames e o consumo de bateria.
- Evitar mudanças em grande escala após o lançamento: mudar do OpenGL ES para o Vulkan após o lançamento exigiria modificações extensas, o que poderia interromper a experiência do usuário. A adoção do Vulkan desde o início mitigou a necessidade de mudanças significativas.
Implementar o Vulkan com o Unity
O Pokémon Estampas Ilustradas Pocket usa o Unity como mecanismo de jogo. O Unity oferece um processo simplificado para implementar o Vulkan com um único clique. Com o Unity, a equipe de desenvolvimento integrou o Vulkan sem precisar de treinamento especializado. Além disso, a falta de adaptações específicas do Vulkan para ambientes e ferramentas de desenvolvimento contribuiu para a relação custo-benefício.

Desafios na implementação do Vulkan
Embora a implementação do Vulkan tenha sido relativamente simples, a equipe de desenvolvimento encontrou alguns desafios depois:
- Problemas específicos do dispositivo: em comparação com o OpenGL ES, os drivers de alguns fabricantes apresentaram menor estabilidade com o Vulkan, o que levou a problemas específicos do dispositivo.
- Suporte incompleto do Vulkan no middleware: alguns middlewares não tinham suporte total ao Vulkan, exigindo que a equipe aguardasse as atualizações do middleware.
A equipe de desenvolvimento resolveu esses desafios com várias estratégias, incluindo a montagem de uma equipe de desenvolvedores de jogos de consumo experientes para resolver problemas (como eles tinham experiência na API de gráficos de baixo nível ou no mecanismo personalizado) e colaborar com as equipes do Google e do Unity para a resolução de problemas individuais. Para ampliar a compatibilidade de dispositivos, os testes incluíram dispositivos de nível médio a antigo (lançados há 2 a 3 anos) para determinar as especificações recomendadas do dispositivo.
Vantagens do Vulkan
A adoção do Vulkan trouxe vários benefícios para o Pokémon TCG Pocket:
- Tempo de compilação de sombreadores reduzido: o Vulkan reduziu significativamente o tempo de compilação de sombreadores, mesmo para um grande número de sombreadores. Por exemplo, o tempo de compilação do OpenGL ES pode exceder 1 segundo, mas isso não é mais um problema com a renderização do Vulkan.
- Ampliação da gama de dispositivos compatíveis: as melhorias na taxa de frames e no consumo de bateria permitiram uma gama mais ampla de dispositivos compatíveis, garantindo uma experiência mais tranquila para mais usuários.
- Melhor telemetria com camadas de validação do Vulkan: a camada de validação do Vulkan foi muito útil para identificar a causa raiz dos problemas, complementando os dados fornecidos pelos relatórios de ANR/crash do Vitals.
Mensagem para desenvolvedores
A equipe de desenvolvimento do Pokémon TCG Pocket oferece o seguinte conselho aos desenvolvedores que estão considerando o Vulkan para seus projetos:
- Além de reduzir o tempo de compilação do sombreador, o Vulkan oferece benefícios de desempenho substanciais.
- O uso de vkQuality para recorrer ao OpenGL ES pode expandir o suporte a dispositivos, mesmo que o Pokémon TCG Pocket ainda não o use.
Conclusão
Ao adotar o Vulkan, a equipe de desenvolvimento do Pokémon Estampas Ilustradas Pocket conseguiu otimizar os gráficos em uma ampla variedade de dispositivos para garantir uma experiência fácil e envolvente para todos os jogadores. Com a adição contínua de recursos e o potencial de evolução no futuro, o Vulkan deve trazer ainda mais benefícios com o tempo.