Alaa_Hammash

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

15 ردود في هذا الموضوع

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

 

 

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

 

تركز هذه المقالة على اللغات المستخدمة في برمجة الألعاب و ليس برمجة محركات الألعاب. بالرغم من أن كل ما يرد هنا يمكن قوله عن برمجة محركات الألعاب إلا أن لي رأيا واحدا لا يتغير عن برمجة محركات الألعاب و هو أنها يجب أن تكون باستخدام 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 هي الأسرع.

 

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

3

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ورحمة الله وبركاته

 

هل يمكنك البدء في مشروع برمجة الألعاب بدل أن تتكلم بلا فعل ؟؟

 

هذا أولاً 

 

ثانياً لن يهم الأمر أي لغة برمجة سأستخدم في برمجة الألعاب فكل لغات البرمجة جيدة ..

لأنه لن يهمني كثيراً أن أتحكم بالعتاد كثيراً ، كل ما أريده في التحكم بالعتاد أيضاً يمكنني إستعماله في لغة برمجة غير الـC ..

 

تحياتي  ^_^

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ورحمة الله وبركاته

 

هل يمكنك البدء في مشروع برمجة الألعاب بدل أن تتكلم بلا فعل ؟؟

 

كم اتمنى المشاركة في مشروع مجاني لبرمجة الالعاب لكنني الآن مشغول جدا بمشروع مراكز المهن الرقمية الذي تحدثت عنه في هذه المقالة:

صناعة الألعاب في الوطن العربي بين مطرقة القرصنة و سندان التكلفة

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

ما أكتبه من مقالات عن برمجة الألعاب هو لرغبتي في إفادة الآخرين و مشاركتهم بما تعملته في 28 عاما من ممارستي للبرمجة بلغتي C و Assembly.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكراً لك كلام جميل 
لقد سمعت من البروفيسور Sebastian Thrun  و هو الفائز بجائزة DARPA Grand Challenge  حيث صمم و فر يقه سيارة ذاتية القيادة، أنه برمجها بلغة c/c++ لأنها الأسرع و هذا حرفيا من كلامه 

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكراً لك كلام جميل 

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

شكراً لكم

 

Technologies shared between iOS and OS X include the OS X kernel, BSD sockets for networking, and Objective-C and C/C++ compilers for native performance

 

The kernel control system lives in the BSD portion of the kernel and is therefore written in C and not C++ (I/O Kit uses C++)

 

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

 

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

انت مخطأ كثييييييييييييييييييييييييييييييييييييييييرا

 

السي بلس بلس ليست اللغة الوحيدة لصنع الالعاب الاحترافية و ثلاثية الابعاد

 

 

بايثون يمكنها ذلك ايضا

 

مثال للالعاب المبرمجة ببايثون

 

انضر هذه العاب قوية جدا و مبرمجة ببايثون ليست العاب بسيطة كما قلت بل احترافية

 

و ايضا السي شارب يمكنها برمجة العاب قوية جدا

 

اليست العاب اكس بوكس مبرمجة بالسي شارب

 

انضر كل ما قلته خطأ

 

طبعا جافا لا يمكنها ذلك فهي ضعيفة جدا في مجال الالعاب القوية الثلاثية الابعاد

 

 

 

 

 

كل ما كتبته و كل ما قلته خطأ تماما

 

و ايضا من قال لك ان اسمبلي يمكنها برمجة العاب اسمبلي لا يمكنها حتى ان تصنع واجهة رسومية فكيف لها ان تبرمج العاب

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

.... اسمبلي لا يمكنها حتى ان تصنع واجهة رسومية .....

 

 

عفواً أخي ! هل تعلم فعلا ما تتحدث عنه ؟؟؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

عفواً أخي ! هل تعلم فعلا ما تتحدث عنه ؟؟؟

 

نعم اعلم ما اتحدث عنه

 

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

 

اذا كنت قد اخطأت قل لي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أنت تقارن بين 5 لغات برمجة (C++,C#,Java,Pyhton,Assembly) و بالتالي من المفترض أن تكون على دراية بكل لغة حتى تستطيع أن تحدد أماكن القوة و الضعف ..

 

نعم اعلم ما اتحدث عنه

 

 

يُمكن استخدام الـ Win32 API لكتابة برامج ذات واجهة رسومية بالأسمبلي.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أنت تقارن بين 5 لغات برمجة (C++,C#,Java,Pyhton,Assembly) و بالتالي من المفترض أن تكون على دراية بكل لغة حتى تستطيع أن تحدد أماكن القوة و الضعف ..

 

 

يُمكن استخدام الـ Win32 API لكتابة برامج ذات واجهة رسومية بالأسمبلي.

 

لكن لا يمكنها ان تبرمج العاب بنفسها

 

يمكنها ان تدخل في برمجة جزء منها فقط و ليس كله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

لكن لا يمكنها ان تبرمج العاب بنفسها

 

يمكنها ان تدخل في برمجة جزء منها فقط و ليس كله

 

إذا كانت الأسمبلي أم اللغات ..

 

أي اللغات في النهاية تحول إلى أسمبلي ..

 

كيف للأسمبلي أن لا تصنع العاب ؟؟

 

تحياتي  ^_^

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

إذا كانت الأسمبلي أم اللغات ..

 

أي اللغات في النهاية تحول إلى أسمبلي ..

 

كيف للأسمبلي أن لا تصنع العاب ؟؟

 

تحياتي  ^_^

 

حسنا اعطيني لعبة برمجة باسمبلي و بواجهة رسومية ؟؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

إذا كانت الأسمبلي أم اللغات ..

 

أي اللغات في النهاية تحول إلى أسمبلي ..

 

كيف للأسمبلي أن لا تصنع العاب ؟؟

 

تحياتي  ^_^

 

سأقول الحقيقة

 

لقد اسكتني بكلامك

 

لم اجد اي شيئ  اقوله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

حسنا اعطيني لعبة برمجة باسمبلي و بواجهة رسومية ؟؟

 

إفتح برنامج ollydbg ثم إفتح أي لعبة بهذا البرنامج

سترى جميع الكود بالأسمبلي  :D

 

أو إليك هذا الكتاب Graphics Programming Black Book

يعرض فيه البرمجة بالجرافيك بين الـC والأسمبلي

http://www.nondot.org/sabre/Mirrored/GraphicsProgrammingBlackBook/

 

تحياتي  ^_^

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أعتقد أن  أى لغة قادرة على صنع لعبة ولكن بنسب متفواتة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .