Panoramica di Android Performance Tuner (nativo)

Questo argomento descrive come integrare Android Performance Tuner, noto anche come Tuning Fork, per registrare e caricare dati sulla durata frame da nativi (C e C++).

Per il motore grafico Unity, consulta la guida per Unity.

Premessa

Un componente fondamentale dell'esperienza di gioco sono le prestazioni di rendering. Rendering in corso... il rendimento è il risultato dei due input seguenti:

  • Frequenza fotogrammi: la frequenza con cui viene disegnato un frame.
  • Impostazioni della qualità grafica: livello di precisione della presentazione di un fotogramma. tra cui la fedeltà della simulazione e la grafica.

Per i giochi, per buone prestazioni di rendering si intendono quanto segue:

  • Garantire una frequenza fotogrammi stabile e costante (ovvero la percentuale il rendering dei frame alla frequenza desiderata).
  • Rendering dei frame alla massima frequenza possibile mantenendo stabile, in genere 30 o 60 FPS a seconda del tipo di gioco.
  • Massimizzare il livello di dettaglio per un utente, date le dimensioni dello schermo e densità normale, mantenendo al contempo una frequenza fotogrammi stabile e desiderata.

La libreria del pacing del frame di Android limita gran parte del una variazione della durata dei frame, fornendo una frequenza fotogrammi stabile per i giochi. I restanti la variazione della durata dei fotogrammi è dovuta al livello di dettaglio visualizzato in determinati scene del gameplay e le capacità grafiche del dispositivo. Utilizzo Android Performance Tuner ti consente di individuare i momenti durante il gameplay e la durata frame è più lento o veloce rispetto al target e correla questi problemi e opportunità per:

  • Impostazioni di qualità specifiche
  • Scene specifiche del gioco
  • Modelli o specifiche del dispositivo specifici

Registrare e caricare i dati

La libreria Tuning Fork si basa su uno dei suoi funzioni di graduazione viene chiamato ogni frame dalla libreria Android Frame Pacing. Nella biblioteca, Le informazioni sulle zecche vengono aggregate in istogrammi che vengono poi periodicamente caricati su Google Play tramite un endpoint HTTP. Ogni segno di spunta viene registrato come associato a una chiave dello strumento e a annotazione, le definizioni specificate in un protocollo del buffer.

Tasti degli strumenti

La chiave di uno strumento indica da dove proviene il segno di spunta nel frame. numero intero che deve essere passato a ogni chiamata di funzione di spunta. Pacing del frame Android utilizza un set predefinito di chiavi degli strumenti, definito in swappy_common.h. Puoi anche definire chiavi degli strumenti personalizzate se non usi il pacing del frame libreria.

Annotazioni

Le annotazioni forniscono informazioni contestuali su ciò che sta facendo il tuo gioco quando il segno di spunta viene registrato. Ad esempio, un'annotazione potrebbe identificare seguenti:

  • L'attuale livello di gioco
  • Un "grande capo" è sullo schermo
  • Qualsiasi altra informazione pertinente sullo stato del gioco

Le annotazioni sono definite dal protocollo com.google.tuningfork.Annotation del buffer. Per impostare l'annotazione corrente, passi una serializzazione messaggio che hai definito TuningFork_setCurrentAnnotation() Tutti i dati di selezione successivi vengono quindi associati a questa annotazione fino a quando è impostata l'annotazione. Di seguito è riportato un esempio di definizione di protocollo per le annotazioni:

import "tuningfork.proto"
enum Level {
  INVALID_LEVEL = 0;
  Level_1 = 1;
  Level_2 = 2;
  Level_3 = 3;
}
message Annotation {
  optional Level level = 1;
}

Parametri di fedeltà

I parametri di fedeltà influenzano le prestazioni e la fedeltà grafica del quali il livello di dettaglio del mesh, la risoluzione della texture e l'anti-aliasing . Come le annotazioni, i parametri di fedeltà vengono definiti utilizzando Messaggio del buffer di protocollo com.google.tuningfork.FidelityParams. Quello che segue è una definizione di protocollo di esempio per i parametri di fedeltà:

import "tuningfork.proto"
message FidelityParams {
  int32 texture_quality_level = 1;
  int32 shadow_resolution = 2;
  float terrain_details_percent = 3;
  int32 post_processing_effects_level = 4;
}

Durante l'inizializzazione di Tuning Fork, passi una serializzazione del i parametri usati dal gioco. Puoi modificare questi parametri se, ad esempio, l'utente modifica le impostazioni di rendering del gioco e i successivi dati caricati ai nuovi parametri.

Per consentire a Google Play di comprendere le annotazioni e i parametri di fedeltà definite da te, il file di buffer di protocollo che contiene queste definizioni deve essere integrato nell'APK del gioco, insieme alle impostazioni di inizializzazione. Inoltre devono fornire valori predefiniti per le comuni combinazioni di parametri di fedeltà il tuo APK per segmentare i tuoi dati nell'interfaccia utente di Google Play. Per ulteriori informazioni, vedi Definisci i livelli qualitativi.

Overhead di memoria e CPU

Tutta la memoria utilizzata dalla libreria Tuning Fork è allocata in per evitare sorprese durante il gameplay. Le dimensioni dei dati dipende dal numero di tasti degli strumenti, dal numero di possibili annotazioni e numero di bucket in ogni istogramma; è un multiplo di tutti questi per quattro per ogni bucket. Esistono anche due copie di tutti gli istogrammi per consentire dell'invio in un doppio buffer.

L'invio avviene su un thread separato e non blocca le chiamate selezionate. In caso contrario connessione di caricamento è disponibile, i contenuti inviati vengono messi in coda per un caricamento successivo.

L'overhead di elaborazione per chiamare una funzione di graduazione è ridotto: calcola un indice nell'array dei bucket di istogrammi e incrementa conteggio di numeri interi.

Integra la libreria di Tuning Fork

Questa guida all'integrazione è divisa in due parti. La prima parte descrive per eseguire un test end-to-end utilizzando un'app demo e Google Play Console. La la seconda parte descrive come integrare la libreria Tuning Fork la tua toolchain e come utilizzare le funzioni fornite dalla libreria. Fai clic sull' Avanti qui sotto per iniziare.