Call of Duty: Warzone Mobile ist ein Ego-Shooter aus der beliebten Call of Duty-Reihe. Bei der mobilen Version des äußerst beliebten Konsolen- und PC-Spiels werden mobile Low-Level-APIs genutzt, um eine hervorragende Nutzererfahrung zu bieten.
Aus technischer Sicht besteht das Ziel der mobilen Implementierung darin, eine breite Palette von Android-Mobilgeräten zu unterstützen und gleichzeitig die Implementierung so nah wie möglich an der Konsolenversion zu halten und dafür zu sorgen, dass die Grafikpipeline und die Toolchain mit den aktuellen Konsolen- und PC-Titeln und ‑Inhalten kompatibel bleiben.
Die Call of Duty-Engine implementiert Synchronisierung, Arbeitsspeicherzuweisung und Planung für die Verwaltung von Rendering-Einreichungen mithilfe eines Systems namens Task Graph Renderer, das die auf der GPU auszuführenden Aufgaben bestimmt und die erforderlichen Ressourcen angibt. Das System ist genauer gesagt ein Rendering-Graph mit Aufgaben, Ressourcen und Abhängigkeiten, die in einem Hochsprachen-Script definiert sind. Dieses Script wird zum Zeitpunkt des Ladens verarbeitet, um eine optimale Reihenfolge der auf der GPU auszuführenden Arbeit zu generieren und die zum Zeitpunkt der Frame-Einreichung verwendeten Ressourcen bereitzustellen.
Vulkan, eine moderne plattformübergreifende 3D-Grafik-API, wurde als Backend-Rendering-Schnittstelle für den Task-Graph-Renderer auf Android ausgewählt.

Vorteile der Vulkan API
Um den unverwechselbaren visuellen Stil von Call of Duty beizubehalten und den gemeinsamen Fortschritt zwischen Call of Duty: Warzone Mobile und den Konsolen- und PC-Versionen besser zu unterstützen, verwendet das Spiel eine Rendering-API, die der der bestehenden Konsolen- und PC-Implementierungen ähnelt. Mit Vulkan kann Activision auf Android-Geräten auf seinen vorhandenen Tools, Pipelines und Shadern aufbauen und die von Künstlern erstellten Inhalte unterstützen, ohne den gesamten Softwarestack überarbeiten zu müssen.
Dies mit einem völlig anderen Renderer zu erreichen, wäre unerschwinglich teuer. Die Unterstützung älterer Grafik-APIs für die Call of Duty-Pipeline hätte zu große Auswirkungen auf das Funktionspaket. Activision hat festgestellt, dass Vulkan die beste Wahl ist, um Android-Nutzer alle Funktionen zur Verfügung zu stellen und gleichzeitig den Entwicklungsaufwand zu minimieren. Vulkan hat erheblichen Support bei Android-Geräteherstellern erhalten, was die API auch für die zukünftige Entwicklung zu einer guten Wahl macht.
Geräte ohne Vulkan-kompatible Hardware oder Treiber sind in der Regel älter und nicht leistungsfähig genug, um das Spiel auszuführen. Vulkan ist also nicht nur technisch für die Engine und die Content-Pipeline geeignet, sondern die Vulkan-Unterstützung als Hardwareanforderung dient auch als Leistungsfilter.
Kompatibilität mit der vorhandenen Plattform-API
Vulkan ist konzeptionell ähnlich wie die vorhandenen APIs, die für Call of Duty: Warzone verwendet werden, mit expliziter Ressourcenverwaltung, Speicheraliasing, ähnlicher Compute-Pipeline und bindungslosem Ressourcenzugriff. Aufgrund der Ähnlichkeiten konnte Activision den Renderer strukturell mit dem Renderer für Konsolen und PCs konsistent halten. Für die Vulkan-Schnittstelle waren nur Änderungen am Backend erforderlich.
Durch die Unterstützung vorhandener HLSL-basierter Shader mit vollständigem Funktionsumfang mithilfe der DXC-zu-SPIR-V-Kompilierung kann Android in die vorhandenen Build-Pipelines von Activision eingebunden werden. Der Prozess ist nicht ohne Herausforderungen, aber dennoch vorteilhafter als eine Neufassung und der damit verbundene Aufwand für die Pflege mehrerer Versionen oder Sprachen.


In Call of Duty: Warzone Mobile verwendete Vulkan-Funktionen
- Durch Ressourcen-Aliasing und explizite Barriere-Steuerung kann der Speicherbedarf für Renderziele im Vergleich zur statischen Zuweisung durch die Rendering-Aufgabengrafik erheblich reduziert werden.
- Die Flexibilität ermöglicht die nahtlose Verwendung von für Mobilgeräte optimierten Verfahren bei Renderingaufgaben.
- Renderpässe als Kernfunktionen ermöglichen es dem Renderer, optimale Entscheidungen für gängige GPU-Architekturen für Mobilgeräte zu treffen. Die meisten dieser Entscheidungen bringen auch auf anderen Plattformen Vorteile.
- Die dynamische Szenenauflösung wird standardmäßig von der Aufgabengrafik unterstützt, sodass Leistung und Stromverbrauch in gewissem Maße gesteuert werden können.
- Die vollständige GPU-Pipeline mit umfangreichem compute-basiertem Culling ermöglicht eine deutlich höhere Szenenkomplexität.
- Die Detailgenauigkeit des Aussortierens wird so angepasst, dass kachelnbasierte verzögerte Renderer berücksichtigt werden.
- Das Nadelöhr ist die komplexe Rechenlast im Gegensatz zur Anzahl der Dreiecke.
- Die GPU-Pipeline wurde für verschiedene Szenarien entwickelt.
- Optionen zum Ändern der Detaillierung des Aussortierens.
- Sehr große Descriptor-Sets ermöglichen ein vollständiges bindungsloses Rendering auf kompatibler Hardware. Dies wiederum reduziert die CPU-Auslastung und die Kosten für die Erstellung von Aufrufen erheblich, was sich positiv auf Leistung, Stromverbrauch und Wärmeentwicklung auswirkt.
- Mit dem Hardware-Konfigurator können die Fidelity-Einstellungen basierend auf bestimmten Gerätemodellen angepasst werden, um die Nutzerfreundlichkeit zu optimieren.
- Nutzer können den Modus konfigurieren: beste Leistung, beste Qualität oder Akkusparmodus.
- Das gerätespezifische Shader-Set-Design bietet verschiedene Shader-Sets für verschiedene GPU-Voreinstellungen (Qualitäts- und Wiedergabetreueeinstellungen). Der HW-Konfigurator hilft dem Spiel, den besten Shadersatz für das Gerät auszuwählen.
- Hilft, die Kombinationsexplosion von hoch konfigurierbaren Shadern mit den Anforderungen beim Erstellen von Pipelineobjekten zu verringern.
- Enthält Fallback-Shadersätze ohne Bindung, die auf ältere Smartphones und Treiber ausgerichtet sind, die nicht so viele Shaderressourcen unterstützen.
- Kluge Verwendung von Spezialisierungskonstanten, um Unterschiede zwischen Fahrern zu berücksichtigen.
- Die meisten Fehler des Shader-Compilers in Treibern werden mithilfe von Spezialisierungskonstanten umgangen.
- Wird an die Anzahl der gerätespezifischen Shadersätze angepasst.

Profiling und Fehlerbehebung
Zu Beginn der Entwicklung stellte Activision viele Lücken in der Stabilität und Funktionalität mit den Vulkan-Profilierungs- und ‑Debugging-Tools fest. Seitdem wurden Anbieterspezifische Profiler und anbieterunabhängige Tools wie RenderDoc kontinuierlich verbessert. Jetzt können Entwickler mit größerer Sicherheit Renderingprobleme und Optimierungsmöglichkeiten eingrenzen.
High Fidelity mit Vulkan
Call of Duty: Warzone Mobile läuft auf einer Vielzahl von Vulkan-kompatiblen Android-Geräten und nutzt die Rendering-Technologie, die auch für die Konsolen- und PC-Titel verwendet wird. Vulkan reduzierte den Entwicklungsaufwand und ermöglichte die Bereitstellung authentischer, hochauflösender Call of Duty-Inhalte und -Gameplay für Android-Nutzer.