Oyununuzun yükleme etkinlikleri gerçekleştirdiği zamanları kaydetmek iki nedenden dolayı önemlidir:
- Yükleme sırasında kare süresi verilerinizin bozulmasını önlemek için.
- Yükleme sürelerinin ne zaman ve nerede kabul edilebilir süreden daha uzun olduğunu görmek için yükleme sürelerini analiz etme.
Yükleme etkinliğiyle ilişkili meta veriler olabilir:
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;
İhtiyaçlarınızla alakalı olmayan alanlar sıfır olabilir.
Yükleme etkinliğine ilişkili bir açıklama da eklenebilir. Bu, dev_tuningfork.proto
dosyasındaki Annotation
mesajında bir veya daha fazla alan kullanılarak kare süresi açıklamalarıyla aynı şekilde tanımlanır.
Bu işlev, belirtilen meta veriler ve ek açıklamayla ilişkili bir yükleme süresi etkinliğini kaydetmeye başlar ve handle
işlevinde kullanılacak bir TuningFork_stopRecordingLoadingTime()
doldurur.
TuningFork_ErrorCode TuningFork_stopRecordingLoadingTime(
TuningFork_LoadingEventHandle handle);
Bu işlev, daha önce TuningFork_startRecordingLoadingTime()
tarafından başlatılan bir etkinliğin kaydını durdurur. Etkinlik, bir sonraki oturum temizleme işleminde yüklenir.
Daha önce açıklanan başlatma ve durdurma işlevlerini doğrudan kullanmanızı önemle tavsiye ederiz. Ancak bunu yapamıyorsanız süreyi ve ilişkili meta verileri ile açıklamayı kaydetmek için bu işlevi çağırabilirsiniz.
Grup işlevleri yükleniyor
Oyununuzda, kullanıcı tarafından görülen tek bir yükleme dönemi için birden fazla yükleme etkinliği kaydedebilirsiniz. Dosya yükleme, sıkıştırmayı açma ve gölgelendirici derleme gibi işlemler bu kapsamda yer alır.
Daha iyi analizler sunabilmesi için Tuning Fork'u yükleme etkinliklerinin bu tür bir grubun parçası olduğu konusunda bilgilendirmeniz önemlidir. Bunu yapmak için yükleme etkinliklerinizi aşağıdaki başlangıç ve durdurma işlevleriyle sınırlayın.
Bu işlev, verilen meta veriler ve ek açıklamalarla ilişkili bir yükleme grubunu başlatır ve handle
işlevinde kullanılacak bir TuningFork_stopLoadingGroup()
doldurur. Üst veriler ve ek açıklamalar şu anda Play arka ucu tarafından kullanılmamaktadır ve nullptr
olarak ayarlanabilir. Sonraki tüm yükleme etkinlikleri benzersiz bir grup kimliğiyle etiketlenir.
TuningFork_ErrorCode TuningFork_stopLoadingGroup(
TuningFork_LoadingEventHandle handle);
Bu işlev, daha önce TuningFork_startLoadingGroup()
tarafından başlatılan bir yükleme grubunu durdurur. TuningFork_startLoadingGroup()
tekrar çağrılana kadar sonraki yükleme etkinliklerinde grup kimliği olmaz.
1. Şekil. Yükleme grubu örneği.