Gra karciana Pokémon (TCG) cieszy się popularnością na całym świecie od prawie 30 lat. Niedawno wydana gra Pokémon TCG Pocket została zaprojektowana tak, aby gracze mogli kolekcjonować karty Pokémon i brać udział w walkach w dowolnym miejscu i w dowolnym czasie bez konieczności korzystania z fizycznych kart. Dostępność gry na smartfonach przyczyniła się do jej dużej popularności wśród użytkowników.
Chociaż może się wydawać, że jest to zwykła gra karciana, Pokemon TCG Pocket korzysta ze złożonych shaderów, co stanowi duże wyzwanie w zakresie skracania czasu kompilacji. Aby zapewnić wysoką jakość grafiki i płynną rozgrywkę, wersja Pokémon TCG Pocket na Androida obsługuje Vulkan, interfejs API grafiki nowej generacji.
Ten dokument zawiera szczegółowe informacje o wprowadzaniu Vulkana przez zespół deweloperów Pokémon TCG Pocket, napotykanych przez nich wyzwaniach i zaletach Vulkana.
Powody stosowania Vulkan
Początkowo zespół programistów Pokémon TCG Pocket planował użyć OpenGL ES. Ostatecznie jednak zdecydowali się na Vulkana, interfejsu API grafiki, który ma przed sobą świetlaną przyszłość. Główne powody wyboru platformy Vulkan:
- Długoterminowe zarządzanie aplikacjami: biorąc pod uwagę fakt, że Vulkan staje się dominującym interfejsem API do obsługi grafiki na Androida, zespół uznał, że jest to optymalny wybór w przypadku długoterminowego zarządzania aplikacjami.
- Stabilna wydajność na urządzeniach o niskich specyfikacjach: aby zapewnić płynne działanie aplikacji wielu użytkownikom, niezbędna jest stabilna wydajność na urządzeniach o niskich specyfikacjach. Umożliwiając zmniejszenie obciążenia procesora, Vulkan powinien poprawić liczbę klatek na sekundę i zużycie baterii.
- Unikanie dużych zmian po wydaniu: przejście z OpenGL ES na Vulkan po wydaniu wymagałoby wprowadzenia wielu zmian, które mogłyby zakłócić działanie aplikacji. Dzięki przyjęciu Vulkana od samego początku nie było potrzeby wprowadzania tak dużych zmian.
Wdrażanie interfejsu Vulkan w Unity
Pokémon TCG Pocket korzysta z silnika Unity. Unity oferuje uproszczony proces implementacji Vulkan jednym kliknięciem. Dzięki Unity zespół programistów bezproblemowo zintegrował Vulkana bez konieczności przechodzenia specjalistycznego szkolenia. Dodatkowo na efektywność finansową wpłynął brak dostosowań do Vulkana w środowiskach i narzędziach do programowania.

Problemy z implementacją Vulkana
Wdrożenie Vulkana było stosunkowo proste, ale potem zespół deweloperów napotkał pewne problemy:
- Problemy związane z urządzeniem: w porównaniu z OpenGL ES sterowniki niektórych producentów wykazywały mniejszą stabilność w przypadku Vulkana, co powodowało problemy związane z urządzeniem.
- Niepełna obsługa Vulkana w oprogramowaniu pośredniczącym: niektóre programy pośredniczące nie obsługiwały w pełni Vulkana, więc zespół musiał czekać na ich aktualizacje.
Zespół programistów rozwiązał te problemy, stosując kilka strategii, w tym stworzenie zespołu doświadczonych deweloperów gier konsumenckich, który zajmował się rozwiązywaniem problemów (mieliśmy już wtedy spore doświadczenie w używaniu niskiego poziomu interfejsu API do grafiki lub niestandardowego silnika) oraz współpracę z zespołami Google i Unity w celu rozwiązania poszczególnych problemów. Aby zwiększyć zgodność urządzeń, w ramach testów uwzględniliśmy urządzenia średniej klasy i starsze urządzenia wysokiej klasy (wydane 2–3 lata temu), aby określić zalecane specyfikacje urządzeń.
Zalety Vulkana
Zastosowanie Vulkana przyniosło Pokémon TCG Pocket kilka korzyści:
- Zmniejszony czas kompilacji shaderów: Vulkan znacznie skrócił czas kompilacji shaderów, nawet w przypadku dużej liczby shaderów. Na przykład czas kompilacji OpenGL ES może przekroczyć 1 sekundę, ale w przypadku renderowania Vulkan nie jest to już problemem.
- Większa liczba obsługiwanych urządzeń: ulepszenia dotyczące liczby klatek i zużycia baterii na większej liczbie obsługiwanych urządzeń, co zapewnia płynniejsze działanie dla większej liczby użytkowników.
- Lepsza telemetria dzięki warstwom weryfikacji Vulkana: warstwa weryfikacji Vulkana bardzo pomogła w identyfikowaniu pierwotnych przyczyn problemów, uzupełniając dane dostarczone przez raporty Vitals o błędach ANR lub awariach.
Wiadomość dla deweloperów
Zespół deweloperów Pokémon TCG Pocket ma dla deweloperów, którzy rozważają zastosowanie Vulkana w swoich projektach, następujące porady:
- Oprócz skrócenia czasu kompilacji shaderów Vulkan zapewnia znaczne korzyści w zakresie wydajności.
- Użycie parametru vkQuality do przełączenia na OpenGL ES może potencjalnie zwiększyć obsługę urządzeń, mimo że Pokémon TCG Pocket jeszcze go nie używa.
Podsumowanie
Dzięki zastosowaniu Vulkan zespół deweloperów Pokémon TCG Pocket mógł zoptymalizować grafikę na wielu urządzeniach, aby zapewnić płynną i zaangażowaną rozgrywkę każdemu graczowi. Vulkan będzie się rozwijać, a dodawanie nowych funkcji będzie kontynuowane. W związku z tym z czasem może przynieść jeszcze więcej korzyści.