این سند نحوه تنظیم حاشیه نویسی، پارامترهای وفاداری و تنظیمات را در پروژه خود شرح می دهد.
حاشیه نویسی و پارامترهای وفاداری
حاشیه نویسی اطلاعات متنی در مورد آنچه که بازی شما در هنگام ثبت تیک انجام می دهد را ارائه می دهد. پارامترهای Fidelity منعکس کننده عملکرد و تنظیمات گرافیکی بازی شما هستند. شما اینها را با استفاده از بافرهای پروتکل تعریف میکنید، که قالبهای بیطرفانه، ساختار یافته و مبادله داده Google هستند. برای اطلاعات بیشتر در مورد استفاده از بافرهای پروتکل در بازی خود، درباره بافرهای پروتکل را ببینید.
حاشیه نویسی و پارامترهای وفاداری ممکن برای بازی شما در فایلی به نام dev_tuningfork.proto
تعریف شده است که در فهرست assets/tuningfork
پروژه شما قرار دارد. نمونه زیر از برنامه آزمایشی است:
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;
}
به موارد زیر توجه کنید:
- بسته باید
com.google.tuningfork
باشد. - نام پیام باید دقیقاً
Annotation
وFidelityParams
باشد. - شما می توانید فقط
enums
تعریف شده در این فایل به عنوان بخشی از حاشیه نویسی استفاده کنید. - شما فقط می توانید
enums
،int32s
یاfloats
در فیلدهایFidelityParams
استفاده کنید. - ابزار اعتبارسنجی این قراردادها را اجرا می کند.
تنظیمات
پیام Settings
توسط tuningfork.proto
تعریف شده است. نمونه کامل را در فایل زیر ببینید:
gamesdk/samples/tuningfork/insightsdemo/app/src/main/assets/tuningfork/tuningfork_settings.txt
شما باید تنظیمات بازی خود را در فایلی به نام tuningfork_settings.txt
که در فهرست assets/tuningfork
پروژه شما قرار دارد، تعریف کنید. فقط باید فیلدهای زیر را مشخص کنید:
aggregation_strategy
: پیامی حاوی موارد زیر:-
method
:TIME_BASED
برای آپلود هر n میلی ثانیه یاTICK_BASED
برای آپلود هر n تیک. -
intervalms_or_count
: n برای فیلدmethod
. -
max_instrumentation_keys
: تعداد کلیدهای ابزار دقیق برای استفاده. اگر از کتابخانه Android Frame Pacing استفاده می کنید، روی4
تنظیم کنید. -
annotation_enum_size
: یک فیلد اختیاری است زیرا اندازه در هنگام راه اندازی از توصیفگر محاسبه می شود.
-
api_key
: کلید API پروژه Cloud برنامه شما که برای اعتبارسنجی درخواستها به نقطه پایانی استفاده میشود. برای تولید این کلید، به فعال کردن API مراجعه کنید. اگر خطاهای اتصال را درlogcat
مشاهده کردید، بررسی کنید که کلید API درست باشد.default_fidelity_parameters_filename
: مجموعه پارامترهای وفاداری مورد استفاده در مقداردهی اولیه (در صورتی کهtraining_fidelity_params
در کد خود تنظیم کنید، اختیاری است).level_annotation_index
: (اختیاری) ایندکس در قسمت های حاشیه نویسی شماره سطح شما.
در زیر نمونه ای از نمایش متن است:
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
تنظیم حاشیه نویسی
شما باید به صورت دستی حاشیه نویسی را در طول بازی خود تنظیم کنید. میتوانید نمونهای از آن را در برنامه آزمایشی ببینید، زیرا به طور خودکار در تمام سطوح بازی میچرخد. برای اطلاعات بیشتر، تابع SetAnnotations()
را در insightsdemo.cpp
ببینید.
در این مورد، حاشیه نویسی فقط شماره سطح را مشخص می کند.
message Annotation {
Level level = 1;
}
سطوح کیفیت را تعریف کنید
از سطوح کیفیت برای حاشیه نویسی جلسات استفاده کنید تا بتوانید تعیین کنید که آیا دستگاه ها در سطح کیفی بسیار بالا (در نتیجه عملکرد پایین تر) یا خیلی پایین (که منجر به کاهش وفاداری غیر ضروری می شود) کار می کنند.
شما باید حداقل یک و ترجیحاً چندین سطح کیفی برای بازی خود تعریف کنید. سطح کیفیت مربوط به نمونه ای از پیام FidelityParams
شماست. این سطوح باید به ترتیب وفاداری فزاینده با فرمت نام فایل زیر داده شوند:
dev_tuningfork_fidelityparams_i.txt
که در آن i
شاخصی است که از 1 شروع می شود و حداکثر مقدار آن 15 است. این فایل ها باید در فهرست assets/tuningfork
پروژه شما قرار داشته باشند. پروژه نمونه نمونه ای از این ساختار را در پوشه gamesdk/samples/tuningfork/insightsdemo/app/src/main/assets/tuningfork/
نشان می دهد.
درباره بافرهای پروتکل
کتابخانه Tuning Fork از فرمت بافر پروتکل گوگل برای تنظیمات، حاشیه نویسی و پارامترهای وفاداری استفاده می کند. این یک پروتکل به خوبی تعریف شده و چند زبانه برای داده های ساختار یافته و قابل توسعه است. برای اطلاعات بیشتر، به مستندات Protocol Buffers مراجعه کنید.
Proto2 در مقابل proto3
نسخه فرمت بافر پروتکل در خط اول فایل تنظیم شده است:
syntax="proto2";
Proto2 و proto3 دو نسخه رایج از بافرهای پروتکل هستند. هر دو از یک فرمت سیم استفاده می کنند اما فایل های تعریف سازگار نیستند. تفاوت های اصلی بین این دو نسخه شامل موارد زیر است:
- کلمات کلیدی
optional
وrequired
دیگر در proto3 مجاز نیستند. - همه چیز به طور موثر در proto3
optional
است. - برنامه های افزودنی در proto3 پشتیبانی نمی شوند.
از proto3 در فایل های پروتو خود استفاده کنید زیرا این فایل ها را می توان در C# کامپایل کرد. Proto2 با مجموعه ویژگی های محدود مورد استفاده در کتابخانه Tuning Fork نیز کار می کند.
متن در مقابل نمایش های باینری
قالب سیم پروتوباف باینری به خوبی تعریف شده و در نسخه های مختلف پروتوباف پایدار است (کد تولید شده نیست). همچنین یک قالب متنی وجود دارد که نسخه کامل کتابخانه protobuf می تواند ایجاد و خوانده شود. این قالب به خوبی تعریف نشده است، اما برای مجموعه محدودی از ویژگی های کتابخانه Tuning Fork پایدار است. با استفاده از کامپایلر protoc
می توانید بین فرمت های باینری و متنی تبدیل کنید. دستور زیر یک متن پروتوباف را به باینری تبدیل می کند:
protoc --encode com.google.tuningfork.Settings tuningfork.proto < tuningfork_settings.txt > tuningfork_settings.bin
شما باید فایلهای باینری را به جای فایلهای متنی در APK خود بگنجانید، زیرا کتابخانه کامل protobuf چندین مگابایت حجم دارد. وابستگی کتابخانه Tuning Fork به آن، اندازه بازی شما را به میزان مشابهی افزایش می دهد.
فول در مقابل Lite در مقابل نانو
علاوه بر کتابخانه کامل پروتوباف، نسخهای Lite وجود دارد که با حذف برخی از ویژگیها مانند بازتاب، FileDescriptors
و جریان به و از قالبهای متنی، ردپای کد را کاهش میدهد. این نسخه هنوز به چندین مگابایت کد اضافی نیاز دارد و بنابراین، کتابخانه Tuning Fork به صورت داخلی از کتابخانه nanopb استفاده می کند. کد منبع این کتابخانه در پروژه متن باز اندروید به صورت external/nanopb-c
موجود است و بخشی از شاخه gamesdk
است. اگر اندازه کد مشکل است از این کتابخانه در بازی خود استفاده کنید.
فایلهای CMake در gamesdk/src/protobuf
وجود دارند که میتوانند به شما در ادغام هر سه نسخه از protobuf کمک کنند. نمونه ها از ترکیبی از هر دو nanopb و protobuf کامل استفاده می کنند.