Android 15 imposta una frequenza di aggiornamento predefinita di 60 Hz per i giochi al fine di ottimizzare il consumo di energia. Per sbloccare frame rate più elevati, come 120 FPS, ora devi richiederli esplicitamente utilizzando l'API Frame Rate o la libreria Swappy.
Tuttavia, il sistema potrebbe ignorare questa richiesta in base a fattori come il livello della batteria o la temperatura del dispositivo. Sebbene le frequenze di aggiornamento più elevate migliorino la scorrevolezza visiva, richiedono anche più potenza e generano calore aggiuntivo. Pertanto, è fondamentale offrire agli utenti la possibilità di scegliere la frequenza di aggiornamento che preferiscono e monitorare attentamente le prestazioni per garantire un'esperienza utente equilibrata.
Utilizzare l'API setFrameRate()
L'API setFrameRate()
consente agli sviluppatori di giochi di utilizzare una frequenza di aggiornamento del display specifica. Per farlo, devi eseguire due operazioni:
- Verifica la compatibilità del dispositivo e della versione di Android.
- Richiedi un numero elevato di FPS utilizzando
setFrameRate()
.
Verifica la compatibilità del dispositivo e della versione di Android:
Utilizza i metodi Display.getSupportedModes()
per determinare se il dispositivo supporta 90 Hz, 120 Hz o altre frequenze di aggiornamento. Se il dispositivo è limitato a 60 Hz,
non è possibile superare questo limite.
Kotlin
val display = windowManager.defaultDisplay
val supportedModes = display.supportedModes
for (mode in supportedModes) {
Log.d("DisplayInfo", "Supported mode: ${mode.physicalWidth}x${mode.physicalHeight}, ${mode.refreshRate}Hz")
}
Richiedi FPS elevati
Richiama setFrameRate()
all'avvio del loop di rendering, durante l'inizializzazione della finestra del gioco o quando la frequenza fotogrammi target deve modificare la frequenza di aggiornamento del display.
Anche se richiedi una frequenza più elevata, il sistema potrebbe comunque limitare la frequenza di aggiornamento a 60 Hz a causa di fattori come la modalità di risparmio energetico o il throttling termico. Se le prestazioni di rendering del tuo gioco non raggiungono gli FPS target, richiedere una frequenza di aggiornamento più elevata potrebbe comportare un consumo energetico non necessario e aumentare la temperatura del dispositivo.
Lo snippet seguente mostra come evitare una frequenza di aggiornamento eccessivamente elevata con
l'API setFrameRate()
.
Kotlin
val targetFps = 120f
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.setFrameRate(
targetFps,
Window.FrameRateCompatibility.FRAME_RATE_COMPATIBILITY_FIXED_SOURCE,
0
)
}
La pagina Frequenza fotogrammi fornisce informazioni più dettagliate per ulteriori letture.
Utilizzare la libreria di pacing dei frame
La libreria di pacing dei frame, o Swappy, è una libreria open source progettata per semplificare la gestione e la pianificazione dei frame di VSync nei motori di gioco Android C/C++.
Questo strumento semplifica il processo di ottimizzazione delle frequenze di aggiornamento, fungendo efficacemente da livello di astrazione di livello superiore per funzionalità come setFrameRate()
. Inoltre, Swappy offre funzionalità aggiuntive che possono migliorare la fluidità e le prestazioni complessive del tuo gioco.
La pagina di Swappy fornisce informazioni più dettagliate.
Suggerimenti aggiuntivi per risultati ottimali
La sezione seguente illustra diversi suggerimenti importanti:
- Passare da una frequenza fotogrammi all'altra in modo dinamico.
- Monitoraggio delle prestazioni.
- Fornisci opzioni FPS in base alla frequenza di aggiornamento massima del display.
Cambio dinamico della frequenza fotogrammi
Per ottimizzare sia le prestazioni sia il consumo energetico, valuta la possibilità di implementare la commutazione dinamica della frequenza fotogrammi nel tuo gioco. Questa tecnica ti consente di passare senza interruzioni da frequenze di aggiornamento più elevate, come 120 Hz, per un gameplay più fluido durante le scene impegnative, a frequenze più basse, come 60 Hz, durante i momenti meno intensi o quando la durata della batteria è un problema o il target è inferiore a 60 FPS. Il funzionamento costante a 120 Hz può portare a un'eccessiva produzione di calore e a un rapido consumo della batteria, con conseguente possibile esperienza utente negativa. Regolando in modo intelligente la frequenza di aggiornamento in base al carico di rendering corrente e alle condizioni del dispositivo, puoi trovare un equilibrio tra fedeltà visiva ed efficienza energetica.
Monitoraggio delle prestazioni
Per garantire il funzionamento ottimale del gioco a frequenze di aggiornamento più elevate, integra strumenti di monitoraggio delle prestazioni come un contatore di frame o un overlay delle prestazioni. Questi strumenti forniscono un feedback in tempo reale sulla frequenza fotogrammi effettiva del gioco, consentendoti di verificare se raggiungi costantemente i 120 FPS target.
Se la frequenza fotogrammi varia notevolmente, valuta la possibilità di scegliere come target una frequenza fotogrammi inferiore possibile sul dispositivo in questione. In questo modo, l'esperienza può essere più fluida senza i problemi di prestazioni che potrebbero verificarsi quando si cerca di ottenere la frequenza di aggiornamento più elevata.
Fornire opzioni FPS in base alla frequenza di aggiornamento massima del display
Il gioco deve rilevare la frequenza di aggiornamento massima del display supportata dal dispositivo corrente, ad esempio 60 Hz, 90 Hz o 120 Hz, e limitare le impostazioni FPS di conseguenza. Ad esempio, se il dispositivo supporta solo fino a 60 Hz, è consigliabile disattivare le opzioni superiori a 60 FPS nelle impostazioni del gioco per evitare di confondere il giocatore.