Questa guida descrive come utilizzare un plug-in Unity per registrare e caricare i dati relativi alla 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 chiave dell'esperienza di gioco sono le prestazioni di rendering. Le prestazioni di rendering sono il risultato dei due input seguenti:
- Frequenza fotogrammi: la frequenza con cui viene disegnata un fotogramma.
- Impostazioni della qualità grafica: livello di fedeltà con cui viene presentato un frame, tra cui la fedeltà della simulazione e la grafica.
Per i giochi, una buona prestazione di rendering viene definita 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 30 o 60 FPS, a seconda del tipo di gioco.
- Massimizzare il livello di dettaglio per un utente in base alle dimensioni e alla densità dello schermo, ottenendo comunque la frequenza fotogrammi stabile e desiderata.
La libreria del pacing dei frame Android limita gran parte della variazione nelle durate frame, fornendo una frequenza fotogrammi stabile per i giochi. La variazione restante 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 dell'obiettivo e correlare questi problemi e opportunità per:
- Impostazioni di qualità specifiche
- Scene specifiche nel gioco
- Modelli o specifiche dei dispositivi specifici
Registra e carica i dati
La libreria Diapason si basa su una delle sue funzioni di spunta, che viene denominata ogni frame dalla libreria del pacing frame Android (o dal motore Unity per le versioni meno recenti di Unity in cui la libreria del pacing frame non è presente). All'interno della libreria, le 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 dello strumento indica da dove proviene il segno di spunta nel frame ed è un numero intero che deve essere passato a ogni chiamata di funzione di graduazione. Ciò viene eseguito automaticamente dal plug-in Unity. Se l'opzione Pacing del frame ottimizzato è attivata nelle impostazioni Unity del tuo gioco (disponibile in Unity 2019.3.14 o versioni 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 segno di spunta. Ad esempio, un'annotazione potrebbe identificare uno qualsiasi dei seguenti elementi:
- Il livello di gioco attuale
- È in corso il 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 annotazioni e parametri di fedeltà. Si tratta di un protocollo multilingue ben definito per dati strutturati estensibili. Per ulteriori informazioni, consulta la documentazione relativa ai buffer di protocollo.
Parametri di fedeltà
I parametri di fedeltà influenzano le prestazioni e la 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à sono definiti in una finestra di dialogo fornita dal plug-in Unity.
Overhead di memoria e CPU
Tutta la memoria utilizzata dalla libreria di 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 tutte queste volte quattro byte per ogni bucket. Esistono inoltre due copie di tutti gli istogrammi per consentire l'invio con doppio buffer.
L'invio avviene in un thread separato e non blocca le chiamate dei segni di spunta. Se non è disponibile alcuna connessione di caricamento, l'invio viene messo in coda per il caricamento successivo.
Le chiamate a una funzione di spunta richiedono un overhead di elaborazione ridotto: calcola semplicemente un indice nell'array di bucket a istogrammi e incrementa un conteggio intero.
Richieste web
La libreria effettua 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
Player offline
Se non è disponibile una connessione al momento dell'inizializzazione, la richiesta viene riprovata più volte con un tempo di backoff crescente. In assenza di connessione al momento del caricamento, il caricamento viene memorizzato nella cache. I caricamenti vengono archiviati come file nello spazio di archiviazione temporaneo.
Requisiti
Per utilizzare il plug-in nel tuo gioco, usa una versione supportata di Unity:
- Unity 2017.4 o versioni successive e .NET versione 4.6
- Per utilizzare i file di espansione APK, è necessario Unity 2018.2
- Per il miglioramento del pacing dei frame e delle misurazioni della GPU, è necessaria Unity 2019.3.14 o successive
- Per il supporto delle scene Addressables, sono richiesti Unity 2019.3 o versioni successive e Addressables Package 1.19.4 o versioni successive.
Integrare Android Performance Tuner in Unity
Per informazioni sull'integrazione di Android Performance Tuner in Unity, consulta Abilitare l'API.