Il Gioco di Carte Collezionabili Pokémon (GCC) è apprezzato in tutto il mondo da quasi 30 anni. Il GCC Pokémon Pocket, lanciato di recente, è progettato per consentire ai giocatori di provare le collezioni e le battaglie Pokémon ovunque e in qualsiasi momento, senza bisogno di carte fisiche. L'accessibilità del gioco sugli smartphone ha contribuito alla sua popolarità diffusa tra gli utenti.
Sebbene possa sembrare un semplice gioco di carte collezionabili, GCC Pokémon Pocket utilizza shader complessi, il che rappresenta una sfida significativa per ridurre i tempi di compilazione. Per risolvere il problema e garantire una grafica di alta qualità e un'esperienza di gioco fluida, la versione per Android di Pokémon TCG Pocket ha adottato Vulkan, l'API grafica di nuova generazione.
Questo documento illustra l'adozione di Vulkan da parte del team di sviluppo di Pokémon TCG Pocket, le sfide incontrate e i vantaggi offerti da Vulkan.
Motivi per adottare Vulkan
Inizialmente, il team di sviluppo di GCC Pokémon Pocket aveva in programma di utilizzare OpenGL ES. Tuttavia, hanno deciso di adottare Vulkan, un'API grafica con un futuro promettente. I motivi principali per cui abbiamo scelto Vulkan sono:
- Gestione delle app a lungo termine: tenendo conto della tendenza di Vulkan a diventare l'API grafica dominante per Android, il team ha stabilito che Vulkan è la scelta ottimale per la gestione delle app a lungo termine.
- Prestazioni stabili su dispositivi con specifiche ridotte: per offrire un'esperienza fluida a una vasta gamma di utenti, sono essenziali prestazioni stabili su dispositivi con specifiche ridotte. La capacità di Vulkan di ridurre il carico della CPU dovrebbe migliorare le frequenze dei fotogrammi e il consumo della batteria.
- Evitare modifiche su larga scala dopo il rilascio: il passaggio da OpenGL ES a Vulkan dopo il rilascio comporterebbe modifiche estese, con il rischio di interrompere l'esperienza utente. L'adozione di Vulkan fin dall'inizio ha attenuato la necessità di modifiche così significative.
Implementare Vulkan con Unity
GCC Pokémon Pocket utilizza Unity come motore di gioco. Unity offre un processo semplificato per l'implementazione di Vulkan con un solo clic. Utilizzando Unity, il team di sviluppo ha integrato Vulkan senza problemi senza richiedere una formazione specializzata. Inoltre, la mancanza di adattamenti specifici per Vulkan per ambienti e strumenti di sviluppo ha contribuito alla convenienza.

Sfide nell'implementazione di Vulkan
Sebbene l'implementazione di Vulkan sia stata relativamente semplice, il team di sviluppo ha riscontrato alcune difficoltà in seguito:
- Problemi specifici del dispositivo: rispetto a OpenGL ES, i driver di alcuni produttori hanno mostrato una stabilità inferiore con Vulkan, causando problemi specifici del dispositivo.
- Supporto Vulkan incompleto nel middleware: alcuni middleware non supportavano Vulkan completamente, il che ha richiesto al team di attendere gli aggiornamenti del middleware.
Il team di sviluppo ha affrontato queste sfide con diverse strategie, tra cui la formazione di un team di sviluppatori di giochi per consumatori esperti per la risoluzione dei problemi (in quanto avevano una vasta esperienza con l'API grafica di basso livello o con il motore personalizzato) e la collaborazione con i team di Google e Unity per la risoluzione dei singoli problemi. Per espandere la compatibilità dei dispositivi, i test hanno incluso dispositivi di fascia media e di fascia alta meno recenti (rilasciati 2-3 anni fa) per determinare le specifiche dei dispositivi consigliate.
Vantaggi di Vulkan
L'adozione di Vulkan ha apportato diversi vantaggi a GCC Pokémon Pocket:
- Tempo di compilazione degli shader ridotto: Vulkan ha ridotto notevolmente il tempo di compilazione degli shader, anche per un numero elevato di shader. Ad esempio, il tempo di compilazione di OpenGL ES potrebbe superare 1 secondo, ma questo non è più un problema con il rendering Vulkan.
- Gamma più ampia di dispositivi supportati: i miglioramenti alla frequenza frame e al consumo della batteria hanno consentito di supportare una gamma più ampia di dispositivi, garantendo un'esperienza più fluida a un maggior numero di utenti.
- Telemetria migliore con i livelli di convalida Vulkan: il livello di convalida Vulkan è stato molto utile per identificare la causa principale dei problemi, integrando i dati forniti dai report ANR/arresto anomalo di Vitals.
Messaggio per gli sviluppatori
Il team di sviluppo di Pokémon TCG Pocket offre i seguenti consigli agli sviluppatori che stanno valutando l'utilizzo di Vulkan per i loro progetti:
- Oltre a ridurre i tempi di compilazione degli shader, Vulkan offre vantaggi sostanziali in termini di prestazioni.
- L'utilizzo di vkQuality per eseguire il fallback su OpenGL ES potrebbe potenzialmente espandere il supporto dei dispositivi, anche se Pokémon TCG Pocket non lo utilizza ancora.
Conclusione
Adottando Vulkan, il team di sviluppo di Pokémon TCG Pocket è stato in grado di ottimizzare la grafica su una vasta gamma di dispositivi per garantire un'esperienza fluida e coinvolgente per ogni giocatore. Con l'aggiunta continua di funzionalità e un potenziale futuro in evoluzione, Vulkan dovrebbe offrire ancora più vantaggi nel tempo.