يوضّح هذا الدليل عملية تحليل أداء الألعاب وتحسينه على أجهزة Android لتوفير تجربة سلسة للمستخدمين. ويشمل ذلك تحديد المشاكل التي تؤدي إلى بطء الأداء، والتمييز بين المشاكل المتعلّقة بوحدة المعالجة المركزية (CPU) ووحدة معالجة الرسومات (GPU)، والتحقّق من نتائج التحسين.
ومهما كانت اللعبة ممتعة أو جذابة، إذا لم تعمل بشكل جيد على الأجهزة الجوّالة، لن يستمتع بها اللاعبون ولن تحقق النجاح المطلوب. حتى الألعاب الممتعة قد تواجه مشاكل، مثل انخفاض عدد اللقطات في الثانية أو ارتفاع درجة حرارة الجهاز. تتسبّب هذه المشاكل في استياء اللاعبين. لذلك، من الضروري تحسين أداء اللعبة، ويجب أن تعرف كيفية تحسينها.
تتضمّن عملية تحسين الأداء الخطوات التالية:
قياس الأداء العام للعبة: قياس انخفاض الأداء على مستوى كل مشهد لتحديد القيم الشاذة
التحقّق من حدود وحدة المعالجة المركزية ووحدة معالجة الرسومات: تأكَّد من السبب الأساسي، سواء كان مرتبطًا بوحدة المعالجة المركزية أو وحدة معالجة الرسومات.
الأدوات: Unreal Insight وUnity Profiler وPerfetto وأدوات قياس الأداء
تحسين وحدة المعالجة المركزية (CPU): أصلِح المؤثّرات السلبية في الأداء التي تم تحديدها.
الأدوات: Unreal Insight وUnity Profiler وPerfetto وSimpleperf
تحسين وحدة معالجة الرسومات: أصلِح المؤثّرات السلبية في الأداء التي تم تحديدها.
الأدوات: RenderDoc وArm mobile studio وAGI وأداة خاصة بمورّد معيّن
اختبار A/B: إجراء اختبارات A/B للتحقّق بدقة من فعالية التحسينات التي تم تنفيذها
الأدوات: Unreal Insight وUnity Profiler وPerfetto وأدوات قياس الأداء وقفل تردد وحدة المعالجة المركزية أو وحدة معالجة الرسومات وRenderDoc
تستمر هذه العملية التكرارية (من 1 إلى 5) إلى أن يتم تحقيق معدل اللقطات في الثانية ومعلمات الحرارة المستهدفة بنجاح.
المتطلّبات الأساسية
يجب أن يكون لديك إصدار من اللعبة جاهز للاختبار على جهاز يعمل بنظام التشغيل Android.
ثبِّت الأدوات التالية:
تحليل أداء اللعبة الشامل
يجب التحقّق من الأداء العام للعبة وتحديد أي تدهور أو خلل في الأداء على مستوى المشهد. قبل تحسين لعبتك، تحقَّق من أدائها الحالي. بما أنّ الألعاب تتضمّن العديد من واجهات المستخدم والمشاهد، يمكنك تحليل المشاهد التي تستخدم وحدة المعالجة المركزية أو وحدة معالجة الرسومات بشكل مكثّف، أو التنسيقات التي تعمل بشكل غير متوقّع، وذلك لمراقبة تدهور الأداء واستخدام وحدة المعالجة المركزية أو وحدة معالجة الرسومات لكل مشهد.
- تحديد مقدار انخفاض الأداء: استخدِم أدوات قياس الأداء لقياس الأداء العام للعبة. قياس الأداء على أساس كل مشهد لتحديد مناطق معيّنة يحدث فيها تدهور أو تشوّهات
- تحديد المشاهد التي تتضمّن مشاكل: حلِّل البيانات للعثور على المشاهد التي تتضمّن استخدامًا عاليًا لوحدة المعالجة المركزية أو وحدة معالجة الرسومات، أو التي لا تؤدي فيها تخطيطات الشاشة إلى الأداء المتوقّع.
- جمع بيانات التتبُّع: استخدِم أدوات التتبُّع لجمع بيانات أداء تفصيلية للمشاهد التي تم تحديدها على أنّها تتضمّن مشاكل.
تحديد المشاكل التي تؤدي إلى بطء وحدة المعالجة المركزية أو وحدة معالجة الرسومات
إذا لم تحقّق اللعبة عدد اللقطات المستهدَف في الثانية، حدِّد ما إذا كانت المشكلة مرتبطة بوحدة المعالجة المركزية أو وحدة معالجة الرسومات. يُعدّ تحليل سلوك وحدة المعالجة المركزية ووحدة معالجة الرسومات أمرًا بالغ الأهمية للعثور على فرص التحسين، حتى عندما يسخن الجهاز أو يستهلك الكثير من الطاقة أثناء اللعب. يمكنك استخدام طرق مختلفة لمعرفة ما إذا كان النظام يعتمد على وحدة المعالجة المركزية أو وحدة معالجة الرسومات.
تحليل بيانات التتبُّع: استخدِم الأداة المفضّلة لديك لتحليل بيانات التتبُّع:
- Unreal Insight (Unreal Engine): يمكنك تحليل التتبُّع للاطّلاع على توقيت
GameThreadوRenderThreadوRHIThread.- إذا تجاوزت قيمة
GameThreadأوRenderThreadالحد الأقصى لوقت عرض اللقطة (على سبيل المثال، 33.3 ملي ثانية لـ 30 لقطة في الثانية)، تكون اللعبة معتمدة على وحدة المعالجة المركزية. - إذا كان
RHIThreadيعرض تنفيذًا مطوّلاً أو يمثّل الجزء الأكبر من وقت عرض اللقطة، تكون اللعبة مرتبطة بوحدة معالجة الرسومات.
- إذا تجاوزت قيمة
الشكل 2. تتبُّع رؤى Unreal باستخدام GameThread وRenderThread وRHIThread (انقر للتكبير). - أداة Unity Profiler (Unity): إذا استهلكت سلسلة التعليمات الرئيسية وقتًا كبيرًا
في علامات مثل
Gfx.WaitForPresentOnGfxThreadبينما عرضت سلسلة تعليمات العرضGfx.PresentFrameأو<GraphicsAPIName>.WaitForLastPresent، تكون اللعبة مرتبطة بوحدة معالجة الرسومات.
الشكل 3. مثال على وحدة معالجة الرسومات (GPU) في Unity Profiler (انقر للتكبير). - Perfetto: يمكنك تحليل مهام وحدة المعالجة المركزية (CPU) وتفاصيل تنفيذ سلسلة التعليمات. يسهّل هذا التحليل تحديد المشاكل التي تؤدي إلى بطء الأداء من خلال المراجعة التفصيلية لمعلومات تنفيذ سلسلة التعليمات.
الحِمل الزائد لوحدة المعالجة المركزية: يشير التتبُّع إلى أنّ الحِمل على
GameThreadوRenderThread، بالإضافة إلى VSync، مسؤول عن التأخيرات فيQueuePresentفي سلسلة RHI، ما يشير إلى سيناريو مرتبط بوحدة المعالجة المركزية.
الشكل 4. عمليات تتبُّع Perfetto مع تفاصيل تنفيذ وحدة المعالجة المركزية (انقر للتكبير) العبء الزائد لوحدة معالجة الرسومات: إذا تجاوز وقت إكمال وحدة معالجة الرسومات الحد الأقصى لوقت عرض اللقطة، مثلاً 25 ملي ثانية، تكون اللعبة مرتبطة بوحدة معالجة الرسومات. يشير التتبُّع إلى أنّ وقت إكمال وحدة معالجة الرسومات يتجاوز 25 ملي ثانية، ما يشير إلى سيناريو مرتبط بوحدة معالجة الرسومات.
الشكل 5. تتبُّعات Perfetto مع تفاصيل وقت المعالجة الإضافي لوحدة معالجة الرسومات (انقر للتكبير)
- Unreal Insight (Unreal Engine): يمكنك تحليل التتبُّع للاطّلاع على توقيت
استخدام أوامر الإحصاءات في Unreal Engine:
stat unit: مقارنة الوقت المخصّص لسلاسل Game وDraw وRHI إذا كانت أوقات Game وDraw منخفضة ولكن وقت RHI يتجاوز باستمرار الحد الأقصى لوقت عرض اللقطة، تكون اللعبة مرتبطة بوحدة معالجة الرسومات. على سبيل المثال، إذا كان معدّل اللقطات المطلوب في الثانية هو 30 (أي ما يعادل 33.33 مللي ثانية لكل لقطة)، وظلّ كل من مؤشري ترابط اللعبة والرسم ضمن نطاق 10 إلى 15 مللي ثانية باستمرار، ولكن تجاوزت واجهة عرض الرسومات (RHI) باستمرار 30 مللي ثانية، يشير ذلك بقوة إلى سيناريو مرتبط بوحدة معالجة الرسومات.
الشكل 6. تسهّل وحدة الإحصاء تقدير الشروط المرتبطة بوحدة معالجة الرسومات. stat VulkanRHI: اطّلِع على مدة عرض "إرسال إلى قائمة الانتظار" و"قائمة الانتظار".
الشكل 7. تسهّل Stat VulkanRHI تقدير الحالات المرتبطة بوحدة معالجة الرسومات (انقر للتكبير). stat slow: يمكنك التدقيق في الوقت المخصّص لسلاسل Game وRender وRHI لتحديد العوائق.
الاطّلاع على مقاييس الأداء: استخدِم النتائج من تحليل الأداء الشامل للعبة. على Android:
- الاعتماد بشكل كبير على وحدة المعالجة المركزية: معدّل استخدام وحدة المعالجة المركزية (المعدّل) أكبر من %15، مع انخفاض معدّل استخدام وحدة معالجة الرسومات ومعدّل اللقطات في الثانية.
- الاستخدام المكثّف لوحدة معالجة الرسومات: استخدام وحدة معالجة الرسومات بنسبة تزيد عن %90
بشكل عام، إذا كان عدد اللقطات في الثانية ومعدّل استخدام وحدة معالجة الرسومات منخفضَين بينما يتجاوز معدّل استخدام وحدة المعالجة المركزية %15، يمكن اعتبار أنّ التطبيق يعتمد بشكل كبير على وحدة المعالجة المركزية.
الشكل 8. مقاييس الأداء مع استخدام وحدة المعالجة المركزية ووحدة معالجة الرسومات
تحسين أداء وحدة المعالجة المركزية
إذا أشار التحليل إلى أنّ اللعبة تعتمد على وحدة المعالجة المركزية (CPU)، يمكنك إجراء المزيد من التحقيقات لتحديد سلاسل التعليمات أو واجهات برمجة التطبيقات المحدّدة التي تسبّب مؤثِّرًا سلبيًا.
للحصول على إرشادات تفصيلية، يُرجى الاطّلاع على نصائح لتحسين أداء وحدة المعالجة المركزية (CPU) ووحدة معالجة الرسومات (GPU) على Android.
تحسين أداء وحدة معالجة الرسومات
إذا أشار التحليل إلى أنّ اللعبة تعتمد بشكل كبير على وحدة معالجة الرسومات، يمكنك إجراء المزيد من التحقيقات باستخدام أدوات تصحيح أخطاء اللقطات لتحليل مسار العرض وطلبات الرسم.
للحصول على إرشادات تفصيلية، يُرجى الاطّلاع على نصائح لتحسين أداء وحدة المعالجة المركزية (CPU) ووحدة معالجة الرسومات (GPU) على Android.
التحقّق من فعالية التحسين
- إجراء اختبار A/B: أنشئ إصدارًا يتضمّن التحسينات التي تم تنفيذها.
- قياس الأداء: استخدِم الأدوات والطرق نفسها التي استخدمتها في التحليل الأوّلي لقياس أداء الإصدار المحسَّن.
- مقارنة النتائج: قارِن بيانات الأداء الجديدة بالبيانات الأولية للتأكّد من أنّه تم حلّ المشاكل المحدّدة وأنّه تم استيفاء متطلبات معدّل عرض اللقطات في الثانية ودرجة الحرارة.
- التكرار: كرِّر خطوات التحليل والتحسين إلى أن يتحقّق الأداء المطلوب.