
Mir 2: Return of the King è un gioco mobile di alta qualità basato sull'IP Legend autorizzato da Actoz Soft e sviluppato da HK ZHILI YAOAN LIMITED utilizzando il motore di gioco Unity.
Questo gioco non solo ricrea perfettamente le sensazioni di Mir 2, un rappresentante degli MMORPG fantasy coreani, 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 la libreria Frame Pacing di Android (Swappy) per migliorare la stabilità della frequenza fotogrammi, ottenere un rendering fluido e migliorare notevolmente Android Vitals (metrica Sessioni lente).
Sessioni lente lanciate in Android vitals
Sessioni lente è una metrica di Android vitals in Google Play Console. Una sessione lenta ha più del 25% di frame lenti. Un frame è lento se:
A 20 fps, non viene presentato entro 50 ms dal frame precedente.
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 tempo del frame target dello sviluppatore. Il gioco potrebbe essere limitato dalla CPU o dalla GPU, scaldarsi eccessivamente (causando il throttling termico) oppure potrebbe esserci una mancata corrispondenza tra la frequenza frame del gioco e la frequenza di aggiornamento del display del dispositivo.
Che cos'è la libreria Frame Pacing
La libreria Frame Pacing di Android, 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 la libreria Frame Pacing
Mir 2 (미르2: 왕의 귀환) aveva un problema con le prestazioni di rendering instabili, con il 40% di sessioni lente a una soglia di frequenza fotogrammi 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 Frame Pacing 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 recuperare,
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 Frame Pacing 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 della libreria.

Ogni bucket rappresenta la percentuale di sessioni in cui il 75% dei frame è stato più veloce dell'etichetta del bucket.
Iniziare a utilizzare la libreria Frame Pacing
Come utilizzare la libreria Frame Pacing 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 la libreria Frame Pacing nel motore di gioco Unity
Unity ha integrato la libreria 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 la libreria Frame Pacing nel motore di gioco Unreal
Unreal 4.25 e versioni successive integrano la libreria Frame Pacing di Android, 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++.