Panoramica di Android Performance Tuner (Unity)

Questa guida descrive come utilizzare un plug-in Unity per registrare e caricare i dati della durata frame da Unity 2017.4 o versioni successive.

Per i motori di gioco che utilizzano C o C++, consulta la guida per i motori di gioco nativi.

Premessa

Un componente fondamentale dell'esperienza di gioco è il rendimento del rendering. Le prestazioni di rendering sono il risultato dei due input seguenti:

  • Frequenza fotogrammi: la frequenza con cui viene disegnato un fotogramma.
  • Impostazioni della qualità grafica: livello di fedeltà a cui viene presentato un frame, inclusa la fedeltà della simulazione e la grafica.

Per i giochi, una buona prestazione di rendering si definisce come segue:

  • Pubblicazione di una frequenza fotogrammi stabile e coerente (ovvero la percentuale di frame visualizzati alla frequenza desiderata).
  • Viene eseguito il rendering dei frame alla massima frequenza possibile mantenendo la stabilità. In genere, a 30 o 60 FPS, a seconda del tipo di gioco.
  • Massimizzazione del livello di dettaglio per un utente in base alle dimensioni e alla densità dello schermo, ottenendo comunque una frequenza fotogrammi stabile e desiderata.

La libreria del pacing dei frame Android limita gran parte della variazione della durata dei frame, fornendo una frequenza fotogrammi stabile per i giochi. La restante variazione della durata dei frame è dovuta al livello di dettaglio visualizzato durante determinate scene del gameplay e alle funzionalità grafiche del dispositivo. Con Android Performance Tuner puoi individuare i momenti del gameplay in cui la durata frame è più lenta o più veloce del tuo target e correlare questi problemi e opportunità per:

  • Impostazioni di qualità specifiche
  • Scene specifiche nel gioco
  • Modelli di dispositivi o specifiche tecniche specifici

Registra e carica i dati

La libreria Tuning Fork si basa su una delle sue funzioni di graduazione, chiamata ogni frame dalla libreria di pacing dei frame Android (o dal motore Unity per le versioni meno recenti di Unity in cui la libreria del pacing dei frame non è presente). All'interno della libreria, queste informazioni sui segni di spunta vengono aggregate in istogrammi, che vengono poi caricati periodicamente su Google Play tramite un endpoint HTTP. Ogni segno di spunta viene registrato come associato a una chiave dello strumento e a un'annotazione. Puoi definire le annotazioni utilizzando il plug-in Unity.

Tasti degli strumenti

Un tasto strumento indica la provenienza del frame nel frame ed è un numero intero che deve essere passato a ogni chiamata di funzione di graduazione. Questa operazione viene eseguita automaticamente dal plug-in Unity. Se l'opzione Pacing del frame ottimizzato è attiva nelle impostazioni di Unity per il tuo gioco (disponibile nella versione Unity 2019.3.14 o successive), Android Performance Tuner utilizzerà le informazioni della libreria di pacing dei frame Android per generare report sulle metriche avanzate.

Annotazioni

Le annotazioni forniscono informazioni contestuali sull'attività del gioco quando viene registrato un tick. Ad esempio, un'annotazione potrebbe identificare quanto segue:

  • Il livello di gioco corrente
  • Caricamento di una scena specifica
  • Sullo schermo c'è un grande capo
  • Qualsiasi altra informazione pertinente sullo stato del gioco

Le annotazioni vengono definite in una finestra di dialogo fornita dal plug-in Unity.

Internamente, la libreria Tuning Fork utilizza il formato di buffer del protocollo di Google per archiviare le annotazioni e i parametri di fedeltà. Si tratta di un protocollo multilingue ben definito per dati strutturati estensibili. Per ulteriori informazioni, consulta la documentazione sui buffer di protocollo.

Parametri di fedeltà

I parametri di fedeltà influiscono sulle prestazioni e sulla fedeltà grafica del gioco, ad esempio il livello di dettaglio del mesh, la risoluzione delle texture e il metodo di anti-alias. Come le annotazioni, i parametri di fedeltà vengono definiti in una finestra di dialogo fornita dal plug-in Unity.

Overhead di memoria e CPU

Tutta la memoria utilizzata dalla libreria Tuning Fork viene allocata all'inizializzazione per evitare sorprese durante il gameplay. La dimensione dei dati dipende dal numero di chiavi degli strumenti, dal numero di possibili annotazioni e dal numero di bucket in ogni istogramma; è un multiplo di tutti questi moltiplicati per quattro byte per ogni bucket. Esistono anche due copie di tutti gli istogrammi per consentire l'invio con doppio buffer.

L'invio avviene su un thread separato e non blocca le chiamate dei segni di graduazione. Se non è disponibile alcuna connessione per il caricamento, i contenuti inviati vengono messi in coda per essere caricati in un secondo momento.

La chiamata di una funzione di graduazione richiede un sovraccarico di elaborazione minimo: calcola semplicemente un indice nell'array di bucket a istogrammi e incrementa un conteggio intero.

Richieste web

La libreria invia due tipi di richieste all'endpoint del server:

  • Una richiesta generateTuningParameters all'inizializzazione
  • Periodicamente durante il gameplay una richiesta uploadTelemetry per inviare dati al server

Giocatori offline

Se non è disponibile una connessione all'inizializzazione, la richiesta viene tentata di nuovo più volte con un tempo di backoff crescente. Se non c'è connessione al momento del caricamento, il caricamento viene memorizzato nella cache. I caricamenti vengono archiviati come file nello spazio di archiviazione temporaneo.

Requisiti

Per usare il plug-in nel tuo gioco, usa una versione supportata di Unity:

  • Unity versione 2017.4 o successive e .NET versione 4.6
  • Per utilizzare i file di espansione APK, è necessario Unity 2018.2
  • Per migliorare il pacing del frame e le misurazioni della GPU, è necessaria la versione 2019.3.14 di Unity o una versione successiva
  • Per il supporto delle scene Addressables, sono necessari Unity 2019.3 o versioni successive e il pacchetto Addressables 1.19.4 o versioni successive.

Integra Android Performance Tuner in Unity

Per informazioni sull'integrazione di Android Performance Tuner in Unity, consulta Abilitare l'API.