الشبكة العربية لمطوري الألعاب

محترف  انس مشاركة 1

السلام عليكم.

اود ان اناقش معكم احد الامور التي يواجهها اغلب مطوري الالعاب على الهواتف الذكية، و هي ابعاد العرض(الشاشة)، و هي ترجمة ركيكة لمصطلح : Screen Resolution

ما اريد طرحه هو كيفية التعامل مع هذه الابعاد بطريقة تلقائية : Dynamic Resolution

لنفرض مثلا، اننا نريد تطوير العاب على منصة الاندرويد. علما ان هذا النظام يعمل على عدة اجهزة مختلفة اختلافا كبيرا خصوصا في ابعاد الشاشة.
السؤال هو : ما هي بعض التقنيات التي تستعمل في تطوير الالعاب حتى تعمل دون مشاكل على كل الاجهزة ؟

او بتعبير اخر : كيف يمكن برمجة لعبة غير مرتبطة بابعاد عرض معينة ؟

شكرا.
سلام

مبتدئ  Integrated Systems Technology مشاركة 2

السلام عليكم ورحمة الله وبركاته
يمكن أن تطلع على هذا الرابط لتفصيل المسألة
http://developer.android.com/guide/practices/screens_support.html
وهذا الرابط، لحل سريع
http://stackoverflow.com/questions/4666776/android-screen-resolution

خبير مدير وسام البهنسي مشاركة 3

وفي 12/محرم/1434 11:37 م، قال Integrated Systems Technology متحمساً:

يمكن أن تطلع على هذا الرابط لتفصيل المسألة
http://developer.android.com/guide/practices/screens_support.html

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

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

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

مثلاً، لدينا موبايل بأبعاد 200×320، لكن أقرب إصدار من الرسوميات لدينا مصمم لأبعاد 260×340. أولاً طبعاً يجب الحفاظ على النسبة وعدم تشويهها. في حالتنا فإن رسومياتنا مصممة للشاشات بنسبة 1.3، بينما الموبايل شاشته بنسبة 1.6.
أولاً نقوم بضبط الأبعاد كي تتسع ضمن أبعاد الموبايل. نلاحظ أن الارتفاع هو العقبة، فنحجم الارتفاع ليصبح من 260 إلى 200. أي نسبة التحجيم هي 0.77 تقريباً. فيصبح العرض 261 بكسل. هذا يعني أن هناك فراغاً غير مملوء عند وضع المربع 200×261 ضمن الشاشة 200×320. يمكنك هنا تقسيم المسافة الزائدة إلى جزئين متساويين وتوزيعهما حول مربع العرض، ليصبح لدينا الوضع كالآتي:

منطقة سواد (32 بكسل) - مساحة عرض (261 بكسل) - منطقة سواد (32 بكسل)

وبدلاً من السواد يمكنك أيضاً وضع خلفية معينة كما تفعل لعبة سونيك عندما تم نقلها إلى الإكس بوكس 360 (نفس الشيء للعبة Comix Zone أيضاً).

كما ترى، هذا الحل مقبول ضمن حدود معينة. فمن غير المنطقي تكبير الصورة مثلاً أربعة أضعاف لعرضها على شاشة دقة عالية HDTV انطلاقاً من رسوميات معدة بدقة منخفضة، لذلك نرى حل لعبة النباتات ضد الزومبي منطقياً نوعاً ما وإن كان متعباً. هناك شبه حل أيضاً متبع في برامج مماثلة منصات اللعب مثل مشغل ألعاب الصخر وألعاب السيجا والنينتيندو. في هذه البرامج لا يمكن توفير رسوميات بدقة عالية لأن الألعاب كثيرة ومصممة أصلاً لأجهزة محدودة الإمكانيات. لذلك يقوم برنامج التشغيل بعمل تكبير للرسوميات بطريقة "ذكية" وفقاً لخوارزميات مختلفة أصبح بعضها مشهوراً مثل تلك المتبعة في محرك رسم 2xSAI و Super Eagle. هذه الخوارزميات تبحث عن المعالم في الصورة كالخطوط والحدود وتحاول تحسين جودتها أثناء التكبير. هذه العملية تعطي نتائج جيدة لكنها مكلفة جداً أيضاً (أعتقد أن الكود لهذه المحركات مفتوح المصدر).

وسام البهنسي
مبرمج في إنفيديا وإنفريمز