سنلقي الضوء في مقال اليوم على لغات البرمجة المتوفرة في محرك الألعاب جودو، ومتى نختار كل لغة منها ونتعلم محاسن ومساوئ كل خيار، وسنكتب في الجزء التالي أول سكريبت برمجي ضمن محرك جودو باستخدام لغة البرمجة الافتراضية GDScript.
ترتبط الأكواد البرمجية بالعقد Nodes، فعندما تربط سكريبت برمجي بعقدة معينة، فإنك توسع سلوك تلك العقدة بإضافة وظائف جديدة لها، هذا يعني أن السكريبتات ترث كل وظائف وخصائص العقد المرتبطة بها.
على سبيل المثال لنفترض أننا نعمل على برمجة لعبة فضائية تتحرك فيها سفينة فضائية كما تبين الصورة التالية، ونريد أن تهتز الكاميرا عندما تتضرر السفينة. علينا إضافة عقدة كاميرا Camera2D تابعة لعقدة السفينة في التسلسل الهرمي كي تتبع الكاميرا حركة السفينة، لأن العقدة تتبع العقدة الأب لها في التسلسل الهرمي للعقد بشكل افتراضي، ولجعل الكاميرا تهتز عندما تتضرر السفينة، يجب في هذه الحالة إنشاء سكريبت برمجي وربطه بعقدة Camera2D وكتابة شيفرة الاهتزاز فيه لكون هذه الميزة غير متوافرة بشكل ضمني في جودو.
لغات البرمجة المتوفرة في محرك جودو
يوفر محرك الألعاب جودو أربع لغات برمجة هي GDScript و C# بالإضافة إلى كل من C وC++ من خلال تقنية GDExtention، وهناك لغات برمجة أخرى مدعومة من مجتمع جودو ولكن اللغات المذكورة هنا هي اللغات الرسمية. وللعلم يمكننا استخدام عدة لغات برمجة في مشروع واحد، مثلًا يمكننا كتابة شيفرة منطق اللعب باستخدام لغة GDScript كونها سهلة وسريعة في الكتابة، وتستخدم لغة C# أو C++ لتطبيق خوارزميات معقدة لتحسين أداء الشيفرة، أو يمكن كتابة كل شيء باستخدام GDScript أو C#، الأمر عائد لك. والهدف من هذه المرونة هو تلبية احتياجات المطورين لتنفيذ مشاريع الألعاب المختلفة.
ما لغة برمجة التي يجب استخدامها مع جودو
يُنصح باستخدام لغة GDScipt إذا كنت مبتدئًا، إذ أنشئت هذه اللغة لجودو بشكل خاص ولتلبية احتياجات مطوري الألعاب، وهي تتميز بصياغتها السهلة وقلة حجمها، كما أنها تقدم أفضل تكامل مع محرك الألعاب جودو.
سنحتاج في حال استخدام لغة C# إلى محرر أكواد خارجي مثل VSCode أو Visual Studio، وعلى الرغم من كون دعم لغة C# أفضل، ولكننا لن نجد العديد من الموارد المساعدة لاستخدامها مع محرك الألعاب جودو مقارنة بلغة GDScript، لذا يُنصح باستخدام لغة C# لمستخدمي اللغة الخبرين فقط.
دعنا نشرح أكثر عن مميزات كل لغة، و محاسنها ومساوئها في فقراتنا التالية.
لغة GDScript
إن لغة GDScript هي لغة أمرية Imperative وكائنية التوجه Object-oriented مطورة ومكتوبة خصوصًا لمحرك الألعاب جودو، ومصممة لتوفير وقت مطوري الألعاب في كتابة المنطق البرمجي لألعابهم بسرعة وسهولة، وتضم المميزات التالية:
- صياغة بسيطة تعطي ملفات صغيرة الحجم
- وقت تحميل قليل وتصيير rendering سريع جدًا
- تكامل قوي مع محرر جودو، مع إكمال للشيفرة للعقد والإشارات ومعلومات أكثر مع المشهد المرتبط به
- وجود أنواع معطيات لتمثيل المتجهات vectors والتحويلات الهندسية transforms مما يسهل استخدام الجبر الخطي الضروري للألعاب
- تدعم الخيوط المتعددة multiple threads وتملك نفس كفاءة اللغات المكتوبة بشكل ساكن أي اللغات التي يحدد فيها نوع البيانات بشكل ثابت وقت التصريف compiling
- لا يوجد فيها كنس للمهملات garbage collection، لأن هذه الميزة قد تبطئ عملية تطوير الألعاب. بدلاً من ذلك، يدير محرك جودو المراجع References ويخصص الذاكرة تلقائيًا في معظم الحالات، مع توفير إمكانية التحكم اليدوي بالذاكرة عند الحاجة
- توفر ميزة تحديد النوع التدريجي Gradual Typing، فالمتغيرات لها أنواع ديناميكية افتراضيًا، ولكن يمكنك استخدام ميزة تلميحات النوع type hinting للتحقق من الأنواع.
- تشبه لغة GDScipt لغة بايثون Python في الهيكلية عن طريق استخدام كتل الشيفرة والمسافات البادئة، ولكنها لا تعمل بنفس المضمون، فقد طورت بالاعتماد على لغات برمجية متعددة مثل Squirrel وLua وبايثون.
ملاحظة: قد تتساءل لماذا لا نستخدم لغة بايثون أو لغة Lua مباشرة في محرك جودو؟ في الواقع كان جودو يستخدم بايثون و Lua وقد تطلب تكامل اللغتين الكثير من العمل ويملك الكثير من المحدوديات، مثلًا كان دعم الخيوط threads تحديًا كبيرًا في بايثون، كما أن تطوير لغة جديدة لا يتطلب جهدًا أكبر ويمكّن من تلبية احتياجات مطوري الألعاب، لهذا كانت لغة GDScipt ويجري العمل على تحسينات وميزات كبيرة على اللغة ستكون صعبة التنفيذ في حال استخدام لغات برمجة من طرف ثالث.
لغة .NET و C#
دُعمَت لغة C# الخاصة بمايكروسوفت رسميًا في محرك الألعاب جودو لأنها اللغة المفضلة لدى مطوري الألعاب، كما أن لغة C# متطورة ومرنة ولديها الكثير من المكتبات المكتوبة لأجلها، وكان إضافة الدعم لها ممكنًا بفضل تبرع سخي من مايكروسوفت لمطوّري جودو.
تقدم لغة C# حلًا وسطيًّا بين الأداء وسهولة الاستخدام، ولكن يجب الانتباه من استخدامها لكانس المهملات garbage collector
ملاحظة1: يجب استخدام نسخة .NET من محرر جودو لكتابة البرامج النصية باستخدام C#، ويمكن تنزيله من موقع جودو الرسمي. بما أن جودو تستخدم .NET6 فيمكنك نظريًا استخدام أي مكتبة .NET من طرف ثالث أو أي هيكلية في جودو، بالإضافة لأي لغة برمجة متوافقة مع البنية التحتية مثل F# وBoo وClojureCLR، ولكن لغة C# هي خيار .NET الوحيد المدعوم.
ملاحظة2: لا تُنفذ شيفرة GDScript بسرعة لغات C# أو C++ المصرّفة، ولكن محرك جودو نفسه يحتوي على الكثير من الخوارزميات الأساسية السريعة التي تستدعي الدوال والوظائف الأساسية المكتوبة بلغة C++ داخل بنية المحرك، ففي معظم الأحوال لن تؤثر كتابة منطق اللعب على الأداء بشكل ملحوظ سواء استخدمت لغة GDScript أو C# أو C++ .
تنبيه: لا يمكن تصدير المشاريع المكتوبة بلغة C# باستخدام جودو 4 إلى منصة الويب أي تطوير لعبة تعمل مباشرة في المتصفح، فإذا كنت ترغب في تطوير لعبة أو تطبيق ويب باستخدام لغة C# فيجب عليك استخدام جودو 3 لاستخدام لغة C# على المنصة. كما أن دعم منصتي أندرويد وiOS متوافر في جودو 4.2 لكنه لا يزال تجريبيًا لحظة كتابة هذا المقال ولا تزال فيه بعض المحدوديات.
استخدام لغة C++ عبر GDExtention
تسمح لك GDExtention بكتابة شيفرة اللعبة باستخدام لغة C++ دون الحاجة لإعادة تصريف جودو.
يمكنك استخدام أي إصدار من اللغة أو تنويع المصرّف والإصدارات للمكتبات المشتركة بفضل استخدام واجهة برمجة التطبيقات المعروفة باسم C API Bridge وهي واجهة برمجية تسمح باستخدام أكواد مكتوبة بلغة C مع لغات برمجة أخرى وتمكن التطبيقات المكتوبة بلغات مختلفة من التفاعل مع بعضها البعض بسهولة.
إن GDExtention هي أفضل خيار لتعزيز أداء الألعاب التي تطورها باستخدام جودو، إذ لست بحاجة لاستخدامها في كل اللعبة ويمكنك استخدامها فقط في الأجزاء التي تحتاج إلى تحسين الأداء بشكل كبير وكتابة أكواد بلغات مختلفة باستخدام GDScript أو C#، وعند العمل باستخدام GDExtention ستتشابه الأنواع والدوال والخاصيات لواجهة برمجة تطبيقات C++ مع تلك التي تستخدمها عند البرمجة داخل محرك Godot نفسه.
الخلاصة
تعرفنا في مقال اليوم على أهمية كتابة الأكواد البرمجية أو السكريبتات في جودو فهي ملفات تحتوي شيفرة برمجية يمكن ربطها مع العقد لتوسيع وظائفها، ورأينا أن محرك ألعاب جودو يدعم أربع لغات برمجة نصية رسمية ليمنح لمبرمجي الألعاب مرونة في اختيار اللغة التي يفضلونها، كما يمكن مزج اللغات لتطبيق خوارزميات ثقيلة باستخدام لغة C أو C++ وكتابة معظم منطق اللعبة باستخدام GDScript أو C#.
ترجمة - وبتصرف - لقسم Scripting Languages من توثيق جودو الرسمي.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.