Yükleme süresi kaydetme işlevleri ekleme

Oyununuzun ne zaman yükleme etkinlikleri gerçekleştirdiğini kaydetmeniz iki nedenden dolayı önemlidir:

  1. Yükleme sırasında kare süresi verilerinizin kirli olmasını önlemek için
  2. Yükleme sürelerinin ne zaman ve nerede daha uzun olduğunu görmek için yükleme sürelerini analiz etmek kabul edilir.

Bir yükleme etkinliğinin ilişkili meta verileri 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.

Bir yükleme etkinliğinin, ilişkili bir ek açıklaması da olabilir. Bu, Kare süresi ek açıklamalarıyla aynı şekilde, Annotation öğesinin bir veya daha fazla alanının kullanılmasını sağlayın iletisi dev_tuningfork.proto dosyasıdır.

TuningFork_ErrorCode TuningFork_startRecordingLoadingTime( const TuningFork_LoadingTimeMetadata* eventMetadata, uint32_t eventMetadataSize, const TuningFork_CProtobufSerialization* annotation, TuningFork_LoadingEventHandle* handle);

Bu işlev ve ek açıklamanın sağlandığından emin olmak için bir handle TuningFork_stopRecordingLoadingTime() işlevi.

TuningFork_ErrorCode TuningFork_stopRecordingLoadingTime( TuningFork_LoadingEventHandle handle);

Bu işlev, daha önce şu kullanıcı tarafından başlatılan bir etkinliği kaydetmeyi durdurur: TuningFork_startRecordingLoadingTime() Etkinlik sonraki oturum boşaltma.

TuningFork_ErrorCode TuningFork_recordLoadingTime( uint64_t time_ns, const TuningFork_LoadingTimeMetadata* eventMetadata, uint32_t eventMetadataSize, const TuningFork_CProtobufSerialization* annotation);

Doğrudan başlatma ve durdurma işlevlerinin ekleyebilirsiniz. Ancak bunu yapamıyorsanız bu işlevi çağırabilirsiniz ilişkili meta verileri ve ek açıklamaları kaydetmenizi sağlar.

Grup işlevleri yükleniyor

Oyununuzda tek bir yükleme süresi boyunca birkaç yükleme etkinliği kaydedebilirsiniz kullanıcı tarafından görülür. Örnek olarak dosya yükleme, ve gölgelendirici derlemesi gibi bir dizi video hazırladı.

Tuning Fork'a etkinliklerin yüklenmesinin gerektiği, daha iyi analizler sağlayabilmek için söz konusu grubun bir parçasıdır. Köşeli parantez aşağıdaki başlatma ve durdurma işlevlerine sahip etkinliklerin yüklenmesini sağlayabilirsiniz.

TuningFork_ErrorCode TuningFork_startLoadingGroup( const TuningFork_LoadingTimeMetadata* eventMetadata, uint32_t eventMetadataSize, const TuningFork_CProtobufSerialization* annotation, TuningFork_LoadingEventHandle* handle);

Bu işlev, ve ek açıklamanın sağlandığından emin olmak için bir handle TuningFork_stopLoadingGroup() işlevi. Meta veri ve ek açıklama, şu anda Play arka ucu tarafından kullanılmıyor ve nullptr olarak ayarlanabilir. Sonrakilerin tümü Yükleme etkinlikleri benzersiz bir grup kimliğiyle etiketlenir.

TuningFork_ErrorCode TuningFork_stopLoadingGroup( TuningFork_LoadingEventHandle handle);

Bu işlev, daha önce şu kullanıcı tarafından başlatılan bir yükleme grubunu durdurur: TuningFork_startLoadingGroup() Sonraki yükleme etkinliklerinde TuningFork_startLoadingGroup() tekrar çağrılana kadar grup kimliği.

. Şekil 1. Yükleme grubunu gösteren örnek.