يصف هذا المستند كيفية تعيين التعليقات التوضيحية ومعلمات الدقة والإعدادات في مشروعك.
التعليقات التوضيحية ومعلمات الدقة
تقدم التعليقات التوضيحية معلومات سياقية حول ما تفعله لعبتك عندما يتم تسجيل علامة. تعكس معلمات الدقة الأداء والإعدادات الرسومية للعبتك. يمكنك تحديد هذه البروتوكولات باستخدام الموارد الاحتياطية للبروتوكولات، وهي تنسيق تبادل البيانات المنظم والمحايد من 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
: عدد مفاتيح قياس الأداء المطلوب استخدامها اضبط على4
في حال استخدام مكتبة Android Frame Pacing.annotation_enum_size
: حقل اختياري لأنّه يتم احتساب الحجم عند بدء التشغيل من أداة الوصف
api_key
: مفتاح واجهة برمجة التطبيقات لمشروع Cloud الخاص بتطبيقك يُستخدَم للتحقّق من صحة الطلبات المقدَّمة إلى نقطة النهاية. لإنشاء هذا المفتاح، راجِع تفعيل واجهة برمجة التطبيقات. إذا ظهرت لك أخطاء في الاتصال فيlogcat
، تأكَّد من أنّ مفتاح واجهة برمجة التطبيقات صحيح.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/
.
لمحة عن الموارد الاحتياطية للبروتوكولات
تستخدم مكتبة "الشوكة الرنانة" تنسيق المخزن المؤقت للبروتوكولات من Google للإعدادات والتعليقات التوضيحية ومعلمات الدقة. هذا بروتوكول محدد جيدًا ومتعدد اللغات للبيانات المهيكلة والقابلة للامتداد. لمزيد من المعلومات، اطّلِع على مستند الموارد الاحتياطية للبروتوكولات.
Proto2 مقابل Proto3
يتم تحديد إصدار تنسيق المخزن المؤقت للبروتوكولات في السطر الأول من الملف:
syntax="proto2";
Proto2 وproto3 هما إصداران شائعان الاستخدام من المخازن المؤقتة للبروتوكول. يستخدم كلاهما نفس تنسيق السلك لكن ملفات التعريف غير متوافقة. تشمل الاختلافات الرئيسية بين الإصدارين ما يلي:
- لم يعد مسموحًا باستخدام الكلمتين الرئيسيتين
optional
وrequired
في النماذج الأولية 3. - كل شيء يعمل بشكل فعال في
optional
في Proto3. - الإضافات غير متوافقة في Proto3.
استخدم proto3 في ملفات proto الخاصة بك حيث يمكن تجميعها إلى C#. يعمل Proto2 أيضًا مع مجموعة الميزات المحدودة المستخدمة في مكتبة Tuning Fork.
التمثيلات النصية مقابل التمثيلات الثنائية
تنسيق سلك Protobuf الثنائي محدد جيدًا ومستقر عبر إصدارات Protobuf المختلفة (التعليمة البرمجية التي يتم إنشاؤها ليست كذلك). هناك أيضًا تنسيق نصي يمكن للنسخة الكاملة
من مكتبة النماذج الأوّلية إنشاءه وقراءته. هذا التنسيق غير محدد جيدًا، لكنه مستقر لمجموعة محدودة من الميزات في مكتبة Tuning Fork. يمكنك التحويل بين التنسيق الثنائي وتنسيق النص
باستخدام المحول البرمجي protoc
. يحول الأمر التالي نموذج أوّلي نصي إلى
ثنائي:
protoc --encode com.google.tuningfork.Settings tuningfork.proto < tuningfork_settings.txt > tuningfork_settings.bin
يجب تضمين ملفات ثنائية بدلاً من الملفات النصية في ملف APK لأن حجم مكتبة النماذج الأوّلية الكاملة يصل إلى عدة ميغابايت، ما قد يؤدي إلى زيادة حجم اللعبة بمقدار مماثل، لأنّ إنشاء مكتبة "الشوكة الرنانة" يعتمد عليها.
التكلفة الكاملة مقابل Lite مقابل Nano
بالإضافة إلى مكتبة النماذج الأوّلية الكاملة، هناك إصدار مبسّط يقلّل من آثار الرموز البرمجية من خلال إزالة بعض الميزات، مثل الانعكاس وFileDescriptors
والبث من وإلى تنسيقات النص. لا يزال هذا الإصدار يتطلب عدة ميغابايت من
بصمة الرموز الإضافية، ولذلك تستخدم مكتبة Tuning Fork داخليًا
مكتبة nanopb. إنّ رمز المصدر لهذه المكتبة مضمّن في المشروع المفتوح المصدر لنظام Android في external/nanopb-c
، وهو جزء من فرع gamesdk
. يمكنك استخدام هذه المكتبة في لعبتك إذا كان حجم التعليمات البرمجية مشكلة.
هناك ملفات CMake الخاصة بالبرنامج gamesdk/src/protobuf
يمكنها مساعدتك في دمج النُسخ الثلاثة جميعها من النموذج الأولي. تستخدم العينات خليطًا من كل من نانوب ونموذج كامل.