Header Image 11

نظرة لعملية استمثال لرفع أداء اللعبة

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

هنا بعض التحديات تظهر. دعنا نراجع بعض خصائص لعبتي:

  • اللعبة عبارة عن مرحلة واحدة كبيرة بدون فواصل.
  • عناصر اللعبة جلها ستكون في الذاكرة.
  • لعبتي تستخدم صور كثيرة لبناء عالمها. وهذه الصور تستخدم بشكل مكثف الشفافية.
  • في بعض الأحيان تتكون المرحلة بما لا يقل عن 11 طبقة من الرسومات.

هنا نضع في الاعتبار عمليتان رسمية تستهلك الكثير من وقت المعالج. وكلما زاد استهلاك المعالج كلما قل عدد الإطارات المرسومة. مما يعني إما بطئ اللعبة أو فقدان نعومة الحركة, أو الاثنان معا. نظرا لكمية عناصر الرسومية للعبتي في الشاشة, فأنا استهلك Draw Calls. ونظرا لحجم عناصر الرسومات وعدد طبقاتها فأنا استهلك Fill Rate. عملية تحسين كفاءة أداء اللعبة تتحتم الموازنة بين Draw Call و Fill Rate.

لمعالجة هذه المشكلة أقوم بعمليتين. أولا, أجمع أكبر قدر ممكن من عناصر الرسومات في رسمة واحدة. بهذه الطريقة بدل عدة Draw Calls أكتفي بـDraw Call واحدة. ثانيا, اعلم أن الـFill Rate يعنى برسم بكسلات ملفات الرسومات التي تتكون منها عناصر اللعب. ومن المهم جدا أن تعلم أنه يرسم أيضا البكسلات الشفافة للرسمة. يعني إذا كانت عندك ملف لصورة حجمها 100 في 100 بكسل. وملف آخر حجمها أيضا 100 في 100 ولكن هي عبارة عن صورة شفافة خالية وبوسطها نقطة واحدة فقط. كلتا الصورتين ستستهلك نفس الـFill Rate. فالمهمة الثانية عبارة عن تقليل كمية المساحات الشفافة في عناصر اللعبة.

انظر الصورة العليا لواجهة بيت اللعبة الحالية. الأحمر هي البكسلات الشفافة المهدرة لوقت المعالج والمقلل لأداء اللعبة:

[​IMG]

علي الآن تقسيم الصورة إلى مجموعة صور صغيرة لتقليل المساحات الشفافة قدر الإمكان. ولكن ضع في الاعتبار, بينما أنا أقلل من الـFill Rate, أنا أضيف للـDraw Call لأن واجهة البيت بدلا أن تكون صورة واحدة, ستكون الآن عدة صور! آه ه ه يا راسي!

Leave a Reply

Your email address will not be published. Required fields are marked *