Sessioni lente è una nuova metrica di Android vitals in Google Play Console. Un in cui oltre il 25% dei frame è lento. Una cornice è lento se non viene presentato meno di 50 ms dopo il frame precedente (equivalente a 20 FPS). Android vitals segnala anche una seconda Sessioni lente con un target di 34 ms (equivalente a 30 f/s). Con le sessioni lente, comprendere le prestazioni della frequenza frame del tuo gioco, il che influisce su come fluido e fluido il gioco percepisce gli utenti.
A tempo debito, Google Play inizierà ad indirizzerà gli utenti lontano dai giochi che non possono raggiungere 20 FPS sul telefono. Tieni presente che Android vitals inizia soltanto il monitoraggio frame rate dopo che il gioco è stato in esecuzione per un minuto.
Per maggiori dettagli, visita il nostro Centro assistenza sulla metrica.
![Immagini in stile grafico a torta che mostrano il numero di frame lenti e non lenti.](https://developer.android.google.cn/static/topic/performance/vitals/images/slow-session.png?authuser=9&hl=it)
Come misurare i FPS e rilevare i frame lenti
Il comando dumpsys surfaceflinger timestats
di Android fornisce dati f/s e
istogramma dei tempi da presente a presentare per tutti gli strati che vengono
eseguire il rendering. Il tempo da presente a oggi di un frame è l'intervallo tra
il frame corrente e quello precedente disegnati. Ecco
procedura passo passo per utilizzare il comando per raccogliere gli FPS del gioco:
Esegui il comando con i flag
enable
eclear
per avviare l'acquisizione informazioni:adb shell dumpsys SurfaceFlinger --timestats -clear -enable
Quando il gioco è stato utilizzato per un tempo sufficiente, esegui di nuovo il comando con flag
dump
per eseguire il dump delle informazioni:adb shell dumpsys SurfaceFlinger --timestats -dump
Le informazioni sottoposte a dump forniscono i frame totali e l'istogramma presentaToPresent per tutti i livelli sottoposti a rendering da SurfaceFlinger. Devi trovare alla sezione del tuo gioco filtrando in base a
layerName
:layerName = SurfaceView[com.google.test/com.devrel.MainActivity]@0(BLAST)#132833
La frequenza frame lenta della sessione potrebbe essere calcolata in base alle informazioni di per ogni livello.
Ad esempio, percentuale di frame lenti di 20 FPS = (somma dei valori da 54 ms a 1000 ms) / totalFrames x 100
totalFrames = 274 ... presentToPresent histogram is as below: 0ms=0 1ms=0 2ms=0 3ms=0 4ms=0 5ms=0 6ms=0 7ms=0 8ms=0 9ms=0 10ms=0 11ms=0 12ms=0 13ms=0 14ms=0 15ms=0 16ms=1 17ms=0 18ms=0 19ms=0 20ms=0 21ms=0 22ms=0 23ms=0 24ms=0 25ms=0 26ms=0 27ms=0 28ms=0 29ms=0 30ms=0 31ms=0 32ms=0 33ms=269 34ms=0 36ms=0 38ms=0 40ms=0 42ms=0 44ms=0 46ms=0 48ms=0 50ms=1 54ms=0 58ms=0 62ms=0 66ms=0 70ms=1 74ms=0 78ms=0 82ms=0 86ms=0 90ms=0 94ms=0 98ms=0 102ms=0 106ms=0 110ms=0 114ms=0 118ms=0 122ms=0 126ms=0 130ms=0 134ms=0 138ms=0 142ms=0 146ms=0 150ms=0 200ms=0 250ms=0 300ms=0 350ms=0 400ms=0 450ms=0 500ms=0 550ms=0 600ms=0 650ms=0 700ms=0 750ms=0 800ms=0 850ms=0 900ms=0 950ms=0 1000ms=0
Nel dump vengono mostrati anche i FPS medi di ogni livello:
... averageFPS = 30.179 ...
Dopo aver raccolto tutte le informazioni, devi disattivare il statistiche temporali utilizzando il flag
disable
:adb shell dumpsys SurfaceFlinger --timestats -disable
Cause e soluzioni per frame lenti
Un frame potrebbe presentare o essere visualizzato più lungo sullo schermo per diversi motivi rispetto al target dello sviluppatore. Il gioco potrebbe essere legato a CPU/GPU. Oppure: Il dispositivo si sta surriscaldando e attiva uno stato termico limitato. Oppure: c'è una mancata corrispondenza tra la frequenza fotogrammi del gioco e il display del dispositivo frequenza di aggiornamento.
Utilizza il pacing del frame Android (scambio). Vulkan e ADPF per risolvere questi problemi e migliorare le prestazioni del gioco.
Che cos'è Spotpy
La libreria Android Frame Pacing, nota anche come swappy, fa parte del Librerie AGDK. Speakpy aiuta i giochi OpenGL e Vulkan ottenere un rendering fluido e un corretto pacing dei frame su Android.
Il pacing dei frame è la sincronizzazione della logica di un gioco e del ciclo di rendering con il sottosistema di visualizzazione di un sistema operativo e l'hardware di visualizzazione sottostante. Android il sottosistema display è stato progettato per evitare artefatti visivi (noti come strappi) che possono verificarsi quando l'hardware del display passa temporaneamente a un nuovo fotogramma tramite un aggiornamento. Per evitare questi artefatti, il sottosistema Display le seguenti:
- Memorizza internamente i frame oltre i frame
- Rileva gli invii tardivi di frame
- Ripete la visualizzazione dei frame precedenti quando vengono rilevati frame finali
Come utilizzare Switchpy nei progetti nativi
Consulta le seguenti guide per integrare la libreria di pacing del frame Android nel tuo gioco:
- Integrare il pacing frame Android nel renderer OpenGL
- Integrare il pacing frame Android nel renderer Vulkan
Come utilizzare Switchpy nel motore grafico Unity
Unity ha integrato il pacing del frame Android nel proprio motore. Per attivare questa funzionalità in Unity 2019.2 o successiva, seleziona la casella di controllo Pacing frame ottimizzato in Impostazioni progetto > Player > Impostazioni per Android > Risoluzione e presentazione:
![Finestra di dialogo Impostazioni progetto.](https://developer.android.google.cn/static/topic/performance/vitals/images/unity-frame-pacing.png?authuser=9&hl=it)
In alternativa, attiva in modo programmatico l'opzione Pacing del frame ottimizzato nel tuo codice logico per consentire a Unity di funzionare in modo uniforme distribuire i fotogrammi per ridurre la varianza della frequenza fotogrammi, creando un gameplay più fluido.
Come utilizzare Switchpy nel motore di gioco Unreal
Unreal 4.25 e versioni successive integrano la libreria Android Frame Pacing, che fa parte della Kit di sviluppo giochi Android. L'articolo Pacing frame mobile spiega come attivare Android Raccolta del pacing dei frame e come controllare il pacing del frame dal codice C++.
Cos'è Vulkan
Vulkan è un moderno progetto 3D multipiattaforma Graphic User Interface progettata per ridurre al minimo l'astrazione tra l'hardware grafico del dispositivo e il tuo gioco. Vulkan è l'API grafica di basso livello principale su Android, sostituendo OpenGL ES. OpenGL ES è ancora supportata su Android, ma non è più una funzionalità attiva sviluppo del prodotto.
Vulkan offre i seguenti vantaggi rispetto a OpenGL ES:
- Un'architettura più efficiente con un overhead della CPU inferiore nel driver di grafica
- Nuove strategie di ottimizzazione per migliorare le prestazioni della CPU
- Nuove funzionalità grafiche non disponibili in OpenGL ES, come le API bindless e ray tracing
Come utilizzare Vulkan nei progetti Android nativi
Il codelab Iniziare a utilizzare Vulkan su Android ti guida nella configurazione della pipeline di rendering Vulkan, quindi di eseguire il rendering di un triangolo con texture rotante sullo schermo. Usa il codelab per imparare a eseguire il rendering della grafica del tuo gioco.
Come utilizzare Vulkan nel motore grafico Unity
Per attivare la selezione automatica dei dispositivi su Unity, segui i passaggi per configurare API Auto Graphics.
![Finestra di dialogo Impostazioni progetto.](https://developer.android.google.cn/static/topic/performance/vitals/images/unity-vulkan.png?authuser=9&hl=it)
In alternativa, puoi abilitare Vulkan manualmente disattivando l'API Auto Graphics. e inserisci Vulkan nella priorità più alta nell'elenco delle API grafiche. Se usando Unity 2021.1 o una versione precedente, questo è l'unico modo per utilizzare Vulkan.
![Finestra di dialogo Impostazioni progetto.](https://developer.android.google.cn/static/topic/performance/vitals/images/unity-vulkan-2.png?authuser=9&hl=it)
Utilizza il plug-in del motore VkQuality Unity per fornire suggerimenti relativi al momento del lancio dell'API grafica che il tuo gioco potrà usare su dispositivi specifici.
Come utilizzare Vulkan nel motore grafico Unreal
Per abilitare l'API Vulkan Graphic, vai a Impostazioni progetto > Piattaforme > Android > Crea e seleziona Supporta Vulkan. Quando selezioni sia Assistenza Vulkan e Supporta OpenGL ES3.2; Unreal utilizza Vulkan per impostazione predefinita. Se il dispositivo non supporta Vulkan, Unreal utilizza OpenGL ES 3.2.
![Finestra di dialogo Impostazioni progetto.](https://developer.android.google.cn/static/topic/performance/vitals/images/unreal-vulkan.png?authuser=9&hl=it)
Se usi funzionalità Vulkan specifiche che notoriamente si comportano male
determinati dispositivi, puoi personalizzare il file BaseDeviceProfile.ini
per escluderlo
questi dispositivi. Consulta Personalizzazione dei profili e della scalabilità dei dispositivi
per Android per scoprire come
personalizza BaseDeviceProfile.ini
. Dato che i nuovi driver di dispositivo potrebbero risolvere i problemi
dispositivi dannosi noti, mantieni aggiornato il file BaseDeviceProfile.ini per ottenere
le ottimizzazioni.
Che cos'è l'ADPF
Android Dynamic Performance Framework (ADPF) ottimizza i giochi in base alle funzionalità di gestione termica dinamica, CPU e GPU su Android. I giochi sono in primo piano, ma potete usare le funzionalità anche per altri ad alte prestazioni.
ADPF è un insieme di API che consente a giochi e app ad alte prestazioni di interagiscono in modo più diretto con i sistemi di alimentazione e termica dei dispositivi Android. Con queste API, puoi monitorare il comportamento dinamico sui sistemi Android ottimizzare le prestazioni dei giochi a un livello sostenibile per non surriscaldare i dispositivi.
Di seguito sono riportate le principali funzionalità di ADPF:
- API termica: monitora lo stato termico di un dispositivo in modo che l'applicazione possa regolare in modo proattivo il carico di lavoro prima che diventi insostenibile.
- API CPU Performance Hint: fornisce suggerimenti sulle prestazioni che consentono ad Android di scegliere le impostazioni giuste per le prestazioni (ad esempio, core o punto operativo della CPU) per il carico di lavoro.
- API Game Mode e API Game State: attiva l'ottimizzazione del gameplay dando la priorità alle caratteristiche di prestazioni o durata della batteria in base alle impostazioni dell'utente e alle configurazioni specifiche del gioco.
- Modalità prestazioni fisse: attiva la modalità a prestazioni fisse su un dispositivo durante il benchmarking per ottenere misurazioni che non vengono alterate dal clock dinamico della CPU.
- Modalità di efficienza energetica: indica alla sessione che i thread nella sessione di suggerimenti sulle prestazioni possono essere pianificati in modo sicuro in modo da preferire l'efficienza energetica alle prestazioni. Funzionalità disponibile in Android 15 (livello API 35).
Come utilizzare ADPF nei progetti Android nativi
Il codelab Integrazione delle funzionalità di adattabilità nel gioco nativo ti guida nell'integrazione delle funzionalità ADPF nel tuo con passi che puoi seguire secondo i tuoi tempi. Alla fine codelab, avrai integrato le seguenti funzionalità:
- API termica: ascolta la condizione termica del dispositivo e reagisci prima che questo entri in stato di limitazione termica.
- API Game Mode: comprendi le preferenze di ottimizzazione dei giocatori (ottimizza le prestazioni o preserva la batteria) e apporta le modifiche necessarie.
- API Game State: consenti al sistema di conoscere lo stato del gioco (caricamento, riproduzione, UI e così via) e consentire al sistema di regolare le risorse di conseguenza (incremento di I/O oppure CPU, GPU e così via).
- API Performance Hint: comunica al sistema il tuo modello di threading e il carico di lavoro in modo che il sistema possa allocare le risorse di conseguenza.
Come utilizzare ADPF nel motore grafico Unity
Le prestazioni adattive di Unity sono un per gli sviluppatori di giochi che vogliono ottimizzare i propri giochi sui dispositivi mobili, in particolare per il diversificato ecosistema Android. Prestazioni adattive consente il tuo gioco per adattarsi alle prestazioni e alle caratteristiche termiche del dispositivo in tempo reale, garantendo un'esperienza di gioco fluida ed efficiente.
Provider Android Adaptive Performance ti guiderà nella procedura per implementare ADPF in Unity.
![Finestra di dialogo Impostazioni progetto.](https://developer.android.google.cn/static/topic/performance/vitals/images/unity-adpf.png?authuser=9&hl=it)
Come utilizzare ADPF in Unreal Game Engine
![Finestra di dialogo Impostazioni progetto.](https://developer.android.google.cn/static/topic/performance/vitals/images/unreal-adpf.png?authuser=9&hl=it)
- Scarica il plug-in.
- Copia il plug-in nella cartella dei plug-in del progetto
- Attiva il plug-in ADPF Unreal Engine nell'editor Unreal
- Riavvia l'editor Unreal
- Crea e cucina il gioco
Plug-in Android Dynamic Performance Framework(ADPF) per Unreal Engine fornisce sono stabili ed evita la limitazione termica. Scarica il plug-in da GitHub. Questo plug-in modifica le funzioni impostando Valori irreali della console.