El Juego de Cartas Coleccionables Pokémon (JCC) se disfruta en todo el mundo desde hace casi 30 años. El recientemente lanzado JCC Pokémon Pocket está diseñado para permitir que los jugadores disfruten de colecciones y batallas de Pokémon en cualquier momento y lugar, sin necesidad de cartas físicas. La accesibilidad del juego en smartphones contribuyó a su popularidad generalizada entre los usuarios.
Si bien puede parecer un juego de cartas de colección informal, Pokémon TCG Pocket utiliza sombreadores complejos, lo que representa un desafío importante para reducir el tiempo de compilación. Para abordar este problema y garantizar gráficos de alta calidad y una experiencia de juego fluida, la versión para Android de Pokémon TCG Pocket adoptó Vulkan, la API de gráficos de nueva generación.
En este documento, se analiza la adopción de Vulkan por parte del equipo de desarrollo de Pokémon TCG Pocket, los desafíos que se encontraron y las ventajas que ofrece Vulkan.
Motivos para adoptar Vulkan
En un principio, el equipo de desarrollo de JCC Pokémon Pocket planeaba usar OpenGL ES. Sin embargo, decidieron adoptar Vulkan, una API de gráficos con un futuro prometedor. Los principales motivos para elegir Vulkan fueron los siguientes:
- Administración de apps a largo plazo: El equipo reconoció la tendencia de que Vulkan se convierta en la API de gráficos dominante para Android y determinó que es la opción óptima para la administración de apps a largo plazo.
- Rendimiento estable en dispositivos de baja especificación: Para proporcionar una experiencia fluida a una amplia variedad de usuarios, es esencial que el rendimiento sea estable en dispositivos de baja especificación. Se espera que la capacidad de Vulkan para reducir la carga de la CPU mejore las tasas de fotogramas y el consumo de batería.
- Evitar cambios a gran escala después del lanzamiento: Cambiar de OpenGL ES a Vulkan después del lanzamiento implicaría modificaciones extensas, lo que podría interrumpir la experiencia del usuario. Adoptar Vulkan desde el principio mitigó la necesidad de realizar cambios tan significativos.
Implementa Vulkan con Unity
JCC Pokémon Pocket usa Unity como motor de juego. Unity ofrece un proceso optimizado para implementar Vulkan con un solo clic. Con Unity, el equipo de desarrollo integró Vulkan sin problemas y sin necesidad de capacitación especializada. Además, la falta de adaptaciones específicas de Vulkan para los entornos y las herramientas de desarrollo contribuyó a la rentabilidad.

Desafíos para implementar Vulkan
Si bien la implementación de Vulkan fue relativamente sencilla, el equipo de desarrollo se encontró con algunos desafíos después:
- Problemas específicos del dispositivo: En comparación con OpenGL ES, los controladores de algunos fabricantes mostraron una menor estabilidad con Vulkan, lo que generó problemas específicos del dispositivo.
- Compatibilidad incompleta con Vulkan en el middleware: Algunos middleware no tenían compatibilidad total con Vulkan, lo que obligó al equipo a esperar las actualizaciones del middleware.
El equipo de desarrollo abordó estos desafíos a través de varias estrategias, como la creación de un equipo de desarrolladores de juegos para consumidores con experiencia para solucionar problemas (ya que tenían mucha experiencia en la API de gráficos de bajo nivel o el motor personalizado) y la colaboración con los equipos de Google y Unity para resolver problemas individuales. Para expandir la compatibilidad de los dispositivos, las pruebas incluyeron dispositivos de gama alta de nivel medio a antiguo (lanzados hace 2 o 3 años) para determinar las especificaciones de dispositivos recomendadas.
Ventajas de Vulkan
Adoptar Vulkan trajo varios beneficios al JCC Pokémon Pocket:
- Reducción del tiempo de compilación de sombreadores: Vulkan redujo significativamente el tiempo de compilación de sombreadores, incluso para una gran cantidad de ellos. Por ejemplo, el tiempo de compilación de OpenGL ES podría superar 1 segundo, pero esto ya no es un problema con la renderización de Vulkan.
- Ampliación del rango de dispositivos compatibles: Las mejoras en la velocidad de fotogramas y el consumo de batería permitieron admitir una gama más amplia de dispositivos, lo que garantiza una experiencia más fluida para más usuarios.
- Mejor telemería con capas de validación de Vulkan: La capa de validación de Vulkan fue muy útil para identificar la causa raíz de los problemas y complementar los datos proporcionados por los informes de ANR o fallas de Vitals.
Mensaje para los desarrolladores
El equipo de desarrollo de Pokémon TCG Pocket ofrece los siguientes consejos a los desarrolladores que consideran usar Vulkan para sus proyectos:
- Además de reducir el tiempo de compilación de sombreadores, Vulkan ofrece beneficios de rendimiento sustanciales.
- El uso de vkQuality para recurrir a OpenGL ES podría expandir la compatibilidad con dispositivos, aunque Pokémon TCG Pocket aún no lo usa.
Conclusión
Gracias a la adopción de Vulkan, el equipo de desarrollo de Pokémon TCG Pocket pudo optimizar los gráficos en una amplia variedad de dispositivos para garantizar una experiencia fluida y atractiva para todos los jugadores. Con la incorporación continua de funciones y el potencial futuro en evolución, se espera que Vulkan brinde aún más beneficios con el tiempo.