يوضّح هذا الموضوع كيفية دمج أداة Android Performance Tuner، المعروفة أيضًا باسم مكتبة Tuning Fork، لتسجيل بيانات مدة عرض اللقطة وتحميلها من محركات الألعاب الأصلية (C وC++).
بالنسبة إلى محرّك ألعاب Unity، يُرجى الاطّلاع على دليل Unity.
الخلفية
أحد المكوّنات الرئيسية لتجربة اللعبة هو أداء العرض. يستند أداء العرض إلى المدخلَين التاليَين:
- عدد اللقطات في الثانية: عدد المرات التي يتم فيها رسم إطار
- إعدادات جودة الرسومات: مستوى الدقة الذي يتم عرض اللقطة به، بما في ذلك دقة المحاكاة والرسومات
بالنسبة إلى الألعاب، يتم تعريف أداء العرض الجيد على النحو التالي:
- تقديم معدّل لقطات في الثانية ثابت ومتسق (أي النسبة المئوية للقطات التي يتم عرضها بالمعدّل المطلوب)
- عرض اللقطات بأعلى معدّل تكرار ممكن مع الحفاظ على الثبات، وعادةً ما يكون 30 أو 60 لقطة في الثانية حسب نوع اللعبة
- زيادة مستوى التفاصيل إلى أقصى حدّ للمستخدمين حسب حجم الشاشة وكثافتها مع الحفاظ على عدد اللقطات المطلوب والثابت في الثانية
تحدّ مكتبة Android Frame Pacing من التفاوت الكبير في أوقات عرض اللقطات، ما يوفّر معدّل لقطات ثابتًا للألعاب. ويرجع التفاوت المتبقي في أوقات عرض اللقطات إلى مستوى التفاصيل المعروضة خلال مشاهد معيّنة في طريقة اللعب وإلى إمكانات الرسومات في الجهاز. باستخدام أداة Android Performance Tuner، يمكنك تحديد الأوقات التي يكون فيها وقت عرض اللقطة أبطأ أو أسرع من الوقت المستهدَف أثناء اللعب، وربط هذه المشاكل وفرص التحسين بما يلي:
- إعدادات جودة محدّدة
- مَشاهد معيّنة في لعبتك
- طُرز أجهزة أو مواصفات أجهزة محدّدة
تسجيل البيانات وتحميلها
تعتمد مكتبة Tuning Fork على إحدى دوال قياس الوقت التي تستدعيها مكتبة Android Frame Pacing في كل لقطة. ضمن المكتبة، يتم تجميع معلومات العلامات هذه في رسومات بيانية مدرّجة، ثم يتم تحميلها بشكل دوري إلى Google Play من خلال نقطة نهاية HTTP. يتم تسجيل كل علامة على أنّها مرتبطة بمفتاح أداة وتعليق توضيحي، ويتم تحديد تعريفاتهما في ملف بروتوكول مؤقت.
مفاتيح الآلات الموسيقية
يشير مفتاح الأداة إلى موضع العلامة في الإطار، وهو عدد صحيح يجب تمريره إلى كل استدعاء لدالة العلامة. تستخدم مكتبة Frame Pacing لنظام التشغيل Android مجموعة محدّدة مسبقًا من مفاتيح الأدوات، ويتم تحديدها في swappy_common.h
.
يمكنك أيضًا تحديد مفاتيح أدواتك الخاصة إذا كنت لا تستخدم مكتبة Frame Pacing.
التعليقات التوضيحية
تقدّم التعليقات التوضيحية معلومات سياقية عن ما تفعله لعبتك عند تسجيل وحدة قياس. على سبيل المثال، يمكن أن يحدّد التعليق التوضيحي أيًا مما يلي:
- مستوى اللعبة الحالي
- يظهر "رئيس كبير" على الشاشة
- أي معلومات أخرى ذات صلة بحالة اللعبة
يتم تحديد التعليقات التوضيحية من خلال رسالة com.google.tuningfork.Annotation
المخزّنة مؤقتًا. لضبط التعليق التوضيحي الحالي، عليك تمرير تسلسل الرسالة التي حدّدتها إلى TuningFork_setCurrentAnnotation()
.
بعد ذلك، يتم ربط جميع بيانات العلامات اللاحقة بهذه التعليقات التوضيحية إلى أن يتم ضبط تعليق توضيحي آخر. في ما يلي مثال على تعريف proto للتعليقات التوضيحية:
import "tuningfork.proto"
enum Level {
INVALID_LEVEL = 0;
Level_1 = 1;
Level_2 = 2;
Level_3 = 3;
}
message Annotation {
optional Level level = 1;
}
مَعلَمات الدقّة
تؤثر مَعلَمات الدقّة في أداء لعبتك ودقتها التصويرية، مثل مستوى تفاصيل التداخل ودقّة الصورة وطريقة تنعيم الحواف. مثل التعليقات التوضيحية، يتم تحديد معلّمات الدقة باستخدام رسالة مخزن البروتوكولات المؤقت com.google.tuningfork.FidelityParams
. في ما يلي مثال على تعريف proto لمَعلَمات الدقّة:
import "tuningfork.proto"
message FidelityParams {
int32 texture_quality_level = 1;
int32 shadow_resolution = 2;
float terrain_details_percent = 3;
int32 post_processing_effects_level = 4;
}
عند تهيئة Tuning Fork، عليك تمرير تسلسل للمعلمات التي تستخدمها اللعبة. يمكنك تغيير هذه المَعلمات إذا غيّر المستخدم، على سبيل المثال، إعدادات عرض اللعبة، وتم ربط البيانات المحمَّلة اللاحقة بالمَعلمات الجديدة.
لكي يتمكّن Google Play من فهم التعليقات التوضيحية ومعلمات الدقة التي تحدّدها، يجب تضمين ملف بروتوكول التخزين المؤقت الذي يتضمّن هذه التعريفات في حِزمة APK الخاصة باللعبة، بالإضافة إلى إعدادات التهيئة. عليك أيضًا تقديم قيم تلقائية لمجموعات مَعلمات الدقة الشائعة في حزمة APK من أجل تقسيم بياناتك حسب هذه المجموعات في واجهة مستخدم Google Play. لمزيد من المعلومات، يُرجى الاطّلاع على تحديد مستويات الجودة.
الذاكرة وحِمل وحدة المعالجة المركزية
يتم تخصيص كل الذاكرة التي تستخدمها مكتبة Tuning Fork عند بدء التشغيل لتجنُّب حدوث أي مشاكل أثناء اللعب. يعتمد حجم البيانات على عدد مفاتيح الأدوات وعدد التعليقات التوضيحية المحتملة وعدد الحِزم في كل رسم بياني مدرّج تكراري، وهو مضاعف لكل هذه القيم مضروبًا في أربعة بايتات لكل حزمة. تتوفّر أيضًا نسختان من جميع المدرّجات التكرارية للسماح بإرسالها بطريقة التخزين المؤقت المزدوج.
يتم إرسال البيانات في سلسلة محادثات منفصلة ولا يحظر طلبات البيانات. إذا لم يتوفّر اتصال بالإنترنت لتحميل البيانات، يتم وضع الطلب في قائمة انتظار لتحميله لاحقًا.
لا تتطلّب استدعاء دالة العلامة سوى القليل من المعالجة: فهي ببساطة تحسب فهرسًا في مصفوفة أقسام المدرج التكراري وتزيد عددًا صحيحًا.
دمج مكتبة Tuning Fork
ينقسم دليل الدمج هذا إلى جزأين. يوضّح الجزء الأول كيفية إجراء اختبار شامل باستخدام تطبيق تجريبي وGoogle Play Console. يوضّح الجزء الثاني كيفية دمج مكتبة Tuning Fork في سلسلة الأدوات وكيفية استخدام الدوال التي توفّرها المكتبة. انقر على الرابط التالي أدناه للبدء.