
Mir 2: Return of the King è un gioco mobile Legend IP di alta qualità autorizzato da Actoz Soft e sviluppato da HK ZHILI YAOAN LIMITED utilizzando Unity Engine.
Questo gioco non solo ricrea perfettamente le sensazioni di "Mir 2", un rappresentante del MMORPG fantasy coreano, ma offre anche molti dei contenuti di gioco più apprezzati, come la raccolta di attrezzature, l'attacco di sabbia su larga scala e altri elementi di gameplay fondamentali.
Il gioco ha utilizzato l'API Android Frame Pacing (Swappy) per migliorare la stabilità della frequenza frame, ottenere un rendering fluido e migliorare in modo significativo Android vitals (metrica Sessioni lente).
Sessione lenta lanciata su Android Vitals
Sessione lenta è una metrica di Android vitals in Google Play Console. Una sessione lenta ha più del 25% di frame lenti. Un frame è lento se:
1) A 20 fps, non viene presentato entro 50 ms dal frame precedente. 2) A 30 fps, non viene presentato entro 34 ms dal frame precedente.
A tempo debito, Google Play inizierà ad indirizzerà gli utenti lontano dai giochi che non possono raggiungere i 20 FPS sui loro telefoni.
Esistono molti motivi per cui un frame potrebbe essere visualizzato o visualizzato sullo schermo più a lungo rispetto al target dello sviluppatore. Il gioco potrebbe essere limitato dalla CPU o dalla GPU, surriscaldarsi e attivare uno stato termico limitato oppure potrebbe esserci una mancata corrispondenza tra la frequenza frame del gioco e la frequenza di aggiornamento del display del dispositivo.
Che cos'è Swappy
La libreria Android Frame Pacing, nota anche come Swappy, fa parte delle librerie AGDK. Swappy aiuta i giochi OpenGL e Vulkan a ottenere un rendering fluido e un corretto pacing dei frame su Android.
La libreria gestisce più frequenze di aggiornamento, se supportate dal dispositivo, in modo da offrire a un gioco una maggiore flessibilità nella presentazione di un frame. Ad esempio, per un dispositivo che supporta una frequenza di aggiornamento di 60 Hz e 90 Hz, un gioco che non può produrre 60 frame al secondo può scendere a 45 FPS anziché 30 FPS per rimanere scorrevole. La libreria rileva la frequenza fotogrammi prevista del gioco e regola automaticamente i tempi di presentazione dei fotogrammi di conseguenza.
La libreria Frame Pacing migliora anche la durata della batteria perché evita aggiornamenti del display non necessari. Ad esempio, se un gioco esegue il rendering a 60 FPS, ma il display si aggiorna a 120 Hz, lo schermo viene aggiornato due volte per ogni frame. La libreria Frame Pacing evita questo problema impostando la frequenza di aggiornamento sul valore supportato dal dispositivo più vicino alla frequenza fotogrammi target.
In che modo Mir 2 ha migliorato le prestazioni di rendering con Swappy
Mir 2 (미르2: 왕의 귀환) aveva un problema con le prestazioni di rendering instabili, con il 40% di sessioni lente a una soglia di frequenza frame di 20 FPS, molto più alta della soglia del 20% di Google Play.

Mir 2 (미르2: 왕의 귀환) è un gioco con grafica ad alta fedeltà. Alcuni dispositivi hanno difficoltà a mantenere un FPS stabile. La loro distribuzione della frequenza frame mostra che molte sessioni vengono eseguite con un valore inferiore a 20 FPS.

Ogni bucket rappresenta la percentuale di sessioni in cui il 75% dei frame è stato più veloce dell'etichetta del bucket.
Quando il carico di lavoro di visualizzazione richiede più tempo rispetto al carico di lavoro dell'applicazione, vengono aggiunti altri frame a una coda. Ciò porta, ancora una volta, a interruzioni e può anche comportare un frame di latenza aggiuntivo a causa del buffering.

La libreria Swappy risolve il problema utilizzando i recinti di sincronizzazione
(EGL_KHR_fence_sync
e VkFence
) per
iniettare nell'applicazione delle interruzioni che consentono alla pipeline di visualizzazione di mettersi al passo,
anziché consentire l'accumulo di pressione a ritroso. Il frame A presenta ancora un fotogramma aggiuntivo, ma il frame B ora viene visualizzato correttamente.

Mir 2 ha integrato facilmente la libreria Swappy sfruttando la funzionalità di frame pacing ottimizzato integrata in Unity. L'azione ha comportato un miglioramento significativo delle prestazioni di rendering, in particolare la metrica Sessioni lente è passata dal 40% al 10%.

Il numero di sessioni lente è diminuito notevolmente per Mir2 dopo l'integrazione di Swappy.

Ogni bucket rappresenta la percentuale di sessioni in cui il 75% dei frame è stato più veloce dell'etichetta del bucket.
Inizia a utilizzare Swappy
Come utilizzare Swappy nei motori di gioco nativi
Consulta le seguenti guide per integrare la libreria Android Frame Pacing nel tuo gioco:
- Integrare la funzionalità di pacing dei frame di Android nel renderer Vulkan
- Integrare la funzionalità Frame Pacing di Android nel renderer OpenGL
Come utilizzare Swappy nel motore di gioco Unity
Unity ha integrato la funzionalità Android Frame Pacing nel proprio motore. Per attivare questa funzionalità in Unity, seleziona la casella di controllo Optimised Frame Pacing (Temporizzazione frame ottimizzata) in Project Settings > Player > Settings for Android > Resolution and Presentation:

In alternativa, attiva programmaticamente l'opzione di pacing dei fotogrammi ottimizzato nel codice logico per consentire a Unity di distribuire uniformemente i fotogrammi in modo da ridurre la varianza della frequenza fotogrammi e creare un gameplay più fluido.
Come utilizzare Swappy nel motore di gioco Unreal
Unreal 4.25 e versioni successive integrano la libreria Android Frame Pacing, che fa parte dell'Android Game Development Kit. L'articolo Temporizzazione frame mobile spiega come attivare la libreria di temporizzazione frame di Android e come controllare la temporizzazione frame dal codice C++.
Per ulteriori informazioni, puoi consultare le sezioni sulle sessioni lente e su Swappy.