Android Performance Tuner (nativ)

In diesem Artikel wird beschrieben, wie Sie den Android Performance Tuner, den sogenannten Tuning Fork-Bibliothek, um Frame-Time-Daten von nativen C-Dateien (C und C++) Spiel-Engines.

Informationen zur Unity-Spiel-Engine finden Sie in der Leitfaden für Unity.

Hintergrund

Eine wichtige Komponente des Spiels ist die Rendering-Leistung. Rendering die Leistung ist das Ergebnis der folgenden beiden Eingaben:

  • Framerate: Wie oft ein Frame gezeichnet wird.
  • Grafikqualität: Grad der Grafikqualität, mit der ein Frame dargestellt wird, einschließlich Simulationstreue und Grafiken.

Für Spiele wird eine gute Rendering-Leistung so definiert:

  • Bei der Bereitstellung einer stabilen, konsistenten Frame-Rate (d. h. der Prozentsatz der die mit der gewünschten Frequenz gerendert werden.
  • Frames mit der höchstmöglichen Frequenz rendern, ohne bei etwa 30 oder 60 fps, je nach Art des Spiels.
  • Maximierung des Detaillierungsgrads für Nutzende angesichts ihrer Bildschirmgröße und und gleichzeitig eine gewünschte, stabile Frame-Rate erreichen.

Die Android Frame Pacing Library beschränkt die Schwankungen der Framezeiten und sorgen so für eine stabile Framerate bei Spielen. Die verbleibenden Schwankungen der Frame Times sind auf den Detaillierungsgrad bei bestimmten Gameplay-Szenen und die grafischen Fähigkeiten des Geräts. Mit Mit dem Android Performance Tuner kannst du feststellen, zu welchen Zeiten während des Spiels die Frame Time langsamer oder schneller als das Ziel ist, und diese Probleme und Möglichkeiten:

  • Spezifische Qualitätseinstellungen
  • Bestimmte Szenen in deinem Spiel
  • Bestimmte Gerätemodelle oder technische Daten

Daten aufzeichnen und hochladen

Die Tuning Fork-Bibliothek basiert auf einer ihrer Tick-Funktionen die von der Android Frame Pacing Library für jeden Frame aufgerufen werden. In der Bibliothek Diese Teilstrichinformationen werden in Histogrammen zusammengefasst, die dann in regelmäßigen Abständen die über einen HTTP-Endpunkt bei Google Play hochgeladen werden. Jedes Tick wird erfasst als die mit einem Instrumentenschlüssel und einem annotation, für die Sie in einem Protokoll die Definitionen festlegen Pufferdatei.

Tasteninstrumente

Ein Instrumentenschlüssel gibt an, woher der Teil im Frame stammt, und ist ein Ganzzahl, die an jeden Tick-Funktionsaufruf übergeben werden muss. Die Android Frame-Taktung Die Bibliothek verwendet einen vordefinierten Satz von Instrumentenschlüsseln, die in swappy_common.h definiert sind. Du kannst auch deine eigenen Instrumenteschlüssel definieren, wenn du die Frame-Taktung nicht verwendest. Bibliothek.

Anmerkungen

Anmerkungen enthalten Kontextinformationen darüber, was in deinem Spiel passiert, wenn ein wird aufgezeichnet. Eine Anmerkung könnte beispielsweise Folgendes:

  • Das aktuelle Level in einem Spiel
  • Ein „Big Boss“ ist auf dem Bildschirm zu sehen
  • Sonstige relevante Informationen zum Spielstatus

Annotationen werden durch das com.google.tuningfork.Annotation-Protokoll definiert Puffermeldung. Um die aktuelle Annotation festzulegen, übergeben Sie eine Serialisierung der die Sie definiert haben, TuningFork_setCurrentAnnotation() Alle nachfolgenden Teilstrichdaten werden dann mit dieser Anmerkung verknüpft, bis eine andere festgelegt ist. Das folgende Beispiel zeigt eine Proto-Definition für Annotationen:

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

Parameter zur Grafikqualität

Parameter zur Grafikqualität wirken sich auf die Leistung und die Grafikqualität des wie Detailtiefe im Mesh-Netzwerk, Texturauflösung und Kantenglättung. . Wie bei Anmerkungen werden Parameter zur Grafikqualität mithilfe der Protokollzwischenspeicher-Nachricht com.google.tuningfork.FidelityParams. Folgendes ist eine Beispiel-Proto-Definition für Parameter zur Grafikqualität:

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;
}

Bei der Initialisierung von Tuning Fork übergeben Sie eine Serialisierung der Parameter, die das Spiel verwendet. Sie können diese Parameter beispielsweise in folgenden Fällen ändern: Der Nutzer ändert die Einstellungen für das Spiel-Rendering und Ihre anschließend hochgeladenen Daten. mit den neuen Parametern verknüpft ist.

Damit Google Play die Anmerkungen und die Parameter zur Grafikqualität verstehen kann muss die Protokollpufferdatei mit diesen Definitionen im APK des Spiels enthalten, zusammen mit den Initialisierungseinstellungen. Außerdem müssen Standardwerte für häufig verwendete Kombinationen von Fidelity-Parametern in Ihre APK-Datei hochladen, damit Ihre Daten in der Google Play-Benutzeroberfläche danach segmentiert werden. Weitere Informationen finden Sie unter Definieren Sie Qualitätsstufen.

Arbeitsspeicher- und CPU-Overhead

Der gesamte von der Tuning Fork-Bibliothek verwendete Arbeitsspeicher um Überraschungen während des Spiels zu vermeiden. Die Größe der Daten hängt von der Anzahl der Instrumentenschlüssel, der Anzahl möglicher Annotationen Anzahl der Buckets in jedem Histogramm; es ist ein Vielfaches all dieser Male, 4 Byte für jeden Bucket. Außerdem gibt es zwei Kopien aller Histogramme, in doppelter Pufferung einzustufen.

Die Übertragung erfolgt über einen separaten Thread und blockiert Tick-Aufrufe nicht. Falls nein Upload-Verbindung verfügbar ist, wird die Einreichung für den späteren Upload in die Warteschlange gestellt.

Der Verarbeitungsaufwand für das Aufrufen einer Tick-Funktion ist gering: berechnet einen Index für das Array von Histogramm-Buckets und inkrementiert einen Anzahl der Ganzzahlen.

Abstimmungs Fork-Bibliothek einbinden

Dieser Integrationsleitfaden ist in zwei Teile gegliedert. Im ersten Teil wird beschrieben, um einen End-to-End-Test mit einer Demo-App und der Google Play Console durchzuführen. Die Im zweiten Teil wird beschrieben, wie Sie die Abstimmungs-Fork-Bibliothek und wie Sie die von der Bibliothek bereitgestellten Funktionen verwenden. Klicken Sie auf das Weiter unten, um loszulegen.