الأربعاء، 27 سبتمبر 2006

برمجة الألعاب.. 2

في تدوينة سابقة ذكرنا بعض العمليات التي تمر بها اللعبة قبل الظهور في الأسواق , أكمل ما بدأناه :


3- Language اللغة المستخدمة :


عندما يتم الأتفاق على التصميم المبدئي للعبة , يتم تحديد لغة التصميم بناءً على الـ initial design . يعتمد أختيار اللغة على العديد من العوامل؛ مثل :



  • ألفة وتوافق اللغة المراد البرمجة بها ,

  • سرعة التنفيذ المطلوبة ,

  • المكتبات المستخدمة

  • أجهزة العرض API's

  • و يؤخذ بالاعتبار محرك اللعبة .


حالياً بسبب مبدأ الـ Object oriented والترجمة الى اللغة الثنائية Binary فإن اللغة المفضلة لبرمجة الألعاب هي ++C , للجافا و C شعبية ايضاً في بعض الأوساط البرمجية . أما Assembly language فهي ضرورية لبرمجة بعض منصات الألعاب وفي بعض الأحوال تستخدم لجعل اللعبة أسرع , أو للألعاب التي تحتاج تحميل بسيط . لغات الـ Fringe مثل Ada, Python و #C لها تأثير بسيط جداً لا يذكر في برمجة الألعاب وتستخدم من قبل مشجعينها فقط !!


زاد الإستخدام على لغات High-level scripting language لتصبح متضمنة تحت الألعاب المكتوبة بلغات lower-level مثل ++C . وكنتيجة قام المطورون بإنشاء لغات حسب الطلب لألعابهم مثل : id software, QuakeC و Epic Games . أخرون أختاروا لغات موجودة مثل Lua أو Python ليتفادوا مشاكل إنشاء لغه من البداية وتعليم مبرمجين آخرين على لغته التي أنشاها * .


في المقابل هناك نقاط ضعف لكل لغة من السابق سواء High-level OR Low-level :



  • Assembly : عرضة لوجود أخطاء داخلية , بطئ في التطوير , صعبة على المبتدئين كما انه لا يمكن نقلها أو اعادة استخدامها .

  • C : لا تحتوي على Object Oriented , تحتوي على GC اي انها عرضة للتسربات من الذاكرة ( Gabage ).

  • ++C : تحتوي CG ( عرضة لتسربات الذاكرة ) , معايير تجمييع اللغة قد يختلف ( الـCompilation ).

  • #C : يجب ان يكون التجميع تماماً في الوقت المناسب مع وقت التنفيذ , يحتاج البرنامج الناتح الى ذاكرة كبيرة ولا يمكن تحويلها او أعادة استخدامها ** .

  • Java : قد ينتابها بعض البطء , وغير مناسبة لمنصات الألعاب مثل PS series .

  • Python وَ Ada : لغات ألعاب Fringe , تحتوي على ادوات تطويرية بسيطة جداً وقليلة للسبب السابق ذكره .


ختاماً لهذه النقطة :


ارى ان لغة ++C هي الأفضل و الأنسب للاسباب السابق ذكرها و لاسباب سنتي على ذكرها في النقاط القادمة. ليس لأنني مبرمجة ++C ولكن امكانات اللغة جبارة ومكتباتها متعددة بالاضافة لوجود العديد من التطبيقات المتوفرة مفتوحة المصدر . كما ان معظم مبرمجين الألعاب قد مهدوا الطريق لاستخدامها سيراً على نهج : ابدأ من حيث انتهى الأخرون ..


----------------------------


* آمل ان لا يكون المبرمجين العرب من هذا النوع !!
** مبدأ Reusability ضروري لنجاح المراحل المتقدمة من اللعبة , وضروري جداً للاصدارات الجديدة .


تصبحون على خير :)

هناك 3 تعليقات:

  1. أوه نو! أملي في تصميم لعبة لا زال موجود لكن مع هادي اللست اللي مشالله الل ""فاهمة فيها"" كل شي زاد أملي في تصميم ألعاب!! الله الميسر!

    ردحذف
  2. SmBa
    لا تفقدي الأمل , انا واثقة اني يوم من الأيام راح اشوف لعبه من تصميمك وتباع في الأسواق بمبلغ وقدره ..

    ان شاء الله في التدوينات القادمة سوف أبسط الفكرة أكثر :)
    اهلا بك دائماً

    ردحذف