موضوع: مقالة: أي لغات البرمجة أستخدم في برمجة الألعاب؟

ردود: 2 | زيارات: 1628
  1. #1
    عضو جديد
    تاريخ التسجيل
    Sep 2013
    المنطقة
    فلسطين و الأردن
    ردود
    33

    مقالة: أي لغات البرمجة أستخدم في برمجة الألعاب؟

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


    أي لغات البرمجة أستخدم في برمجة الألعاب؟ ما هي اللغات التي تستخدمها الشركات العالمية؟
    لا شك أن كل من يريد أن يدخل عالم برمجة الألعاب يسأل السؤالين السابقين و هنا سأحاول إن شاء الله أن أجيب عن التساؤلين بقدر ما استطيع.

    تركز هذه المقالة على اللغات المستخدمة في برمجة الألعاب و ليس برمجة محركات الألعاب. بالرغم من أن كل ما يرد هنا يمكن قوله عن برمجة محركات الألعاب إلا أن لي رأيا واحدا لا يتغير عن برمجة محركات الألعاب و هو أنها يجب أن تكون باستخدام C++/C بالإضافة إلى لغة Assembly. يمكنك باستخدام هذه اللغات تحقيق أفضل أداء و الاستفادة من العتاد إلى أقصى حد.

    تنقسم لغات البرمجة في عالم الألعاب إلى عالمين أولهما: عالم C++/C و العالم الآخر هو: "اللغات الأخرى"

    يعتمد اختيار اللغة المستخدمة في برمجة الألعاب على عدة أمور:
    1- لغات البرمجة التي توفرها المنصة التي ستعمل عليها اللعبة
    2- متطلبات اللعبة من الأداء و التكنولوجيا
    3- إذا كنت تنوي احتراف برمجة الألعاب أم لا
    4- منصات التشغيل المطلوب تشغيل اللعبة عليها

    في الحالات التالية استخدم أي لغة برمجة "اللغات الأخرى":
    1- اذا كنت لا تسعى إلى الاحتراف
    2- اذا كنت تبرمج العابا صغيرة لا تحتاج إلى أداء عال
    3- اذا كانت منصة التشغيل تفرض عليك لغة محددة
    4- اذا كنت تريد أن تصنع لعبة تعمل على العديد من منصات التشغيل التي لا يتوفر لديك محرك العاب يدعم C++/C على كل تلك المنصات.

    في الحالات التالية استخدم C++/C:
    1- اذا كنت تسعى إلى الاحتراف و المقدرة على المنافسة عالميا
    2- اذا كنت تريد أن تبرمج العابا ضخمة تحتاج إلى اعتصار كل نقطة أداء يوفرها العتاد
    3- إذا كنت تسعى إلى التحرر من أي قيود تضعها العديد من الشركات المنتجة لمحركات الالعاب على محركاتها.
    4- اذا كنت تريد أن تكون قادرا على مجارات التكنولوجيا الحديثة في مجال صناعة الألعاب فور صدورها. عندما تختار C++/C فإنك ستكون دائما قادرا على اضافة ميزات جديدة تستفيد من آخر تكنولوجيا CPU و GPU و البرمجة المتوازية و أحدث الخوارزميات المستخدمة في برمجة الألعاب و غيرها دون الحاجة لانتظار الرحمة من غيرك ليضيف تلك الميزات إلى محرك الألعاب.

    بهذا يكون لدينا منهج لاختيار لغة البرمجة التي تناسب الطريق الذي تريد أن تسلكه في عالم برمجة الألعاب. لكن يبقى التساؤل أي "اللغات الأخرى" أختار؟ إليك الإجابة:

    الخيار بين "اللغات الأخرى":
    1- اذا كانت لغة Python (بايثن أو بايثان (الألف الثانية مفخمة)) إحدى الخيارات فعليك بها فهي لغة راسخة و متعددة منصات التشغيل.
    2- اذا كان محرك الألعاب يدعم أكثر من لغة حوار احدها خاص بالشركة مالكة المحرك، و الأخرى لغة عامة معروفة فعليك باللغة العامة لأن هذا يعني أنك ستتمكن من الاستفادة مما ستتعلمه في مجالات أخرى. مثلا اذا كان الخيار بين اللغة الخاصة Unity3D Script و اللغات العامة التي يدعمها هذا المحرك مثلا لغة جافا سكريبت او سي شارب فعليك بإحدى اللغات العامة. لكن من الضروري الانتباه إلى أنه اذا كان الدعم المقدم للغة الخاصة أفضل من الدعم المقدم للغة العامة فإنه يجب تفضيل اللغة الخاصة.
    3- اذا كان الخيار بين لغتين عامتين فاختر اللغة التي تعمل على عدد أكبر من منصات التشغيل. مثلا اذا كان الخيار بين اللغتين العامتين: بايثان و سي شارب فإن الخيار بالتأكيد سيكون بايثان لأنها متوفرة على عدد اكبر من منصات التشغيل.

    لغات البرمجة بين السهولة و الصعوبة:
    كثيرا ما اقرأ او اسمع أن البرمجة باستخدام سي شارب و غيرها اسهل من C++/C و بالطبع يتم دائما تقديم مثال عن عمل شيئ معقد باستخدام سطرين في لغة سي شارب و عمله بمئة سطر في C++ إن مثل هذا الفعل خديعة و استخفاف بالعقول. الخديعة هي أن السطرين سابقي الذكر ما هما الا استدعاء لوظائف من مكتبات ملحقة باللغة و ليست جزءا من اللغة!!. لقد أرهق صانعوا سي شارب انفسهم بصناعة تلك المكتبات ليسهل عليهم تسويق اللغة على انها لغة سهلة الاستخدام. يتوفر للغة C++/C عشرات الآلاف من المكتبات لكن بالطبع لا يقول أحد أن تلك المكتبات هي جزء من اللغة و إنما هي ملحقات. لتكون المقارنة السابقة عادلة كان يجب استخدام إحدى مكتبات C++ و عندها سيتم انجاز المطلوب في سطرين كما هو الحال في C#. في بدايات انتشار لغة C# كان البعض يروّج إلى أنه انتهى عهد C++/Cلكن الكثير من المبرمجين تركوا لغة سي شارب بعد ان وجدوا أنهم اصبحوا مجرد تابعين غير قادرين على التقدم بأكثر من ما تسمح به مايكروسوفت. تذكر أن هناك الاف المكتبات الجاهزة التي تجعل استخدام لغة C++/C سهلا جدا في الكثير من المجالات. و تذكر أنك في بداية استخدامك للغات مثل C# يكون الأمر اسهل من C++/C ، لكنك ما أن تتعمق في استخدام اللغة حتى تجد أنك محصور في قفص في حالة سي شارب بينما تجد نفسك حرا طليقا في حالة C++/C. لقد أشار مبرمج أحد الإضافات المشهورة لمحرك الألعاب Unity3D إلى أنه كان من الصعب جدا اعادة كتابة الكثير من الوظائف الرياضية باستخدام لغة سي شارب نظرا لعدم توفرها بينما هي متوفرة من مصادر كثيرة جدا باستخدام لغة C++/C !!!

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

    لماذا تحاول الشركات المنتجة لمحركات الالعاب دفع المبرمجين إلى استخدام لغات برمجة خاصة؟؟؟
    السبب هو أن هذه الشركات تسعى إلى إيجاد مجتمع من المبرمجين تابع لهم و غير قادر على التطور إلا باستخدام الأدوات التي يقدمونها لهم و بالتالي يصبحون غير قادرين على المنافسة و يصبح المبرمج معتمدا بالكامل على طريقة البرمجة المقدمة من قبل تلك الشركة و يصبح من الصعب جدا بالنسبة للمبرمج الانتقال إلى تعلم طريقة جديدة. إلى ماذا يرشدك أنك يجب أن تشتري ترخيصا من Unity3D و UDK لتتمكن من استخدام C/C++ معهما بينما يمكنك استخدام لغة الحوار الخاصة بهما مجانا دون ترخيص؟؟؟

    لقد رأيت الكثير من المقارنات بين سرعة لغات البرمجة و قد سمعت للعديد من المبرمجين الذي يجزمون بأن اللغة الفلانية أسرع من غيرها. المأخذ الأعظم على كل تلك المقارنات أنها تقارن سرعة التنفيذ بين وظيفة مثلا بلغة C مع وظيفة بلغة C# و يتجاهلون تماما النقطة الأهم ذات الأثر الأعظم و هي "أسلوب البرمجة" الذي صمم ليُستخدم مع تلك اللغة. فمثلا اسلوب البرمجة بلغة C يختلف كثيرا عن اسلوب البرمجة بلغة C++ و هذا الاختلاف في الاسلوب هو السبب الأهم في كون لغة C++ أقل سرعة من C. لقد دار عدد كبير من الجدالات عن أن C++ تعمل بنفس سرعة C و هي جدالات لأن صانع C++ بنفسه يقول بأن C هي الأسرع.

    ما أوردته ما هو الا القليل القليل عن هذا الموضوع و الأمر برمته مطروح هنا للنقاش البنّاء المفيد.


  2. #2
    عضو
    صور رمزية 3dmax9
    تاريخ التسجيل
    Feb 2002
    المنطقة
    سلطنة عمان
    العمر
    45
    ردود
    132
    لماذا تحاول الشركات المنتجة لمحركات الالعاب دفع المبرمجين إلى استخدام لغات برمجة خاصة؟؟؟
    السبب هو أن هذه الشركات تسعى إلى إيجاد مجتمع من المبرمجين تابع لهم و غير قادر على التطور إلا باستخدام الأدوات التي يقدمونها لهم و بالتالي يصبحون غير قادرين على المنافسة و يصبح المبرمج معتمدا بالكامل على طريقة البرمجة المقدمة من قبل تلك الشركة و يصبح من الصعب جدا بالنسبة للمبرمج الانتقال إلى تعلم طريقة جديدة. إلى ماذا يرشدك أنك يجب أن تشتري ترخيصا من Unity3D و UDK لتتمكن من استخدام C/C++ معهما بينما يمكنك استخدام لغة الحوار الخاصة بهما مجانا دون ترخيص؟؟؟


    كلام سليم تشكر على الشرح ارجوا من الموجودين ان يتمكنوا من معرفة لغز الفرق بين اللغة المحدوده عن طريق الشركات واللغة الطليقة الامحدوده


    المشروع البرمجي الحالي
    https://www.facebook.com/AstwrtTrafyan

    مجموعة المشروع
    https://www.facebook.com/groups/184754391721049/

    منتدى اسرار البرمجة والمشاريع السابقة
    http://gamemasters.forumarabia.com/forum

Bookmarks

قوانين الموضوعات

  • لا يمكنك اضافة موضوع جديد
  • لا يمكنك اضافة ردود
  • لا يمكنك اضافة مرفقات
  • لا يمكنك تعديل مشاركاتك
  •  
  • كود BB مفعّل
  • رموز الحالة مفعّل
  • كود [IMG] مفعّل
  • [VIDEO] code is مفعّل
  • كود HTML معطل