حسن أداء لعبتك

الإعلانات

حسن أداء لعبتك

 

 

حسن أداء لعبتك

يستمتع اللاعبون أكثر باللعبة عندما تكون: أوقات تحميلها قصيره، معدل إطاراتها ثابت، و سرعة إستجابتها للمدخلات يمكن الإعتماد عليه.

إذا كانت لديك خبرة في تطوير ألعاب لأجهزة الحاسب أو أجهزة الألعاب “console”، فقد تفاجأ بمدى إختلاف هذه الأجهزة مقارنة بالأجهزة المحمولة..

عندما يتعلق الأمر بحجم كرت الشاشة “GPU” و أداء الذاكرة. هذا الإختلاف في بنية النظام قد يؤدي إلى صعوبة في التنبؤ بأداء لعبتك على اندرويد. 

يعمل هذا الدليل على مساعدتك في تحسين لعبتك، بحيث يمكن الإعتماد على أدائها قدر الإمكان، على مجموعة متنوعة من..

أجهزة اندرويد التي تشغّل لعبتك. بشكلٍ خاص، هذا الدليل يشرح كيفية تكوين تتبع النظام “Systrace“، لتحقيق التتبع الأمثل للنظام في لعبة اندرويد.

يصف الدليل بعد ذلك، كيف يمكنك إستخدام “تقرير المخرجات من تتبع النظام” لمساعدتك في النظر إلى جوانب محددة من أداء لعبتك.

 

 

 

 

 

حسن أداء لعبتك

 

إعداد تتبع نظام معتمد على اللعبة

أداة تتبع النظام “Systrace” متاحة كـ برنامج سطر أوامر، وكـ خدمة على الجهاز، لتلتقط وحدة المعالجة المركزية CPU..

ولمحة عن تسلسل تطبيقك خلال فترة قصيرة، يمكنك إستخدام النتائج الظاهرة في تقرير تتبع النظام “Systrace”..

لفهم أفضل، لأداء لعبتك على نظام اندرويد، ولتحديد أفضل الطرق لتحسين كفاءة اللعبة وإستجابتها.

 

أداة تتبع النظام “Systrace “، عبارة عن أداة ذات مستوى منخفض للغاية، والتي توفر الميزات التالية:

– توفير تقصي الحقائق. أداة تتبع النظام، تلتقط المخرجات مباشرة من الكيرنل “النواه”، لذا فإن المقاييس..

التي تلتقطها تكون مطابقة تقريباً لتلك المقاييس التي تقوم سلسلة من إستدعاءات النظام بالإبلاغ عنها.

تستهلك موارد قليلة. تنتج أداة تتبع النظام، نسبة حمولة منخفضة للغايه على الجهاز، تكون عادة أقل من 1%، لأنها تقوم بإرسال البيانات إلى التخزين المؤقت في الذاكرة.

 

 

 

 

 

 

حسن أداء لعبتك

 

الإعدادات المثلى

 

بغض النظر عن كيفية إلتقاطك لتتبع النظام، من المهم إعطاء الأداة مجموعة معقولة من المعطيات:

– الفئات: أفضل مجموعة من الفئات، لتمكين تتبع النظام المستند على اللعبة هي:

{sched، freq، idle، am، wm، gfx، view، sync، binder_driver، hal، dalvik}.

– حجم ذاكرة التخزين المؤقت: القاعدة العامة هي أن حجم التخزين المؤقت 10 ميغابايت لكل CPU أساسية يسمح بتتبع يبلغ طوله حوالي 20 ثانية.

على سبيل المثال، إذا كان الجهاز يحتوي على وحدتين من CPU رباعية النوى (مجموع 8 أنويه)، فإن القيمة المناسبة للتمرير إلى برنامج systrace هي 80،000 كيلوبايت (80 ميجابايت).

مع ذلك، إذا كانت لعبتك تؤدي الكثير من تبديل السياق “context-switching”، فيجب عليك زيادة التخزين المؤقت إلى 15 ميغابايت لكل CPU أساسية.

 

ملاحظة: من أجل طلب حجم مخزن مؤقت كبير، يجب أن يتوفر في الجهاز ذاكرة كافية لجميع الأنويه، ويجب أن يكون كل جزء من الذاكرة لكل نواة متجاور.

مثال، إذا حاولت إلتقاط تتبع للنظام، على جهاز ذي 8 أنويه، بحجم ذاكرة تخزين مؤقت يبلغ 80 ميجابايت، يجب أن يتوفر بالجهاز مساحة 640 ميجابايت..

ويجب أن يكون كل 80 ميجابايت جزء من الذاكرة، متوفر كقطع متجاورة.

 

– الأحداث المخصصة: إذا قمت بتعريف الأحداث المخصصة لإلتقاطها في لعبتك، فقم بتمكين العلامة a-  والتي تسمح لـ Systrace بتضمين هذه الأحداث المخصصة في تقرير المخرجات.

 

إذا كنت تستخدم برنامج سطر الأوامر الخاص بـ systrace، فإستخدم الأمر التالي لإلتقاط تتبع النظام الذي يطبق..

أفضل الممارسات لمجموعة الفئات، حجم ذاكرة التخزين المؤقت، و الأحداث المخصصة.

 

$python systrace.py -a com.example.myapp -b 80000 -o my_systrace_report.html \
  sched freq idle am wm gfx view sync binder_driver hal dalvik

إذا كنت تستخدم تطبيق تتبع النظام على الجهاز، فأكمل الخطوات التالية لإلتقاط تتبع النظام الذي يطبق أفضل الممارسات لـ..

مجموعة الفئات، حجم ذاكرة التخزين المؤقت، و الأحداث المخصصة:

1- تمكين الخيار تتبع التطبيقات التي يمكن تصحيح الأخطاء بها.

2- تحت حجم ذاكرة التخزين المؤقت، قم بإختيار 65536 (تقريباً 64 ميغابايت). لاحظ أنه من أجل إستخدام هذا الإعداد..

يجب أن تتوفر في الجهاز مساحة 256 ميغابايت أو 512 ميغابايت (بناءً على ما إذا كان CPU ذو 4 أو 8 أنوية)، و يجب أن يكون كل 64 ميغابايت من الذاكرة متاح كأجزاء\ قطع متجاورة.

 

3- اختر الفئات، ثم قم بتمكين الفئات الموجودة في القائمة التالية:

  • am: Activity Manager
  • binder_driver: Binder Kernel driver
  • dalvik: Dalvik VM
  • freq: CPU Frequency
  • gfx: Graphics
  • hal: Hardware Modules
  • idle: CPU Idle
  • sched: CPU Scheduling
  • sync: Synchronization
  • view: View System
  • wm: Window Manager

 

4- قم بتمكين تتبع التسجيل Record tracing.

5- قم بتحميل لعبتك.

6- قم بإجراء التفاعلات التي تتوافق مع طريقة اللعب في لعبتك، والتي تريد قياس أداء الجهاز لها.

7- بعد وقت قصير من مواجهتك لسلوك غير مرغوب فيه في لعبتك، أوقف تشغيل تتبع النظام.

يجب أن تكون قد حصلت الآن على إحصائيات الأداء اللازمة، لتحليل المشكلة.

 

لتوفير مساحة على القرص، يقوم تتبع النظام الموجود على الجهاز بحفظ الملفات بتنسيق compressed trace

 (ctrace.*).

لفك ضغط هذا الملف عند إنشاء تقرير، إستخدم برنامج سطر الأوامر وقم بتضمين الخيار from-file--:

$python systrace.py --from-file=/data/local/traces/my_game_trace.ctrace \
  -o my_systrace_report.html

 

 

 

 

 

 

حسن أداء لعبتك

 

تحسين مجالات أداء محددة


هذا القسم يسلط الضوء على العديد من دواعي القلق الشائعه، في أداء الألعاب الخاصة بالأجهزة المحمولة، ويصف كيفية تحديد وتحسين هذه الجوانب في لعبتك.

 

سرعة التحميل

يرغب اللاعبون في الدخول إلى نشاط لعبتك بأسرع ما يمكن، لذا من المهم تحسين أوقات تحميل اللعبة قدر الإمكان.

عادة ما تساعد التدابير التالية في تحسين أوقات التحميل:

نفذ التحميل البطيء. إذا كنت تستخدم نفس الأصول خلال المشاهد أو المستويات المتتابعة في لعبتك، فقم بتحميل هذه الأصول مرة واحدة فقط.

– قلل حجم أصولك. وبهذه الطريقة، يمكنك حزم الإصدارات غير المضغوطة من هذه الأصول، بملف APK الخاص باللعبة.

– إستخدم طريقة ضغط disk-efficient. مثال على هذه الطريقة zlib.

– إستخدم IL2CPP بدلاً من mono. (تنطبق فقط إذا كنت تستخدم Unity). توفر IL2CPP  أفضل أداء لتنفيذ سكربت #C.

– اجعل لعبتك متعددة التسلسلات “multithreaded”. لمزيد من التفاصيل راجع قسم تناسق معدل الإطارات.

 

 

 

 

 

 

حسن أداء لعبتك

 

 

تناسق معدل الإطارات

أحد العناصر الأكثر أهمية في تجربة اللعب، هو تحقيق معدل إطارات ثابت\متناسق. لتسهيل تحقيق هذا الهدف، قم بإتباع أساليب التحسين التي تمت مناقشتها في هذا القسم.

 

 

خاصية التعدد

عند التطوير لعدة منصات، من الطبيعي أن تضع كل الأنشطة الموجودة بداخل لعبتك في تسلسل واحد. على الرغم من أن طريقة التنفيذ هذه..

سهلة التنفيذ في العديد من محركات الألعاب، إلا أنها تكون بعيدة عن المثالية عند التشغيل على أجهزة اندرويد.

ونتيجة لذلك، غالباً ما تكون الألعاب ذات التسلسل الوحيد بطيئة التحميل، و تفتقر إلى الثبات في معدل الإطارات.

تتبع النظام الظاهر في الشكل 1 يعرض سلوكاً نموذجياً للعبة تعمل على CPU واحد في كل مرة:

الشكل 1. تقرير تتبع النظام للعبة ذات تسلسل وحيد.

 

لتحسين أداء لعبتك، أجعل لعبتك ذات عدة تسلسلات. عادة، يكون أفضل نموذج بوجود تسلسلين:

– تسلسل اللعبة، والذي يحتوي على النماذج الأساسية للعبة، ويرسل أوامر التنفيذ.

– تسلسل التنفيذ، والذي يستقبل أوامر التنفيذ ويترجمها إلى أوامر رسوميات والتي يمكن لكرت GPU إستخدامها لعرض مشهد.

 

واجهة برمجة Vulkan تتوسع بناءً على هذا النموذج، نظراً لقدرتها على دفع 2 من المخازن المؤقته الشائعة بشكلٍ متوازٍ.

بإستخدامك لهذه الخاصية، يمكنك نشر عدة تسلسلات تنفيذ، عبر عدة وحدات CPU، مما يؤدي إلى تحسين وقت عرض المشهد.

 

يمكنك أيضاً إجراء بعض التغييرات الخاصة بالمحرك، لتحسين أداء خاصية التعدد للعبتك:

– إذا كنت تطور لعبتك بإستخدام محرك Unity، فقم بتمكين خيارات Multithreaded Rendering و GPU Skinning.

– إذا كنت تستخدم محرك مخصص، فتأكد من أن أوامر التنفيذ و أوامر الرسوميات تمت محاذاتهما بشكلٍ صحيح؛ خلاف ذلك، يمكنك إحداث تأخير في عرض مشاهد لعبتك.

بعد تطبيق هذه الخيارات، يجب أن ترى أن لعبتك يمكنها تشغيل وحدتي CPU على الأقل في نفس الوقت، كما هو مبين في الشكل 2:

الشكل 2. تقرير تتبع النظام عن لعبة متعددة التسلسلات.

 

 

 

 

حسن أداء لعبتك

 

تحميل عناصر واجهة المستخدم

عند إنشاء لعبة غنية بالمميزات، من المغري عرض العديد من الخيارات والإجراءات المختلفة للاعب في نفس الوقت.

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

تقرير تتبع النظام الموضح في الشكل 3 يعرض مثالاً لإطار واجهة المستخدم التي تحاول تقديم عناصر كثيرة جداً بالنسبة لقدرات الجهاز المحمول.

 

الهدف الجيد هو تقليل وقت تحديث واجهة المستخدم من 2-3 مللي ثانيه. يمكنك تحقيق تحديثات سريعة مماثله، من خلال إجراء تحسينات مشابهة لما يلي:

– تحديث العناصر التي تظهر على الشاشة المنتقله فقط.

– الحد من عدد طبقات وتراكيب واجهة المستخدم. خذ في الإعتبار دمج إستدعاءات الرسوميات، مثل التظليل و التراكيب، التي تستخدم نفس المادة.

– تأجيل عمليات عناصر الرسوميات لـ GPU.

– تنفيذ أداء أكثر قوة لكلٍ من حجب frustum و occlusion.

 

(Occlusion: ميزة تقوم بتعطيل عرض الكائنات عندما لا تكون مرئية حالياً للكاميرا لأنه تم حجبها بواسطة أشياء أخرى. – frustum: ميزة تقوم بتعطيل عرض الكائنات الموجودة خارج منطقة عرض الكاميرا فقط، ولكن لا تقوم بتعطيل أي شيء محجوب عن العرض).

 

– إن أمكن، قم بتنفيذ عمليات الرسم، بإستخدام واجهة برمجة Vulkan. تكلفة إستدعاء الرسم تكون أقل على فولكان Vulkan.

 

 

الشكل 3. تقرير تتبع النظام عن لعبة تنفذ

العشرات من عناصر واجهة المستخدم في نفس الوقت.

 

 

 

 

 

 

حسن أداء لعبتك

 

إستهلاك الطاقة

حتى بعد إجراء التحسينات التي تمت مناقشتها في القسم السابق، قد تجد أن معدل إطارات لعبتك يتدهور خلال أول 45 – 50 دقيقة من اللعب.

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

في كثير من الحالات، هذا الوضع الغير مرغوب فيه من إرتفاع درجة الحرارة و إستهلاك الطاقة، يرتبط بكيفية توزيع عبء العمل الخاص باللعبه، عبر وحدات CPU الخاصة بالأجهزة.

 

لزيادة كفاءة إستهلاك لعبتك للطاقة، قم بتطبيق أفضل الممارسات الموضحة في الأقسام التالية.

 

الحفاظ على التسلسلات الثقيلة على الذاكرة على وحدة CPU واحدة

على العديد من الأجهزة المحولة، تكون ذاكرة التخزين المؤقت الأساسية على وحدات CPU محددة..

بينما تكون ذاكرة التخزين المؤقت الثانوية على مجموعة من وحدات CPU التي تتشارك على مدار الساعه.

لزيادة عدد مرات الوصول إلى ذاكرة التخزين المؤقت الأساسية، بشكلٍ عام من الأفضل إبقاء التسلسل الرئيسي للعبة يعمل على وحدة CPU واحدة..

جنباً إلى جنب مع أي تسلسلات أخرى ثقيلة على الذاكرة.

 

 

 

 

حسن أداء لعبتك

 

تأجيل العمل قصير الأجل لخفض طاقة وحدات CPU

معظم محركات الألعاب، بما في ذلك Unity، معروفة بتأجيل عمليات السلاسل قيد التشغيل، على وحدات CPU المختلفة، المتصلة بالتسلسل الرئيسي للعبتك.

ومع ذلك، لا يمكن للمحرك معرفة بنية الجهاز المحددة، ولا يمكنه توقع عبء العمل الخاص بلعبتك بقدر ما يمكنك.

معظم رقاقات الأجهزة تحتوي على ساعتين مشتركتين “shared clocks” على الأقل، واحدة لوحدات CPU السريعة للجهاز.. 

والأخرى لوحدات CPU البطيئة للجهاز. ونتيجة لهذه البنية، إذا إحتاجت إحدى وحدات CPU السريعة إلى العمل بأقصى سرعة..

فإن جميع وحدات CPU السريعة الأخرى سوف تعمل أيضاً بأقصى سرعة. مثال التقرير الموضح في الشكل 4 يعرض لعبة تستفيد من وحدات CPU السريعة.

مع ذلك، فإن هذا المستوى العالي من النشاط، يولد قدراً كبيراً من الطاقة وإرتفاع الحرارة بسرعة.

 

 

 

 

 

 

 

الشكل 4. تقرير تتبع النظام يعرض مهمة دون المستوى الأمثل للتسلسلات، لوحدات CPU الخاصة بالجهاز.

 

ملاحظه: ضمن تقرير تتبع النظام، إذا قمت بتحديد تسلسل في إحدى صفوف وحدة CPU، فإن تتبع النظام سوف يعرض حالة CPU التي حدثت أثناء تنفيذ التسلسل.

الحاله “3” تمثل الحد الأقصى لسرعة CPU.

 

لتقليل الإستخدام الكلي للطاقة، من الأفضل الإقتراح على المجدول “scheduler” بأن الأعمال قصيرة الأجل مثل:

تحميل الصوت، تشغيل التسلسلات العاملة، وتنفيذ مصمم الرقصات، تم تأجيلها إلى مجموعة وحدات CPU البطيئة على الجهاز.

قم بنقل أكبر قدر من هذا العمل، إلى وحدات CPU البطيئة قدر الإمكان، مع الحفاظ على معدل الإطار المطلوب.

معظم الأجهزة تقوم بإدراج وحدات CPU البطيئة، قبل وحدات CPU السريعة، لكن لا يمكنك الإفتراض أن مركز العمليات الأمنية SOC لجهازك..

قد يستخدم هذا الترتيب. للتحقق من ذلك، قم بتشغيل أوامر مشابهة لتلك الأوامر الموضحة في كود مكتشف الطوبولوجيا على GitHub.

بعد معرفتك أي وحدات CPU هي الوحدات الأبطأ على جهازك، يمكنك الإعلان عن أوجه التقارب لتسلسلاتك قصيرة الأجل، والتي تتبع جدولة الجهاز.

للقيام بذلك، قم بإضافة الكود التالي بداخل كل تسلسل:

#include <sched.h>
#include <sys/types.h>
#include <unistd.h>

pid_t my_pid; // PID of the process containing your thread.

// Assumes that cpu0, cpu1, cpu2, and cpu3 are the "slow CPUs".
cpu_set_t my_cpu_set;
CPU_ZERO(&my_cpu_set);
CPU_SET(0, &my_cpu_set);
CPU_SET(1, &my_cpu_set);
CPU_SET(2, &my_cpu_set);
CPU_SET(3, &my_cpu_set);
sched_setaffinity(my_pid, sizeof(cpu_set_t), &my_cpu_set);

 

ملاحظة: في الحالات المتقدمة عندما يكون لديك عبء عمل متوازي للغاية، قد ترغب في إدارة هذه التسلسلات بطريقة تبقى فيها وحدات CPU البطيئة، نشطة قدر الإمكان.

هذا المستوى العالي من الدقة لجدولة وحدة CPU، يساعد في الحفاظ على معدل إطارات اللعبة.

 

 

 

 

حسن أداء لعبتك

 

زمن الوصول إلى الشاشة

الألعاب التي تعرض الإطارات بأسرع ما يمكن، تنشئ سيناريو مرتبط بكرت الشاشة GPU، بحيث يصبح مخزن الإطار المؤقت ممتلئ.

تحتاج وحدة CPU إلى إنتظار كرت الشاشة GPU، مما يؤدي إلى تأخير ملحوظ بين إدخال اللاعب و تفاعل الإدخال على الشاشة.

لتحديد ما إذا كان بإمكانك تحسين سرعة إطارات لعبتك، أكمل الخطوات التالية:

 

1- قم بإنشاء تقرير تتبع نظام، يتضمن gfx “الرسوميات”، وفئات الإدخال. تشتمل هذه الفئات على قياسات مفيدة بشكلٍ خاص لتحديد زمن الوصول إلى الشاشة.

2- تحقق من قسم SurfaceView من تقرير تتبع النظام. المخزن المؤقت الممتلئ يؤدي إلى أن عدد من المخازن المؤقته المعلقه، سوف تُرسم بشكلٍ متذبذب بين 1 و 2. كما هو موضح في الشكل 5.

 

 

 

 

الشكل 5. تقرير تتبع النظام يعرض مخزن مؤقت ممتلئ، يمتلأ بشكلٍ دوري بحيث لا يمكنه قبول أوامر الرسم.

 

 

 

لتخفيف هذا التناقض في سرعة الإطارات، أكمل الإجراءات الموضحة في الأقسام التالية:

 

 

 

حسن أداء لعبتك

 

دمج واجهة سرعة إطار اندرويد في لعبتك

تساعدك واجهة Android Frame Pacing API على إجراء تبادل إطارات، و تحديد فاصل زمني للمبادله، بحيث تحافظ لعبتك على معدل إطارات عمل أكثر تناسقاً.

 

 

تقليل دقة الأصول التي ليست ضمن واجهة مستخدم اللعبة

تحتوي شاشات العرض على الأجهزة المحمولة الحديثة، على عدد أكبر من البيكسلات مما يمكن للمشغل معالجته، لذلك لا بأس من تقليل حجم الشاشة..

بحيث تحتوي مجموعة من 5 أو حتى 10 بكسلات على لون واحد. بالنظر إلى بنية معظم المخازن المؤقته للعرض، من الأفضل تقليل الدقة على بُعد واحد فقط.

 

مع ذلك، لا تقلل من دقة عناصر واجهة المستخدم في اللعبة. من المهم الحفاظ على سماكة الخط، في هذه العناصر للحفاظ على حجم الأهداف كبير بما يكفي للمس لجميع اللاعبين.

ملاحظة: لأن كرت الشاشة GPU، يتطلب بعض الوقت لتغيير حجم أصولك، فمن الأفضل إجراء أي عمليات لخفض الدقة في مرحلة ما بعد المعالجة في لعبتك.

إذا كانت لديك واحدة.

 

 

 

 

حسن أداء لعبتك

 

تقديم السلاسة

عندما يتم تثبيت SurfaceFlinger على مخزن مؤقت للعرض، لعرض مشهد في لعبتك، يزداد نشاط وحدة CPU للحظات.

إذا حدثت هذه الزيادات في نشاط وحدة CPU بشكلٍ غير متساوي، فمن الممكن أن ترى تعثر في لعبتك. الرسم البياني في الشكل 6 يوضح سبب حدوث ذلك:

 

 

 

 


 

 

الشكل 6. تقرير تتبع النظام يوضح كيف يمكن لإطارٍ ما أن يُخطى الـ Vsync.

 

 

 

إذا بدأ إطارٍ ما في الرسم بعد فوات الأوان، حتى لو بعد فوات قليل من المللي ثانيه، فقد يُخطى نافذة العرض التاليه.

عندها يجب على الإطار أن ينتظر حتى يتم عرض Vsync التالي (33 مللي ثانيه عند تشغيل لعبة بسرعة 30 إطار في الثانيه “FPS”)

مما يؤدي إلى تأخير ملحوظ من وجهة نظر اللاعب.

 

لمعالجة هذه الحاله، إستخدم واجهة Android Frame Pacing API، والتي توفر دائماً إطار جديد في مقدمة موجة VSync.

 

 

 

 

حسن أداء لعبتك

 

حالة الذاكرة

عند تشغيل لعبتك لفترة مطوله من الوقت، من الممكن أن يعاني الجهاز من أخطاء إمتلاء الذاكرة.

في هذه الحاله، تحقق من نشاط وحدة CPU في تقرير تتبع النظام، و أنظر كم مرة يقوم فيها النظام بإجراء إستدعاءات لكيرنل kswapd  المقترن.

إذا كانت هناك العديد من الإستدعاءات أثناء تنفيذ لعبتك، فمن الأفضل إلقاء نظرة فاحصة على كيفية إدارة لعبتك و تنظيف الذاكرة.

لمزيد من المعلومات، اطلع على إدارة الذاكرة بفعالية في الألعاب.

 

 

 

حالة التسلسل

عند التنقل خلال العناصر النموذجية لتقرير تتبع النظام، يمكنك رؤية مقدار الوقت الذي يقضيه تسلسل معين، في كل حالة ممكنة للتسلسل..

من خلال إختيار التسلسل بداخل التقرير، كما هو موضح في الشكل 7:

 

 

 

 

 

 


 

الشكل 7. تقرير تتبع النظام يوضح كيف يؤدي إختيار تسلسل، إلى قيام التقرير بعرض ملخص الحاله لهذا التسلسل.

 

كما هو موضح في الشكل 7، قد تجد أن تسلسلات لعبتك ليست في حالة “التشغيل” أو “القابليه للتشغيل” بقدر ما يجب أن تكون.

القائمة التاليه تعرض العديد من الأسباب الشائعة والتي قد تؤدي إلى تحول تسلسل معين، بشكلٍ دوري إلى الحالة الغير إعتيادية:

– إذا كان التسلسل ساكناً لفترة طويلة من الزمن، فقد يعاني إما من “lock contention” أو يكون في إنتظار نشاط كرت الشاشة GPU.

– إذا كان التسلسل مغلقاً بإستمرار على الإدخال\الإخراج، فإما أن تقرأ الكثير من البيانات من القرص في آن واحد، أو أن لعبتك تُسحق.

 

ملاحظة: تميل الأجهزة المتطورة إلى أن تكون مرتبطة بـCPU في كثير من الأحيان، أكثر من إرتباطها غالباً بالإدخال\الإخراج.

ولكن إذا تم تشغيل لعبتك على جهاز غير متطور، فقد يكون من المفيد إجراء العديد من تحسينات الإدخال\الإخراج.

 

 

 

 

مصادر إضافيه


لمعرفة المزيد حول تحسين أداء لعبتك، اطلع على المصادر الإضافية التاليه:

مقاطع فيديو

تتبع النظام لعرض ألعاب من قمة مطوري ألعاب اندرويد 2018.

 

 

راجع أيضاً:

تطوير لعبة اندرويد

أدوات لتحسين لعبتك

التقاط تتبع النظام في سطر الأوامر

تطوير العاب لكافة الشاشات


للإطلاع على المقال باللغة الإنجليزية أضغط هنا.

اترك رد