الجلسات البطيئة (الألعاب فقط)

"الجلسات البطيئة" هي مقياس جديد ضِمن "مؤشرات Android الحيوية" في Google Play Console. بطيء هو جلسة تكون فيها أكثر من 25% من اللقطات بطيئة. إطار بطيء إذا لم يتم عرضه بعد أقل من 50 ملي ثانية من الإطار السابق (ما يعادل 20 لقطة في الثانية). تُظهر "مؤشرات Android الحيوية" أيضًا الجلسات البطيئة الثانية على أن يكون هدفه 34 ملّي ثانية (ما يعادل 30 لقطة في الثانية). باستخدام الجلسات البطيئة، يمكنك فهم أداء عدد اللقطات في الثانية للعبتك، مما يؤثر في كيفية تجربة لعب سلسة وسلسة

وفي الوقت المناسب، سيبدأ Play بإبعاد المستخدمين عن الألعاب التي لا يمكن تحقيق معدّل 20 لقطة في الثانية على هواتفهم. يُرجى العِلم أنّ ميزة "مؤشرات Android الحيوية" تبدأ في تتبُّع الإحصاءات فقط. عدد اللقطات في الثانية بعد استمرار اللعبة لمدة دقيقة واحدة

يُرجى الانتقال إلى مركز المساعدة للاطّلاع على المزيد من التفاصيل. حول المقياس.

رسومات تشبه الرسم البياني الدائري تعرض عدد اللقطات البطيئة واللقطات غير البطيئة.
الشكل 1. جلسة بطيئة في "مؤشرات Android الحيوية".

كيفية قياس عدد اللقطات في الثانية ورصد اللقطات البطيئة

يوفّر الأمر dumpsys surfaceflinger timestats في نظام التشغيل Android متوسط عدد اللقطات في الثانية مشاركة العرض لتقديم المدرّج التكراري للتوقيت في جميع الطبقات التي المعروضة. وقت مشاركة العرض في إطار هو الفاصل الزمني بين الإطار الحالي والإطار السابق الذي يتم رسمه. إليك خطوات استخدام أمر جمع عدد اللقطات في الثانية في لعبتك:

  1. نفِّذ الطلب باستخدام العلامة enable وclear لبدء الالتقاط المعلومات:

    adb shell dumpsys SurfaceFlinger --timestats -clear -enable
    
  2. عند تشغيل اللعبة لمدة كافية، نفِّذ الأمر مرة أخرى وضع علامة على dump لتفريغ المعلومات:

    adb shell dumpsys SurfaceFlinger --timestats -dump
    

    توفر المعلومات التي تم تفريغها إجمالي الإطارات وتقديم المدرج التكراري جميع الطبقات التي يعرضها SurfaceFlinger. يجب أن تجد القسم من لعبتك من خلال الفلترة حسب layerName:

    layerName = SurfaceView[com.google.test/com.devrel.MainActivity]@0(BLAST)#132833
    

    يمكن حساب العدد البطيء للقطات في الجلسة بناءً على معلومات لكل طبقة.

    على سبيل المثال، نسبة اللقطات البطيئة 20 لقطة في الثانية = (مجموع القيم من 54 ملي ثانية إلى 1000 ملي ثانية) / إجمالي الإطارات × 100

    totalFrames = 274
    ...
    presentToPresent histogram is as below:
    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
    ...
    
  3. بعد جمع كل المعلومات، يجب تعطيل الإحصائيات الزمنية باستخدام العلامة disable:

    adb shell dumpsys SurfaceFlinger --timestats -disable
    

أسباب بطء اللقطات والحلول

هناك العديد من الأسباب التي قد تؤدي إلى عرض إطار أو عرضه لمدة أطول على الشاشة. أكبر من هدف المطوّر قد تكون اللعبة مرتبطة بوحدة المعالجة المركزية (CPU)/وحدة معالجة الرسومات. أو ارتفاع درجة حرارة الجهاز أكثر من اللازم ويفعّل حالة تقييد درجة الحرارة أو عدم تطابق عدد اللقطات في الثانية في اللعبة وشاشة الجهاز معدّل إعادة التحميل.

استخدِم وتيرة نظام Android (Swappy)، وVulkan وADPF معالجة هذه المشاكل وتحسين أداء لعبتك.

ما هو Suppy؟

مكتبة اتّصال إطار Android، المعروفة أيضًا باسم Suppy، هي جزء من مكتبات AGDK: تطبيق Suppy يساعد ألعاب OpenGL وVulkan لتحقيق عرض سلس وتصحيح وتيرة عرض الإطارات على Android.

سرعة عرض اللقطة هي مزامنة منطق اللعبة وتكرار العرض مع النظام الفرعي لعرض نظام التشغيل وأجهزة العرض الأساسية. نظام التشغيل Android تم تصميم النظام الفرعي للعرض لتجنب العناصر المرئية (المعروفة باسم تمزيق) يمكن أن تحدث عند تبديل معدّات الشاشة إلى إطار جديد بشكل جزئي من خلال إجراء تحديث. لتجنب هذه العناصر، سيقوم النظام الفرعي للعرض ما يلي:

  • تخزين مؤقت يتجاوز الإطارات داخليًا
  • رصد عمليات الإرسال المتأخرة
  • تكرار عرض اللقطات السابقة عند رصد لقطات متأخرة

كيفية استخدام Squarepy في المشاريع ذات الصلة

راجِع الأدلة التالية لدمج مكتبة Android Frame Pacing إلى لعبتك:

كيفية استخدام Suppy في محرك لعبة Unity

قامت شركة Unity بدمج ميزة Android Frame Pacing في محرّكها. لتفعيل هذه الميزة ميزة في Unity 2019.2 أو أعلى، حدد مربع الاختيار "مستوى سرعة الإطار" ضمن إعدادات المشروع > اللاعب > إعدادات Android > الحلّ والعرض التقديمي:

مربّع حوار إعدادات المشروع
الشكل 2. تفعيل سرعة الإطارات في Unity Engine

بدلاً من ذلك، يمكنك تفعيل خيار "تحسين سرعة الإطارات" آليًا في رمز المنطق للسماح لتطبيق Unity بالمساواة بين نقاط الاتصال. وتوزيع الإطارات بأقل تباين في عدد اللقطات في الثانية، ما يجعل أسلوب اللعب أكثر سلاسة.

كيفية استخدام ميزة Suppy في محرّك الألعاب Unreal

يعمل الإصدار Unreal 4.25 والإصدارات الأحدث على دمج مكتبة Pacing في إطار Android التي تُعد جزءًا من حزمة تطوير ألعاب Android توضح مقالة وتيرة أطر الجوّال كيفية تمكين نظام Android مكتبة وتيرة الإطارات وكيفية التحكم في سرعة الإطار من رمز C++.

ما هو Vulkan؟

Vulkan هو نموذج ثلاثي الأبعاد حديث من عدّة منصات. واجهة برمجة تطبيقات رسومات مصممة لتقليل التجريد بين أجهزة الرسومات في الجهاز وفي لعبتك. Vulkan هي واجهة برمجة التطبيقات الأساسية منخفضة المستوى للرسومات على Android مع استبدال OpenGL ES. OpenGL ES لا يزال متاحًا على Android، ولكن لم يعُد ضمن الميزات النشطة والتطوير.

توفر Vulkan المزايا التالية التي تفوق OpenGL ES:

  • بنية أكثر كفاءة مع خفض النفقات العامة لوحدة المعالجة المركزية (CPU) في برنامج تشغيل الرسومات
  • استراتيجيات تحسين جديدة لتحسين أداء وحدة المعالجة المركزية (CPU)
  • ميزات رسومات جديدة غير متوفرة في OpenGL ES، مثل واجهات برمجة التطبيقات غير القابلة للربط تتبّع أثر الشعاع

كيفية استخدام Vulkan في مشاريع Android الأصلية

يرشدك الدرس التطبيقي بدء استخدام Vulkan على Android خلال عملية إعداد عرض خط Vulkan ثم يعرض مثلثًا مزخرفًا ودوارًا على الشاشة. يمكنك الاستعانة بالدرس التطبيقي حول الترميز للتعرّف على كيفية عرض رسومات لعبتك.

كيفية استخدام Vulkan في محرِّك ألعاب Unity

لتفعيل الاختيار التلقائي للأجهزة على Unity، اتّبِع خطوات إعداد Auto Graphics API:

مربّع حوار إعدادات المشروع
الشكل 3. تفعيل واجهة برمجة التطبيقات Unity Auto Graphics API

بدلاً من ذلك، يمكنك تفعيل Vulkan يدويًا من خلال إيقاف Auto Graphics API. ووضع Vulkan في الأولوية القصوى في قائمة واجهات برمجة تطبيقات الرسومات. إذا كنت باستخدام Unity 2021.1 أو إصدار سابق، هذه هي الطريقة الوحيدة لاستخدام Vulkan.

مربّع حوار إعدادات المشروع
الشكل 4. يمكنك اختيار Vulkan يدويًا كواجهة برمجة تطبيقات رئيسية للرسومات في Unity.

استخدام المكوّن الإضافي Vkquality Unity لمحرك لتوفير اقتراحات وقت إطلاق واجهة برمجة التطبيقات للرسومات لكي تستخدمها لعبتك على أجهزة محددة.

كيفية استخدام Vulkan في محرّك لعبة Unreal

لتفعيل VulkanGraphic API، انتقِل إلى Project Settings (إعدادات المشروع) > الأنظمة الأساسية > Android > أنشئ واختَر Support Vulkan. عند تحديد كل من الدعم Vulkan وSupport OpenGL ES3.2، يستخدم Unreal تلقائيًا Vulkan. إذا كان الجهاز لا يتوافق مع Vulkan، يعود Unreal إلى OpenGL ES 3.2.

مربّع حوار إعدادات المشروع
الشكل 5. فعِّل Vulkan في Unreal Engine.

إذا كنت تستخدم ميزات Vulkan معينة تشتهر بسلوكها السيئ على أجهزة معيّنة، يمكنك تخصيص ملف BaseDeviceProfile.ini لاستبعاد تلك الأجهزة. اطلع على تخصيص الملفات الشخصية للجهاز وقابلية التوسيع على Android لمعرفة كيفية تخصيص BaseDeviceProfile.ini. بما أنّ برامج التشغيل الجديدة قد تعمل على إصلاحها سابقًا الأجهزة السيئة المعروفة، ننصحك بتحديث ملف BaseDeviceProfile.ini للحصول على جميع التحسينات.

ما هو ADPF؟

إطار عمل الأداء الديناميكي على Android (ADPF) تحسين الألعاب استنادًا إلى ميزات إدارة الوحدات الحرارية الديناميكية ووحدة المعالجة المركزية (CPU) ووحدة معالجة الرسومات على Android. يقتصر التركيز على الألعاب، ولكن يمكنك أيضًا استخدام ميزات أخرى ذات الأداء الكثيف.

ADPF هو مجموعة من واجهات برمجة التطبيقات التي تتيح للألعاب والتطبيقات التي تستهلك قدرًا كبيرًا من الأداء للتفاعل بشكل مباشر أكثر مع أنظمة الطاقة والحرارة في أجهزة Android. مع واجهات برمجة التطبيقات هذه، يمكنك مراقبة السلوك الديناميكي على أنظمة تحسين أداء اللعبة بمستوى مستدام لا يؤدي إلى ارتفاع درجة حرارة الأجهزة.

في ما يلي ميزات ADPF الأساسية:

  • واجهة برمجة التطبيقات الحرارية: يمكنك مراقبة الحالة الحرارية للجهاز كي يتمكن التطبيق من تعديل أعباء العمل بشكل استباقي قبل أن يصبح غير مستدامة.
  • CPU Performance Hint API: يمكنك تقديم تلميحات عن الأداء تتيح لنظام التشغيل Android اختيار إعدادات الأداء المناسبة (على سبيل المثال، نقطة تشغيل وحدة المعالجة المركزية (CPU) أو وحدة المعالجة المركزية (CPU)) لأعباء العمل.
  • واجهة برمجة تطبيقات وضع الألعاب وواجهة برمجة تطبيقات حالة اللعبة: يمكنك تفعيل ميزة تحسين تشغيل الألعاب من خلال إعطاء الأولوية لخصائص الأداء أو عمر البطارية، استنادًا إلى إعدادات المستخدم والإعدادات الخاصة باللعبة.
  • وضع الأداء الثابت: يمكنك تفعيل وضع الأداء الثابت على أحد الأجهزة أثناء قياس الأداء للحصول على القياسات التي لا يتم تغييرها من خلال التسجيل الديناميكي لوحدة المعالجة المركزية (CPU).
  • وضع كفاءة استهلاك الطاقة: يخبر الجلسة بأنّه يمكن جدولة سلاسل المحادثات في "جلسة نصائح الأداء" بشكل آمن، وذلك لتفضيل كفاءة استهلاك الطاقة على الأداء. تتوفّر هذه الميزة في نظام التشغيل Android 15 (واجهة برمجة التطبيقات 35).

طريقة استخدام ADPF في مشاريع Android الأصلية

يرشدك الدرس التطبيقي حول الترميز Integrating Adaptability اقتراحات في لعبتك المحلية لدمج ميزات ADPF في بخطوات يمكنك اتباعها وفقًا لوتيرتك الخاصة. في نهاية المطاف، درسًا تطبيقيًا حول الترميز، ستكون قد دمجت الميزات التالية:

  • واجهة برمجة التطبيقات الحرارية: يمكنك الاستماع إلى الحالة الحرارية للجهاز والتفاعل قبل أن يدخل في حالة التقييد الحراري.
  • واجهة برمجة التطبيقات لوضع الألعاب: يمكنك فهم الإعدادات المفضّلة لتحسين اللاعبين (تحسين الأداء إلى أقصى حدّ أو الحفاظ على البطارية) وضبط إعداداتها وفقًا لذلك.
  • واجهة برمجة تطبيقات حالة الألعاب: يمكنك السماح للنظام بمعرفة حالة لعبتك (التحميل والتشغيل وواجهة المستخدم وما إلى ذلك)، حيث يمكن للنظام ضبط الموارد وفقًا لذلك (تحسين وحدات الإدخال والإخراج أو وحدة المعالجة المركزية (CPU) ووحدة معالجة الرسومات وما إلى ذلك).
  • Performance Hint API: يمكنك إعلام النظام بنموذج سلسلة المحادثات وعبء العمل كي يتمكّن النظام من تخصيص الموارد وفقًا لذلك.

كيفية استخدام ADPF في محرك لعبة Unity

الأداء التكيُّفي في Unity هو لمطوّري الألعاب الذين يريدون تحسين ألعابهم على الأجهزة الجوّالة لا سيما في ما يتعلّق بمنظومة Android المتكاملة تتيح لك ميزة "الأداء التكيّفي" لتتكيّف مع أداء الجهاز وخصائصه الحرارية في الوقت الفعلي، ما يضمن تجربة لعب سلسة وفعّالة.

مزوّد ميزة "الأداء التكيُّفي" لأجهزة Android يرشدك خلال خطوات تنفيذ ADPF في Unity.

مربّع حوار إعدادات المشروع
الشكل 6. دمج ADPF في Unity Engine

كيفية استخدام بروتوكول ADPF في محرّك الألعاب Unreal

مربّع حوار إعدادات المشروع
الشكل 7. دمج ADPF في Unreal Engine
  1. تنزيل المكون الإضافي
  2. نسخ المكون الإضافي إلى مجلد المكون الإضافي للمشروع
  3. تفعيل المكوِّن الإضافي ADPF Unreal Engine في محرِّر Unreal
  4. إعادة تشغيل محرِّر Unreal
  5. بناء اللعبة وطهيها

المكوّن الإضافي إطار عمل الأداء الديناميكي على Android(ADPF) في Unreal Engine ذات أداء مستقر ويمنع التقييد الحراري. تنزيل المكوّن الإضافي من GitHub. يغير هذا المكون الإضافي الميزات من خلال قيم غير حقيقية لوحدة التحكّم: