Call of Duty: Warzone Mobile to gra akcji z perspektywy pierwszej osoby należąca do popularnej serii Call of Duty. Wersja mobilna tej popularnej gry na konsole i komputery korzysta z interfejsów API na niskim poziomie, aby zapewnić graczom świetne wrażenia.
Z technicznego punktu widzenia celem implementacji na urządzeniach mobilnych jest zapewnienie obsługi wielu urządzeń mobilnych z Androidem przy jednoczesnym zachowaniu jak największego podobieństwa do wersji na konsole i sprawdzenie, czy łańcuch narzędzi i przepływ danych są zgodne z obecnymi tytułami i treściami na konsole i komputery.
Silnik Call of Duty obsługuje synchronizację, przydzielanie pamięci i harmonogram przesyłania danych do renderowania za pomocą systemu zwanego renderowaniem grafu zadań, który określa zadania do wykonania na GPU i określa wymagane zasoby. Konkretnie jest to graf renderowania z zadaniami, zasobami i zależnościami zdefiniowanymi w skrypcie wysokiego poziomu, który jest przetwarzany w momencie wczytywania, aby wygenerować optymalne uporządkowanie zadań do wykonania na procesorze graficznym i zapewnić zasoby używane w momencie przesyłania klatki.
Jako interfejs renderowania w tła dla renderowania grafu zadań na Androidzie wybrano Vulkan, czyli nowoczesny wieloplatformowy interfejs API do obsługi grafiki 3D.

Zalety interfejsu Vulkan API
Aby zachować charakterystyczny styl wizualny Call of Duty i lepiej obsługiwać wspólny postęp w Call of Duty: Warzone Mobile oraz jego odpowiednikach na konsole i komputery, gra korzysta z interfejsu API do renderowania podobnego do istniejących implementacji na konsole i komputery. Na Androidzie Vulkan umożliwia firmie Activision korzystanie z dotychczasowych narzędzi, procesów i shaderów oraz obsługę treści tworzonych przez artystów bez konieczności gruntownej zmiany całego oprogramowania.
Użycie do tego celu zupełnie innego renderera byłoby zbyt kosztowne, a próba obsługi interfejsów API grafiki starszej generacji w pipeline Call of Duty miałaby zbyt duży wpływ na zestaw funkcji. Firma Activision uznała, że Vulkan jest najlepszym wyborem, jeśli chodzi o zapewnienie pełnej funkcjonalności na Androidzie przy jednoczesnym zminimalizowaniu wpływu na ogólne koszty programowania. Vulkan zyskał znaczące wsparcie wśród producentów urządzeń z Androidem, dzięki czemu interfejs API jest również dobrym wyborem na potrzeby przyszłego rozwoju.
Urządzenia bez sprzętu lub sterowników obsługujących Vulkan są zazwyczaj starsze i nie są wystarczająco wydajne, aby uruchomić grę. Vulkan jest więc nie tylko technicznie odpowiedni dla silnika i przepływu danych, ale jako wymaganie sprzętowe pełni funkcję filtra wydajności.
Zgodność z dotychczasowym interfejsem API platformy
Vulkan jest pod względem koncepcyjnym podobny do istniejących interfejsów API używanych w grze Call of Duty: Warzone. Oferuje on jawne zarządzanie zasobami, aliasing pamięci, podobny przepływ danych i dostęp do zasobów bez wiązania. Dzięki tym podobieństwom Activision mógł zachować strukturę renderowania zgodną z renderowaniem na konsoli i na PC, wymagając tylko zmian w backendzie, aby umożliwić obsługę interfejsu Vulkan.
Obsługa dotychczasowych shaderów opartych na HLSL z pełnymi zestawami funkcji za pomocą kompilacji DXC na SPIR-V umożliwia Androidowi integrację z dotychczasowymi systemami kompilacji Activision. Ten proces nie jest pozbawiony trudności, ale nadal jest bardziej opłacalny niż przepisywanie i nadwyżka kosztów utrzymania wielu wersji lub wersji w różnych językach.


Funkcje Vulkana używane w Call of Duty: Warzone Mobile
- Aliasowanie zasobów i wyraźne sterowanie barierą umożliwiają graficznemu procesowi renderowania znaczne zmniejszenie wymagań pamięciowych dla celów renderowania w porównaniu ze statyczną alokacją.
- Ta elastyczność umożliwia płynne stosowanie metod przyjaznych urządzeniom mobilnym w procesie renderowania.
- Przebiegi renderowania jako funkcje podstawowe pozwalają procesorowi renderowania podejmować optymalne decyzje w przypadku typowych architektur mobilnych GPU. Większość z tych decyzji przynosi też korzyści na innych platformach.
- Domyślnie wykres zadań obsługuje dynamiczną rozdzielczość sceny, co umożliwia częściową kontrolę wydajności i zużycia energii.
- Pełny potok GPU z rozbudowanym odrzucaniem na podstawie obliczeń umożliwia znacznie zwiększenie złożoności sceny.
- Utrzymanie równowagi w sposobie odrzucania elementów, aby uwzględnić kierowanie na opóźnione mechanizmy renderowania oparte na kafelkach.
- Butelka jest złożonym obciążeniem obliczeniowym, a nie liczbą trójkątów.
- Potok GPU został zaprojektowany z myślą o różnych scenariuszach.
- Opcje zmiany szczegółowości odrzucania.
- Bardzo duże zbiory deskryptorów umożliwiają renderowanie bez ograniczeń na zgodnym sprzęcie, co z kolei znacznie zmniejsza koszt tworzenia wywołań funkcji CPU, a także wiąże się z korzyściami związanymi z wydajnością, mocą i temperaturą.
- Konfigurator sprzętu umożliwia wprowadzanie zmian w ustawieniach jakości na podstawie konkretnych modeli urządzeń, aby zapewnić użytkownikom jak najlepsze wrażenia.
- Użytkownicy mogą wybrać tryb: najlepsza wydajność, najlepsza jakość lub oszczędzanie baterii.
- Projekt zestawu shaderów dla poszczególnych urządzeń zapewnia różne zestawy shaderów dla różnych wstępnie skonfigurowanych ustawień GPU (ustawienia jakości i wierności). Konfigurator sprzętu pomaga grze wybrać najlepszy zestaw shaderów dla danego urządzenia.
- Pomaga zmniejszyć kombinatoryczną eksplozję silnie konfigurowalnych cieniowników z wymaganiami dotyczącymi tworzenia obiektów w przepływie danych.
- Zawiera zapasowe zestawy shaderów bez bindowania, które są przeznaczone dla starszych telefonów i sterowników, które nie obsługują tak wielu zasobów shaderów.
- Używanie konstant specjalizacji w inteligentny sposób do uwzględniania różnic w przypadku różnych kierowców.
- Większość błędów kompilatora shaderów w sterownikach można obejść, używając stałych specyfikacji.
- Balansuje liczbę zestawów shaderów dla poszczególnych urządzeń.

Profilowanie i debugowanie
Na początku prac nad grą Activision odkryła wiele problemów ze stabilnością i funkcjonalnością przy użyciu narzędzi do profilowania i debugowania Vulkan. Od tamtej pory udoskonalenia w profilach konkretnych dostawców i narzędziach niezależnych od dostawcy, takich jak RenderDoc, są wprowadzane systematycznie. Teraz deweloperzy mogą dokładniej skupić się na problemach z renderowaniem i możliwościach optymalizacji.
Wysoka jakość dzięki Vulkan
Call of Duty: Warzone Mobile działa na wielu urządzeniach z Androidem obsługujących Vulkana, korzystając z technologii renderowania wspólnej z grami na konsole i PC. Vulkan zmniejszył koszty i problemy związane z rozwojem oraz umożliwił dostarczanie autentycznych, wysokiej jakości treści i mechanizmów rozgrywki Call of Duty graczom na Androida.