Anmerkungen, Parameter zur Grafikqualität und Einstellungen definieren

In diesem Dokument wird beschrieben, wie Sie Anmerkungen, Parameter zur Grafikqualität und Einstellungen in Ihrem Projekt.

Annotationen und Parameter zur Grafikqualität

Anmerkungen enthalten Kontextinformationen darüber, was in deinem Spiel passiert, wenn ein wird aufgezeichnet. Die Parameter zur Grafikqualität reflektieren die Leistung und Einstellungen deines Spiels zu ändern. Diese definieren Sie mithilfe von Protokollzwischenspeichern. Das sprachneutrale, strukturierte Datenaustauschformat von Google. Weitere Informationen Informationen zur Verwendung von Protokollpuffern in deinem Spiel findest du unter Protokollzwischenspeicher

Die möglichen Anmerkungen und Parameter zur Grafikqualität für Ihr Spiel werden in einem Datei namens dev_tuningfork.proto, die sich im assets/tuningfork befindet Verzeichnis Ihres Projekts. Hier sehen Sie ein Beispiel aus der Demo-App:

syntax = "proto3";

package com.google.tuningfork;

enum InstrumentKey {
  CPU = 0;
  GPU = 1;
  SWAPPY_WAIT = 2;
  SWAPPY_SWAP = 3;
  CHOREOGRAPHER = 4;
}

enum Level {
  // 0 is not a valid value
  LEVEL_INVALID = 0;
  LEVEL_1 = 1;
  LEVEL_2 = 2;
  LEVEL_3 = 3;
};

message Annotation {
  Level level = 1;
}

message FidelityParams {
  int32 num_spheres = 1;
  float tesselation_percent = 2;
}

Beachten Sie Folgendes:

  • Das Paket muss com.google.tuningfork sein.
  • Die Namen der Nachrichten müssen genau Annotation und FidelityParams lauten.
  • Du kannst nur enums verwenden, die in dieser Datei als Teil der Annotationen definiert sind.
  • Sie können nur enums, int32s oder floats in FidelityParams-Feldern verwenden.
  • Die Validierungstool diese Konventionen durchsetzt.

Einstellungen

Die Nachricht Settings wird durch tuningfork.proto definiert. Ein vollständiges Beispiel finden Sie in der folgende Datei:

gamesdk/samples/tuningfork/insightsdemo/app/src/main/assets/tuningfork/tuningfork_settings.txt

Du musst die Einstellungen für dein Spiel in einer Datei namens tuningfork_settings.txt im Verzeichnis assets/tuningfork Ihrer Projekt arbeiten. Sie müssen nur die folgenden Felder angeben:

  • aggregation_strategy: Eine Nachricht, die Folgendes enthält:

    • method: TIME_BASED zum Hochladen alle n Millisekunden oder TICK_BASED um alle n Ticks hochzuladen.
    • intervalms_or_count: n für das Feld method.
    • max_instrumentation_keys: Anzahl der zu verwendenden Instrumentierungsschlüssel. Festlegen auf 4 gesetzt, wenn Sie die Android Frame Pacing Library verwenden.
    • annotation_enum_size: Ein optionales Feld, da die Größe berechnet wird beim Start über die Beschreibung.
  • api_key: Der API-Schlüssel des Cloud-Projekts Ihrer Anwendung, der zum Validieren von Anfragen an Endpunkt. Informationen zum Generieren dieses Schlüssels finden Sie unter Aktivieren Sie die API. Wenn Wenn Sie Verbindungsfehler in logcat sehen, prüfen Sie, ob der API-Schlüssel korrekt ist.

  • default_fidelity_parameters_filename: Der Parametersatz zur Grafikqualität, der verwendet wird Initialisierung (optional, wenn Sie die training_fidelity_params in Ihrem Code).

  • level_annotation_index (optional): der Index in den Anmerkungsfeldern von die Nummer der Ebene.

Das folgende Beispiel zeigt eine Textdarstellung:

aggregation_strategy: {method: TIME_BASED, intervalms_or_count: 10000,
  max_instrumentation_keys: 5, annotation_enum_size: [3,4]}
api_key: "API-KEY-FROM-GOOGLE-CLOUD-CONSOLE"
default_fidelity_parameters_filename: "dev_tuningfork_fidelityparams_3.bin"
level_annotation_index: 1

Anmerkungen festlegen

Du musst Anmerkungen während des Spiels manuell einfügen. Sie können eine Beispiel in der Demo-App, da alle Levels im Spiel durchlaufen werden. automatisch. Weitere Informationen finden Sie in der SetAnnotations()-Funktion in insightsdemo.cpp

In diesem Fall gibt die Anmerkung nur die Nummer der Ebene an.

message Annotation {
  Level level = 1;
}

Qualitätsstufen definieren

Verwenden Sie Qualitätsstufen, um Sitzungen mit Anmerkungen zu versehen, damit Sie feststellen können, ob die Geräte die Qualität zu hoch ist (was zu einer geringeren Leistung führt) oder zu niedrig ist, was die Bildqualität unnötig verschlechtert.

Sie müssen mindestens eine und vorzugsweise mehrere Qualitätsstufen für Ihre Spiel. Eine Qualitätsstufe entspricht einer Instanz von FidelityParams angezeigt. Diese Stufen müssen in ansteigender Reihenfolge der Grafikqualität mit den folgendes Format für Dateinamen:

dev_tuningfork_fidelityparams_i.txt

Dabei ist i ein Index, der bei 1 mit einem Höchstwert beginnt von 15. Diese Dateien müssen sich im Verzeichnis assets/tuningfork Ihres Projekt arbeiten. Das Beispielprojekt zeigt ein Beispiel für diese Struktur in der gamesdk/samples/tuningfork/insightsdemo/app/src/main/assets/tuningfork/ -Verzeichnis.

Protokollzwischenspeicher

Die Tuning Fork-Bibliothek verwendet das Protokollpufferformat von Google für Einstellungen, Anmerkungen und Fidelity-Parameter. Dies ist ein klar definierter mehrsprachigen Protokolls für erweiterbare strukturierte Daten. Weitere Informationen sieh dir die Dokumentation zu Protocol Buffers

Proto2 vs. proto3

Die Version des Protokollpufferformats wird in der ersten Zeile der Datei festgelegt:

syntax="proto2";

Proto2 und proto3 sind zwei häufig verwendete Versionen von Protokollpuffern. Beide dasselbe Kabelformat verwenden, aber die Definitionsdateien sind nicht kompatibel. Schlüssel Unterschiede zwischen den beiden Versionen:

  • Die Keywords optional und required sind in proto3 nicht mehr zulässig.
  • In proto3 ist praktisch alles optional.
  • Erweiterungen werden in proto3 nicht unterstützt.

Verwenden Sie in Ihren Proto-Dateien proto3, da diese in C# kompiliert werden können. Proto2 funktioniert sowie mit dem eingeschränkten Funktionsumfang der Abstimmungs Fork-Bibliothek.

Text vs. binäre Darstellungen

Das binäre protobuf-Wire-Format ist klar definiert und stabil protobuf-Versionen (der generierte Code nicht). Es gibt auch ein Textformat, die Vollversion der protobuf-Bibliothek generieren und lesen kann. Dieses Format ist nicht so klar definiert, aber für die begrenzte Anzahl von Funktionen im Tuning Fork-Bibliothek. Sie können zwischen Binär- und Textformaten wechseln. Verwenden Sie dazu den Compiler protoc. Mit dem folgenden Befehl wird ein protobuf-Text in Binärcode:

protoc --encode com.google.tuningfork.Settings tuningfork.proto < tuningfork_settings.txt > tuningfork_settings.bin

Sie müssen Binärdateien anstelle von Textdateien in Ihre APK-Datei aufnehmen, da die Die vollständige protobuf-Bibliothek ist mehrere MB groß. der Stimmgabel Bibliothek abhängig wäre, würde dein Spiel ungefähr so groß werden.

Full vs. Lite oder Nano

Neben der vollständigen protobuf-Bibliothek gibt es eine Lite-Version, die Code reduziert Fußabdruck durch Entfernen einiger Merkmale wie Reflexion, FileDescriptors und zu und von Textformaten zu streamen. Für diese Version sind noch mehrere MB und daher verwendet die Tuning Fork-Bibliothek intern nanopb-Bibliothek Quellcode diese Bibliothek ist im Android Open Source Project in external/nanopb-c enthalten und gehört zum Zweig gamesdk. Verwende diese Mediathek in deinem Spiel, wenn die Codegröße groß ist ist ein Problem.

In gamesdk/src/protobuf gibt es CMake-Dateien, die Ihnen bei der alle drei Versionen von protobuf. In den Beispielen wird sowohl Nanopb als auch vollständige protobuf.