Es ist aus zwei Gründen wichtig, die Ladeereignisse Ihres Spiels aufzuzeichnen:
- Um eine Verschmutzung Ihrer Frame Time-Daten beim Laden zu vermeiden.
- Um Ladezeiten zu analysieren, um zu ermitteln, wann und wo Ladezeiten länger sind als akzeptabel.
Ein Ladeereignis kann zugehörige Metadaten haben:
typedef struct TuningFork_LoadingTimeMetadata {
enum LoadingState {
UNKNOWN_STATE = 0,
// The first time the game is run
FIRST_RUN = 1,
// App is not backgrounded
COLD_START = 2,
// App is backgrounded
WARM_START = 3,
// App is backgrounded, least work needed
HOT_START = 4,
// Asset loading between levels
INTER_LEVEL = 5
} state;
enum LoadingSource {
UNKNOWN_SOURCE = 0,
// Uncompressing data.
MEMORY = 1,
// Reading assets from APK bundle.
APK = 2,
// Reading assets from device storage.
DEVICE_STORAGE = 3,
// Reading assets from external storage, e.g. SD card.
EXTERNAL_STORAGE = 4,
// Loading assets from the network.
NETWORK = 5,
// Shader compilation.
SHADER_COMPILATION = 6,
// Time spent between process starting and onCreate.
PRE_ACTIVITY = 7,
// Total time spent between process starting and first render frame.
FIRST_TOUCH_TO_FIRST_FRAME = 8
} source;
int32_t compression_level; // 0 = no compression, 100 = max compression
enum NetworkConnectivity {
UNKNOWN = 0,
WIFI = 1,
CELLULAR_NETWORK = 2
} network_connectivity;
uint64_t network_transfer_speed_bps; // bandwidth in bits per second
uint64_t network_latency_ns; // latency in nanoseconds
} TuningFork_LoadingTimeMetadata;
Alle Felder, die für Ihre Anforderungen nicht relevant sind, können null sein.
Ein Ladeereignis kann auch mit einer Anmerkung verknüpft sein. Dies wird in den
wie bei Frame Time-Anmerkungen, wobei ein oder mehrere Felder im Annotation
verwendet werden
in der Datei dev_tuningfork.proto
.
Diese Funktion beginnt mit der Aufzeichnung eines Ladezeitereignisses, das mit dem
Metadaten und Annotationen gegeben und füllt ein handle
aus, das im
TuningFork_stopRecordingLoadingTime()
.
TuningFork_ErrorCode TuningFork_stopRecordingLoadingTime(
TuningFork_LoadingEventHandle handle);
Diese Funktion beendet die Aufzeichnung eines Ereignisses, das zuvor durch gestartet wurde.
TuningFork_startRecordingLoadingTime()
Die Veranstaltung wird am nächsten
Leeren der Sitzung.
Wir empfehlen dringend, die Start- und Stopp-Funktionen direkt zu verwenden. beschrieben. Sollte dies nicht möglich sein, können Sie diese Funktion aufrufen, um eine Dauer und die zugehörigen Metadaten und Anmerkungen aufzuzeichnen.
Gruppenfunktionen werden geladen
Sie können in Ihrem Spiel mehrere Ladeereignisse für einen einzigen Ladezeitraum aufzeichnen. die für die Nutzenden sichtbar sind. Dazu zählen unter anderem das Laden von Dateien, Dekomprimierung und Shader-Kompilierung.
Es ist wichtig, Abstimmungs Fork darüber zu informieren, dass Ladeereignisse die zu einer solchen Gruppe gehören, damit sie bessere Erkenntnisse liefern kann. In eckige Klammern mit den folgenden Start- und Stopp-Funktionen verwenden.
Diese Funktion startet eine Ladegruppe, die dem
Metadaten und Annotationen gegeben und füllt ein handle
aus, das im
TuningFork_stopLoadingGroup()
. Die Metadaten und Annotationen
wird derzeit nicht vom Play-Backend verwendet und kann auf nullptr
gesetzt werden. Alle nachfolgenden
mit einer eindeutigen Gruppen-ID gekennzeichnet.
TuningFork_ErrorCode TuningFork_stopLoadingGroup(
TuningFork_LoadingEventHandle handle);
Diese Funktion stoppt eine Ladegruppe, die zuvor durch
TuningFork_startLoadingGroup()
Nachfolgende Ladeereignisse haben keinen
Gruppen-ID, bis TuningFork_startLoadingGroup()
noch einmal aufgerufen wird.
Abbildung 1: Beispiel für die Ladegruppe.