Sessioni lente

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.
Figura 1. Una sessione lenta in Android vitals.
.

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:

  1. Esegui il comando con i flag enable e clear per avviare l'acquisizione informazioni:

    adb shell dumpsys SurfaceFlinger --timestats -clear -enable
    
  2. 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
    ...
    
  3. 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:

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.
Figura 2. Attiva il pacing del frame in Unity Engine.

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.
Figura 3. Attiva l'API Unity Auto Graphics.

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.
Figura 4. Scegli manualmente Vulkan come API grafica principale in Unity.

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.
Figura 5. Attiva Vulkan in Unreal Engine.

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.
Figura 6. Integra ADPF in Unity Engine.

Come utilizzare ADPF in Unreal Game Engine

Finestra di dialogo Impostazioni progetto.
Figura 7. Integra ADPF in Unreal Engine.
  1. Scarica il plug-in.
  2. Copia il plug-in nella cartella dei plug-in del progetto
  3. Attiva il plug-in ADPF Unreal Engine nell'editor Unreal
  4. Riavvia l'editor Unreal
  5. 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.