ضبط زمانی که بازی شما در حال انجام رویدادهای بارگذاری است به دو دلیل مهم است:
- برای اینکه دادههای زمان فریم خود را هنگام بارگیری آلوده نکنید.
- برای تجزیه و تحلیل زمان بارگذاری برای دیدن زمان و مکان بارگذاری بیشتر از حد قابل قبول.
یک رویداد بارگیری میتواند ابرداده مرتبط داشته باشد:
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;
هر فیلدی که با نیازهای شما مرتبط نیست می تواند صفر باشد.
یک رویداد بارگیری همچنین می تواند یک حاشیه نویسی مرتبط داشته باشد. این به همان شیوه حاشیه نویسی زمان فریم، با استفاده از یک یا چند فیلد در پیام Annotation
در فایل dev_tuningfork.proto
تعریف می شود.
این تابع شروع به ضبط یک رویداد زمان بارگیری مرتبط با فراداده و حاشیه نویسی می کند و یک handle
را برای استفاده در تابع TuningFork_stopRecordingLoadingTime()
پر می کند.
TuningFork_ErrorCode TuningFork_stopRecordingLoadingTime( TuningFork_LoadingEventHandle handle);
این تابع ضبط رویدادی را که قبلاً توسط TuningFork_startRecordingLoadingTime()
شروع شده بود متوقف می کند. این رویداد در جلسه بعدی بارگذاری می شود.
ما قویاً توصیه می کنیم که مستقیماً از عملکردهای شروع و توقف که قبلاً توضیح داده شد استفاده کنید. با این حال، اگر نمی توانید این کار را انجام دهید، می توانید این تابع را برای ضبط مدت زمان و فراداده و حاشیه نویسی مرتبط با آن فراخوانی کنید.
بارگیری توابع گروه
در بازی خود، ممکن است چندین رویداد بارگیری را برای یک دوره بارگیری که توسط کاربر مشاهده شده است، ضبط کنید. برخی از مثالها شامل بارگذاری فایل، فشردهسازی و کامپایل سایهزن (اما محدود نمیشوند) هستند.
مهم است که به Tuning Fork اطلاع دهید که رویدادهای بارگذاری بخشی از چنین گروهی است تا بتواند بینش بهتری ارائه دهد. برای انجام این کار، رویدادهای بارگیری خود را با توابع شروع و توقف زیر براکت کنید.
این تابع یک گروه بارگیری مرتبط با فراداده و حاشیه نویسی داده شده را شروع می کند و یک handle
برای استفاده در تابع TuningFork_stopLoadingGroup()
پر می کند. فراداده و حاشیه نویسی در حال حاضر توسط Play Backend استفاده نمی شود و می توان آن را روی nullptr
تنظیم کرد. همه رویدادهای بارگیری بعدی توسط یک شناسه گروه منحصر به فرد برچسب گذاری می شوند.
TuningFork_ErrorCode TuningFork_stopLoadingGroup( TuningFork_LoadingEventHandle handle);
این تابع یک گروه بارگیری را که قبلا توسط TuningFork_startLoadingGroup()
شروع شده بود متوقف می کند. رویدادهای بارگیری بعدی تا زمانی که TuningFork_startLoadingGroup()
دوباره فراخوانی نشود، شناسه گروهی نخواهند داشت.
شکل 1. نمونه ای از گروه بارگیری.