Call of Duty: Warzone Mobile è un gioco d'azione in prima persona della famosa saga Call of Duty. La realizzazione mobile del famoso gioco per console e PC sfrutta le API mobile di basso livello per offrire ai giocatori un'esperienza di alto livello.
Da un punto di vista tecnico, l'obiettivo dell'implementazione mobile è supportare un'ampia gamma di dispositivi mobili Android, mantenendo l'implementazione il più vicina possibile alla versione della console e garantire che la pipeline grafica e la toolchain rimangano compatibili con gli attuali titoli e contenuti della console e dei PC.
Il motore Call of Duty implementa la sincronizzazione, l'allocazione della memoria e la pianificazione della gestione dell'invio del rendering utilizzando un sistema chiamato renderer del grafico delle attività, che determina il lavoro da eseguire sulla GPU e specifica le risorse richieste. In particolare, il sistema è un grafico di rendering con attività, risorse e dipendenze definite in uno script di alto livello che viene elaborato al momento del caricamento per generare l'ordine ottimale del lavoro da eseguire sulla GPU e fornire le risorse utilizzate al momento dell'invio del frame.
Vulkan, una moderna API grafica 3D multipiattaforma, è stata selezionata come interfaccia di rendering di backend per il renderer dei grafici delle attività su Android.
![](https://developer.android.com/static/images/cards/distribute/stories/codwzm_figure1.jpg?authuser=9&hl=it)
Vantaggi dell'API Vulkan
Per mantenere lo stile visivo caratteristico di Call of Duty e supportare meglio l'avanzamento condiviso tra Call of Duty: Warzone Mobile e le sue controparti per console e PC, il gioco utilizza un'API di rendering simile a quella delle implementazioni esistenti per console e PC. Su Android, Vulkan consente ad Activision di sfruttare i suoi strumenti, pipeline e Shadr esistenti, nonché di supportare i contenuti creati dagli artisti, senza dover revisionare l'intero stack software.
Provare a ottenere questo risultato con un renderer completamente diverso sarebbe costoso e provare a supportare API grafiche di generazione precedente per la pipeline Call of Duty avrebbe un impatto troppo significativo sul set di funzionalità. Activision ha stabilito che Vulkan era la scelta più appropriata per portare tutte le funzionalità su Android e ridurre al minimo l'impatto sulle spese generali di sviluppo. Vulkan ha ottenuto un supporto significativo tra i produttori di dispositivi Android, rendendo l'API una buona scelta anche per lo sviluppo futuro.
I dispositivi privi di hardware o driver compatibili con Vulkan in genere sono meno recenti e non abbastanza potenti per far funzionare il gioco. Quindi, oltre a essere adatto a livello tecnico per il motore e la pipeline di contenuti, il supporto Vulkan come requisito hardware può fungere da filtro delle prestazioni.
Compatibilità con l'API della piattaforma esistente
Vulkan è concettualmente simile alle API esistenti utilizzate per Call of Duty: Warzone, con gestione esplicita delle risorse, aliasing della memoria, pipeline di calcolo simili e accesso senza associazioni alle risorse. Le somiglianze hanno permesso ad Activision di mantenere il renderer strutturalmente coerente con la console e il renderer per PC, richiedendo solo modifiche al backend per l'interfaccia con Vulkan.
Il supporto per gli smoother esistenti basati su HLSL con set di funzionalità completi che utilizzano la compilazione da DXC a SPIR-V consente ad Android di integrarsi nelle pipeline di build esistenti di Activision. Il processo non è privo di sfide, ma è comunque più vantaggioso di una riscrittura e dei costi generali sostenuti per il mantenimento di più versioni o lingue.
![](https://developer.android.com/static/images/cards/distribute/stories/codwzm_figure2.jpg?authuser=9&hl=it)
![](https://developer.android.com/static/images/cards/distribute/stories/codwzm_figure3.jpg?authuser=9&hl=it)
Funzionalità Vulkan utilizzate in Call of Duty: Warzone Mobile
- L'alias delle risorse e il controllo esplicito delle barriere consentono al grafico delle attività di rendering di ridurre in modo significativo i requisiti di memoria per le destinazioni di rendering rispetto all'allocazione statica.
- La flessibilità consente un utilizzo perfetto di pratiche ottimizzate per il mobile nelle attività di rendering.
- I trasferimenti di rendering come funzionalità di base consentono al renderer di prendere decisioni ottimali per le comuni architetture di GPU per dispositivi mobili. La maggior parte di queste decisioni offre vantaggi anche su altre piattaforme.
- La risoluzione dinamica delle scene è supportata per impostazione predefinita dal grafico delle attività, in modo da poter controllare le prestazioni e il consumo energetico.
- La pipeline GPU completa con un ampio culling basato sul calcolo consente di
aumentare notevolmente la complessità delle scene.
- Bilancia la granularità di culling per tenere conto del targeting di rendering differiti basati su riquadri.
- Il collo di bottiglia è un carico di lavoro di computing complesso a differenza del conteggio dei triangoli.
- La pipeline GPU è progettata pensando a scenari diversi.
- Opzioni per modificare la granularità di eliminazione.
- I set di descrittori molto grandi consentono il rendering completo senza bind su hardware compatibile, il che a sua volta riduce notevolmente i costi di creazione delle chiamate per il prelievo della CPU con le prestazioni, l'alimentazione e i vantaggi termici associati.
- Lo strumento di configurazione HW consente di apportare modifiche alle impostazioni di fedeltà in base a modelli
di dispositivi specifici per ottimizzare l'esperienza utente.
- Gli utenti configurano la modalità: migliore prestazioni, migliore qualità o risparmio energetico.
- La progettazione del set di Shader specifica per dispositivo fornisce diversi
set di Shader per diverse preimpostazioni GPU (impostazioni di qualità e fedeltà). La configurazione hardware aiuta il gioco a scegliere il set più adatto per il dispositivo.
- Aiuta a ridurre l'esplosione combinatoria degli shardr altamente configurabili con i requisiti di creazione di oggetti pipeline.
- Include set di probe di riserva non associati per il targeting di smartphone e driver meno recenti che non supportano lo stesso numero di risorse di ShaD.
- Utilizzo intelligente delle costanti di specializzazione per affrontare le
differenze dei conducenti.
- La maggior parte dei bug di compilatore Shader nei driver viene affrontata con l'uso di costanti di specializzazione.
- Equilibrio con il numero di set di mesh specifici per dispositivo.
![](https://developer.android.com/static/images/cards/distribute/stories/codwzm_figure4.jpg?authuser=9&hl=it)
Profilazione e debug
All'inizio dello sviluppo, Activision ha colto molte lacune in termini di stabilità e funzionalità con gli strumenti di profilazione e debug di Vulkan. Da allora, sono stati apportati miglioramenti costanti ai profiler specifici del fornitore e a strumenti indipendenti dal fornitore come RenderDoc. Ora gli sviluppatori possono concentrarsi con maggiore sicurezza i problemi di rendering e le opportunità di ottimizzazione.
Alta fedeltà con Vulkan
Call of Duty: Warzone Mobile funziona su un'ampia gamma di dispositivi Android abilitati per Vulkan utilizzando la tecnologia di rendering condivisa con i titoli di console e PC. Vulkan ha ridotto i costi e i problemi legati allo sviluppo e ha consentito ai giocatori Android di fornire contenuti e gameplay autentici e ad alta fedeltà di Call of Duty.