Le Jeu de Cartes à Collectionner Pokémon (JCC) est apprécié dans le monde entier depuis près de 30 ans. Le JCC Pokémon Pocket, récemment lancé, est conçu pour permettre aux joueurs de collectionner et de combattre des Pokémon où et quand ils le souhaitent, sans avoir besoin de cartes physiques. L'accessibilité du jeu sur les smartphones a contribué à sa popularité auprès des utilisateurs.
Bien qu'il puisse sembler être un jeu de cartes occasionnel, le JCC Pokémon Pocket utilise des nuanceurs complexes, ce qui représente un défi de taille pour réduire le temps de compilation. Pour y remédier et garantir des graphismes de haute qualité et une expérience de jeu fluide, la version Android de Pokémon TCG Pocket a adopté Vulkan, l'API graphique de nouvelle génération.
Ce document décrit l'adoption de Vulkan par l'équipe de développement de Pokémon TCG Pocket, les défis rencontrés et les avantages qu'offre Vulkan.
Pourquoi adopter Vulkan ?
Au départ, l'équipe de développement du JCC Pokémon Pocket prévoyait d'utiliser OpenGL ES. Toutefois, il a décidé d'adopter Vulkan, une API graphique prometteuse. Voici les principales raisons pour lesquelles nous avons choisi Vulkan:
- Gestion à long terme des applications: l'équipe a constaté que Vulkan devenait l'API graphique dominante pour Android. Elle a donc déterminé que Vulkan était le choix optimal pour la gestion à long terme des applications.
- Performances stables sur les appareils à faible spécification: pour offrir une expérience fluide à un large éventail d'utilisateurs, il est essentiel de proposer des performances stables sur les appareils à faible spécification. La capacité de Vulkan à réduire la charge du processeur devrait améliorer les fréquences d'images et la consommation de la batterie.
- Éviter les modifications à grande échelle après la publication: passer d'OpenGL ES à Vulkan après la publication impliquerait des modifications importantes, ce qui pourrait perturber l'expérience utilisateur. L'adoption de Vulkan dès le départ a atténué le besoin de tels changements importants.
Implémenter Vulkan avec Unity
Pokémon TCG Pocket utilise Unity comme moteur de jeu. Unity propose un processus simplifié pour implémenter Vulkan en un seul clic. En utilisant Unity, l'équipe de développement a intégré Vulkan de manière transparente, sans formation spécialisée. De plus, l'absence d'adaptations spécifiques à Vulkan pour les environnements et outils de développement a contribué à la rentabilité.

Défis de l'implémentation de Vulkan
Bien que l'implémentation de Vulkan ait été relativement simple, l'équipe de développement a rencontré quelques difficultés par la suite:
- Problèmes spécifiques à l'appareil: par rapport à OpenGL ES, les pilotes de certains fabricants présentaient une stabilité moindre avec Vulkan, ce qui entraînait des problèmes spécifiques à l'appareil.
- Compatibilité Vulkan incomplète dans le middleware: certains middleware n'étaient pas entièrement compatibles avec Vulkan, ce qui a obligé l'équipe à attendre les mises à jour du middleware.
L'équipe de développement a relevé ces défis à l'aide de plusieurs stratégies, notamment en réunissant une équipe de développeurs de jeux grand public expérimentés pour le dépannage (car ils étaient très expérimentés en API graphique de bas niveau ou en moteur personnalisé) et en collaborant avec les équipes Google et Unity pour résoudre les problèmes individuels. Pour étendre la compatibilité des appareils, les tests ont inclus des appareils haut de gamme anciens ou de milieu de gamme (sortis il y a deux ou trois ans) afin de déterminer les spécifications d'appareil recommandées.
Avantages de Vulkan
L'adoption de Vulkan a apporté plusieurs avantages au JCC Pokémon Pocket:
- Durée de compilation des nuanceurs réduite: Vulkan réduit considérablement la durée de compilation des nuanceurs, même pour un grand nombre de nuanceurs. Par exemple, le temps de compilation OpenGL ES peut dépasser une seconde, mais ce n'est plus un problème avec le rendu Vulkan.
- Gamme d'appareils compatibles élargie: les améliorations apportées à la fréquence d'images et à la consommation de la batterie ont permis d'élargir la gamme d'appareils compatibles, offrant une expérience plus fluide à un plus grand nombre d'utilisateurs.
- Meilleure télémétrie avec les couches de validation Vulkan: la couche de validation Vulkan a été très utile pour identifier la cause des problèmes, en complétant les données fournies par les rapports ANR/plantage de Vitals.
Message aux développeurs
L'équipe de développement de Pokémon TCG Pocket propose les conseils suivants aux développeurs qui envisagent d'utiliser Vulkan pour leurs projets:
- En plus de réduire le temps de compilation des nuanceurs, Vulkan offre des avantages de performances substantiels.
- L'utilisation de vkQuality pour basculer sur OpenGL ES pourrait potentiellement étendre la compatibilité des appareils, même si Pokémon TCG Pocket ne l'utilise pas encore.
Conclusion
En adoptant Vulkan, l'équipe de développement du JCC Pokémon Pocket a pu optimiser les graphismes sur un large éventail d'appareils afin de garantir une expérience fluide et attrayante pour tous les joueurs. Avec l'ajout continu de fonctionnalités et l'évolution de son potentiel futur, Vulkan devrait apporter encore plus d'avantages au fil du temps.