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
undFidelityParams
lauten. - Du kannst nur
enums
verwenden, die in dieser Datei als Teil der Annotationen definiert sind. - Sie können nur
enums
,int32s
oderfloats
inFidelityParams
-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 oderTICK_BASED
um alle n Ticks hochzuladen.intervalms_or_count
: n für das Feldmethod
.max_instrumentation_keys
: Anzahl der zu verwendenden Instrumentierungsschlüssel. Festlegen auf4
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 inlogcat
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 dietraining_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
undrequired
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.