في "مؤشرات Android الحيوية"، الجلسة البطيئة هي أي جلسة تكون أكثر من 25% من لقطاتها بطيئة. تكون اللقطة بطيئة إذا لم يتم عرضها بعد أقل من 50 ملي ثانية من اللقطة السابقة (ما يعادل 20 لقطة في الثانية). تسجِّل "مؤشرات Android الحيوية" أيضًا مقياسًا ثانيًا للجلسات البطيئة، وهو 34 ملي ثانية (ما يعادل 30 لقطة في الثانية). من خلال مقاييس الجلسات البطيئة، يمكنك فهم أداء عدد اللقطات في الثانية للعبتك، وتأثير هذا الأداء في سلاسة لعبتك بالنسبة إلى المستخدمين.
وفي الوقت المناسب، سيبدأ Google Play بإبعاد المستخدمين عن الألعاب التي لا يمكنها تحقيق معدّل 20 لقطة في الثانية على هواتفهم. يُرجى العِلم أنّ مؤشرات Android الحيوية لا تبدأ في رصد عدد اللقطات في الثانية إلا بعد استمرار لعبتك في التشغيل لمدة دقيقة.
يُرجى الانتقال إلى مركز المساعدة لمزيد من التفاصيل حول هذا المقياس.
كيفية قياس عدد اللقطات في الثانية ورصد اللقطات البطيئة
يوفّر أمر Android dumpsys SurfaceFlinger --timestats متوسط عدد اللقطات في الثانية
والمدرّجات التكرارية لتوقيت العرض لجميع الطبقات التي يتم
عرضها. الوقت بين العرض والعرض للإطار هو الفاصل الزمني بين
رسم الإطار الحالي والإطار السابق. اتّبِع الخطوات التالية
لاستخدام الأمر لجمع عدد اللقطات في الثانية في لعبتك:
نفِّذ الأمر باستخدام العلامتَين
enableوclearلبدء تسجيل المعلومات:adb shell dumpsys SurfaceFlinger --timestats -clear -enableعند تشغيل اللعبة لفترة كافية، شغِّل الأمر مرة أخرى باستخدام العلامة
dumpلتفريغ المعلومات:adb shell dumpsys SurfaceFlinger --timestats -dumpتوفّر المعلومات التي تم تفريغها إجمالي عدد اللقطات و
presentToPresentمدرّج تكراري لجميع الطبقات التي يعرضها SurfaceFlinger. يجب العثور على قسم لعبتك من خلال الفلترة استنادًا إلىlayerName:layerName = SurfaceView[com.google.test/com.devrel.MainActivity]@0(BLAST)#132833يمكنك حساب معدّل اللقطات البطيئة للجلسة استنادًا إلى معلومات كل طبقة.
على سبيل المثال، النسبة المئوية للّقطات البطيئة التي تبلغ 20 لقطة في الثانية = (مجموع القيم من 54 ملي ثانية إلى 1000 ملي ثانية) / إجمالي اللقطات × 100
totalFrames = 274 ... presentToPresent histogram: 0ms=0 1ms=0 2ms=0 3ms=0 4ms=0 5ms=0 6ms=0 7ms=0 8ms=0 9ms=0 10ms=0 11ms=0 12ms=0 13ms=0 14ms=0 15ms=0 16ms=1 17ms=0 18ms=0 19ms=0 20ms=0 21ms=0 22ms=0 23ms=0 24ms=0 25ms=0 26ms=0 27ms=0 28ms=0 29ms=0 30ms=0 31ms=0 32ms=0 33ms=269 34ms=0 36ms=0 38ms=0 40ms=0 42ms=0 44ms=0 46ms=0 48ms=0 50ms=1 54ms=0 58ms=0 62ms=0 66ms=0 70ms=1 74ms=0 78ms=0 82ms=0 86ms=0 90ms=0 94ms=0 98ms=0 102ms=0 106ms=0 110ms=0 114ms=0 118ms=0 122ms=0 126ms=0 130ms=0 134ms=0 138ms=0 142ms=0 146ms=0 150ms=0 200ms=0 250ms=0 300ms=0 350ms=0 400ms=0 450ms=0 500ms=0 550ms=0 600ms=0 650ms=0 700ms=0 750ms=0 800ms=0 850ms=0 900ms=0 950ms=0 1000ms=0يتم أيضًا عرض متوسط عدد اللقطات في الثانية لكل طبقة في ملف التفريغ:
... averageFPS = 30.179 ...بعد جمع كل المعلومات، أوقِف timestats باستخدام العلامة
disable:adb shell dumpsys SurfaceFlinger --timestats -disable
أسباب بطء اللقطات وحلولها
هناك العديد من الأسباب التي قد تؤدي إلى عرض إطار أو عرضه على الشاشة لفترة أطول من هدفك. قد تكون لعبتك مرتبطة بوحدة المعالجة المركزية (CPU) أو وحدة معالجة الرسومات (GPU)، أو قد يكون الجهاز ساخنًا جدًا ويتم تفعيل حالة حرارية مخفَّضة، أو قد يكون هناك عدم تطابق بين معدّل عرض الإطارات في اللعبة ومعدّل إعادة تحميل الشاشة على الجهاز.
استخدِم Android Frame Pacing (Swappy) وVulkan وإطار عمل الأداء الديناميكي في Android (ADPF) لحلّ هذه المشاكل وتحسين أداء لعبتك.
ما هي Swappy؟
مكتبة Frame Pacing في Android، والمعروفة أيضًا باسم Swappy، هي جزء من مكتبات AGDK. تساعد Swappy ألعاب OpenGL وVulkan في تحقيق عرض سلس ووتيرة عرض لقطات صحيحة على Android.
تعديل معدل عرض الإطارات هو مزامنة منطق اللعبة وحلقة العرض مع النظام الفرعي لشاشة نظام التشغيل وأجهزة العرض الأساسية. تم تصميم النظام الفرعي لشاشة Android لتجنّب العيوب المرئية (المعروفة باسم التمزّق) التي يمكن أن تحدث عندما تنتقل أجهزة العرض إلى إطار جديد في منتصف عملية التحديث. لتجنُّب هذه المشاكل، ينفّذ النظام الفرعي للعرض ما يلي:
- يخزّن مؤقتًا الإطارات السابقة داخليًا.
- ترصد هذه الميزة عمليات إرسال الإطارات المتأخرة.
- تكرار عرض اللقطات السابقة عند رصد لقطات متأخرة
تعرَّف على كيفية استخدام لعبة Mir 2 لمكتبة Swappy لتقليل معدّل الجلسات البطيئة من% 40 إلى %10.
كيفية استخدام Swappy في المشاريع الأصلية
اطّلِع على الأدلة التالية لدمج مكتبة Android Frame Pacing في لعبتك:
كيفية استخدام Swappy في محرّك ألعاب Unity
دمجت Unity ميزة Android Frame Pacing في محرّكها. لتفعيل هذه الميزة في الإصدار 2019.2 من Unity أو الإصدارات الأحدث، ضَع علامة في مربّع الاختيار "تحسين معدّل عرض الإطارات" ضمن إعدادات المشروع > المشغّل > الإعدادات لنظام التشغيل Android > الدقة والعرض:
يمكنك بدلاً من ذلك تفعيل خيار "سرعة عرض اللقطات المحسّنة" برمجيًا في رمز المنطق للسماح لـ Unity بتوزيع اللقطات بالتساوي لتقليل التباين في عدد اللقطات في الثانية، ما يوفّر تجربة لعب أكثر سلاسة.
كيفية استخدام Swappy في محرّك الألعاب Unreal
يدمج الإصدار 4.25 من Unreal والإصدارات الأحدث مكتبة Android Frame Pacing، وهي جزء من مجموعة تطوير الألعاب على Android. توضّح مقالة مزامنة عرض الإطارات على الأجهزة الجوّالة كيفية تفعيل "مكتبة مزامنة عرض الإطارات على Android" وكيفية التحكّم في مزامنة عرض الإطارات من خلال رمز C++.
ما هو Vulkan؟
Vulkan هي واجهة برمجة تطبيقات حديثة للرسومات الثلاثية الأبعاد من عدّة منصات، وهي مصمَّمة لتقليل التجريد بين أجهزة الرسومات في الجهاز ولعبتك. Vulkan هي واجهة برمجة التطبيقات الأساسية المنخفضة المستوى للرسومات على Android، وهي تحلّ محلّ OpenGL ES. لا يزال OpenGL ES متاحًا على Android، ولكن لم يعُد قيد التطوير النشط للميزات.
يوفّر Vulkan المزايا التالية مقارنةً بـ OpenGL ES:
- بنية أكثر كفاءة مع نفقات عامة أقل لوحدة المعالجة المركزية في برنامج تشغيل الرسومات
- استراتيجيات تحسين جديدة لتعزيز أداء وحدة المعالجة المركزية
- ميزات رسومات جديدة غير متاحة في OpenGL ES، مثل واجهات برمجة التطبيقات غير المقيّدة وتتبُّع أثر الشعاع
كيفية استخدام Vulkan في مشاريع Android الأصلية
يساعدك الدرس التطبيقي حول الترميز بدء استخدام Vulkan على Android في إعداد مسار عرض Vulkan ثم عرض مثلّث دوّار ذي مظهر على الشاشة. استخدِم الدرس التطبيقي حول الترميز لمعرفة كيفية عرض رسومات اللعبة.
كيفية استخدام Vulkan في محرّك ألعاب Unity
لتفعيل الاختيار التلقائي للأجهزة على Unity، اتّبِع خطوات ضبط Auto Graphics API.
بدلاً من ذلك، يمكنك تفعيل Vulkan يدويًا من خلال إيقاف واجهة برمجة التطبيقات للرسومات التلقائية، ووضع Vulkan في أعلى قائمة واجهات برمجة التطبيقات للرسومات. إذا كنت تستخدم الإصدار 2021.1 من Unity أو إصدارًا سابقًا، فهذه هي الطريقة الوحيدة لاستخدام Vulkan.
استخدِم المكوّن الإضافي لمحرّك VkQuality Unity لتقديم اقتراحات حول واجهة برمجة التطبيقات للرسومات التي يجب أن تستخدمها لعبتك على أجهزة معيّنة عند تشغيلها.
كيفية استخدام Vulkan في محرّك ألعاب Unreal
لتفعيل واجهة Vulkan Graphics API، انتقِل إلى إعدادات المشروع > الأنظمة الأساسية > Android > الإصدار واختَر إتاحة Vulkan. عند اختيار كل من Support Vulkan وSupport OpenGL ES3.2، يستخدم محرّك Unreal الإصدار Vulkan تلقائيًا. إذا كان الجهاز لا يتوافق مع Vulkan، يعود محرّك Unreal إلى OpenGL ES 3.2.
إذا كنت تستخدم ميزات Vulkan معيّنة معروفة بأنّها لا تعمل بشكل جيد على
أجهزة معيّنة، يمكنك تخصيص ملف BaseDeviceProfile.ini لاستبعاد
هذه الأجهزة. للتعرّف على كيفية تخصيص BaseDeviceProfile.ini، يُرجى الاطّلاع على
تخصيص الملفات الشخصية للأجهزة وقابلية التوسّع
لنظام التشغيل Android. بما أنّ برامج تشغيل الأجهزة الجديدة قد تحلّ المشاكل في الأجهزة التي كانت تُعتبر غير متوافقة سابقًا، يُرجى الحرص على تحديث ملف BaseDeviceProfile.ini للاستفادة من جميع التحسينات.
ما هو إطار عمل الأداء الديناميكي في Android (ADPF)؟
يعمل إطار عمل الأداء الديناميكي في Android (ADPF) على تحسين أداء الألعاب استنادًا إلى ميزات الإدارة الديناميكية للحرارة ووحدة المعالجة المركزية ووحدة معالجة الرسومات على Android. ينصب التركيز على الألعاب، ولكن يمكنك أيضًا استخدام الميزات للتطبيقات الأخرى التي تتطلّب أداءً عاليًا.
ADPF هي مجموعة من واجهات برمجة التطبيقات التي تتيح للألعاب والتطبيقات التي تتطلّب أداءً عاليًا التفاعل بشكل مباشر أكثر مع أنظمة الطاقة والحرارة في أجهزة Android. باستخدام واجهات برمجة التطبيقات هذه، يمكنك مراقبة السلوك الديناميكي على أنظمة Android وتحسين أداء الألعاب إلى مستوى مستدام لا يؤدي إلى ارتفاع حرارة الأجهزة.
في ما يلي الميزات الرئيسية لإطار عمل ADPF:
- واجهة Thermal API: تتيح مراقبة الحالة الحرارية للجهاز ليتمكّن التطبيق من تعديل عبء العمل بشكل استباقي قبل أن يصبح غير مستدام.
- واجهة CPU Performance Hint API: توفّر تلميحات حول الأداء تتيح لنظام Android اختيار إعدادات الأداء المناسبة (مثل نقطة تشغيل وحدة المعالجة المركزية أو النواة) لحجم العمل.
- واجهتا Game Mode API وGame State API: تتيحان تحسين تجربة اللعب من خلال تحديد أولويات الأداء أو عمر البطارية، استنادًا إلى إعدادات المستخدم والإعدادات الخاصة باللعبة.
- وضع الأداء الثابت: يمكنك تفعيل وضع الأداء الثابت على جهاز أثناء قياس الأداء للحصول على قياسات لا تتأثر بضبط سرعة وحدة المعالجة المركزية الديناميكي.
- وضع كفاءة الطاقة: يشير إلى الجلسة بأنّه يمكن جدولة سلاسل المحادثات في جلسة تلميح الأداء بأمان لتفضيل كفاءة الطاقة على الأداء. تتوفّر هذه الميزة في Android 15 (المستوى 35 من واجهة برمجة التطبيقات).
كيفية استخدام ADPF في مشاريع Android الأصلية
يساعدك الدرس التطبيقي حول الترميز دمج ميزات التكيُّف في لعبتك الأصلية في دمج ميزات ADPF في لعبتك من خلال خطوات يمكنك اتّباعها بالوتيرة التي تناسبك. في نهاية الدرس التطبيقي حول الترميز، ستكون قد دمجت الميزات التالية:
- واجهة Thermal API: يمكنك الاستماع إلى الحالة الحرارية للجهاز والتفاعل قبل أن يدخل الجهاز في حالة التقييد الحراري.
- واجهة برمجة التطبيقات Game Mode: يمكنك فهم الإعدادات المفضّلة للاعبين في ما يتعلّق بتحسين الأداء (زيادة الأداء إلى أقصى حد أو الحفاظ على البطارية) وضبطها وفقًا لذلك.
- واجهة Game State API: تتيح لك إعلام النظام بحالة لعبتك (التحميل، واللعب، وواجهة المستخدم، وما إلى ذلك)، ويمكن للنظام تعديل الموارد وفقًا لذلك (تعزيز وحدات الإدخال والإخراج أو وحدة المعالجة المركزية أو وحدة معالجة الرسومات وما إلى ذلك).
- Performance Hint API: يمكنك إعلام النظام بنموذج سلاسل المحادثات وعبء العمل ليتمكّن من تخصيص الموارد وفقًا لذلك.
كيفية استخدام ADPF في محرّك ألعاب Unity
ميزة Adaptive Performance من Unity هي أداة لمطوّري الألعاب الذين يتطلّعون إلى تحسين ألعابهم على الأجهزة الجوّالة، خاصةً في منظومة Android المتكاملة والمتنوعة. تتيح ميزة "الأداء التكيُّفي" للعبتك التكيُّف مع أداء الجهاز وخصائصه الحرارية في الوقت الفعلي، ما يضمن تجربة لعب سلسة وفعّالة.
مزوّد Adaptive Performance Android يرشدك خلال خطوات تنفيذ إطار عمل ADPF في Unity. يمكنك أيضًا الاطّلاع على ميزة Adaptive Performance في Unity ومزوّد Android في ADPF.
كيفية استخدام ADPF في محرّك الألعاب Unreal
- نزِّل المكوّن الإضافي.
- انسخ المكوّن الإضافي إلى مجلد المكوّنات الإضافية للمشروع.
- فعِّل المكوّن الإضافي ADPF Unreal Engine في محرِّر Unreal.
- أعِد تشغيل محرِّر Unreal.
- أنشئ اللعبة واجمعها.
يوفّر المكوّن الإضافي إطار عمل الأداء الديناميكي في Android (ADPF) في Unreal Engine أداءً مستقرًا ويمنع التقييد الحراري. نزِّل المكوّن الإضافي من GitHub. يغيّر هذا المكوّن الإضافي الميزات من خلال ضبط قيم وحدة تحكّم Unreal. لمزيد من التفاصيل، يُرجى الاطّلاع على المكوّن الإضافي لإطار عمل الأداء الديناميكي في Android (ADPF) في Unreal Engine.