سنلقي الضوء في مقال اليوم على لغات البرمجة المتوفرة في محرك الألعاب جودو، ومتى نختار كل لغة منها ونتعلم محاسن ومساوئ كل خيار، وسنكتب في الجزء التالي أول سكريبت برمجي ضمن محرك جودو باستخدام لغة البرمجة الافتراضية GDScript.
ترتبط الأكواد البرمجية بالعقد، فعندما تربط سكريبت برمجي بعقدة معينة، فإنك توسع سلوك تلك العقدة بإضافة وظائف جديدة لها، هذا يعني أن السكريبتات ترث كل وظائف وخصائص العقد المرتبطة بها.
على سبيل المثال لنفترض أن تعمل على برمجة لعبة فضائية تتحرك فيها سفينة فضائية كما تبين الصورة التالية، وتريد أن تهتز الكاميرا عندما تتضرر السفينة.عليك أن تضيف عقدة كاميرا 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 وتملك نفس كفاءة اللغات المكتوبة بشكل ساكن (وهي اللغات التي يحدد فيها نوع البيانات بشكل ثابت وقت الترجمة).
- لا يوجد فيها كنس للمهملات garbage collection، لأن هذه الميزة تعيق إنشاء الألعاب، إذ يحسب المحرك المراجع ويدير لك الذاكرة في معظم الحالات بشكل افتراضي، ولكن يمكنك التحكم بالذاكرة إن احتجت لذلك.
- توفر ميزة تحديد النوع التدريجي Gradual Typing، فالمتغيرات لها أنواع ديناميكية افتراضيًا، ولكن يمكنك استخدام تلميحات النوع type hinting للتحقق من الأنواع.
تشبه لغة GDScipt لغة بايثون Python في الهيكلية عن طريق استخدام كتل الشيفرة والمسافات البادئة، ولكنها لا تعمل بنفس المضمون، فقد طورت بالاعتماد على لغات برمجية متعددة مثل Squirrel وLua وبايثون.
ملاحظة: قد تتساءل لماذا لا نستخدم لغة بايثون أو لغة Lua مباشرة في محرك جودو؟ في الواقع كانت لغة جودو تستخدم بايثون و Lua وقد تطلب تكامل اللغتين الكثير من العمل وكان له العديد من المحدوديات، مثلًا كان دعم الخيوط threads تحديًا كبيرًا في بايثون. كما أن تطوير لغة جديدة لا يتطلب جهدًا أكبر ويمكننا تصميمه ليلبي احتياجات مطوري الألعاب، ويتم العمل الآن على تحسينات وميزات كبيرة على اللغة ستكون صعبة التنفيذ مع لغات برمجية من طرف ثالث.
لغة .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 من توثيق جودو الرسمي.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.