لغة البرمجة الخاصة بمحرك Godot، لغة GDScript

GodotGDscript

اي محرك العاب لديه لغة البرمجة التي يستعملها في عمل الألعاب الخاص به, غالبية محركات الالعاب تستعمل لغات برمجة منتشرة مثل c# او C++, بعض المحركات الاخرى لا تستعمل نظام تكويد من الأصل.

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

المحرك يدعم عدة لغات برمجة مختلفة لبرمجة الألعاب, ولكن سنركز في هذه المقالة, على لغة GDscript

ما هي لغة جي دي سكربت

هي لغة كائنية التوجه oop, وعالية المستوى ــ أي يمكن قرائتها بسهولة ــ شبيهة جدا بلغة بايثون, فهي تستخدم نفس أسلوب الكتابة الذي يعتمد علي المسافات الفارغة indentation, وحتى نفس الأوامر والشروط, ولكن على عكسها, فهي تُستعمل فقط داخل محرك غودو, ولا يمكن استعمالها خارجه لاغراض اخرى, وتوافق هذه اللغة مع المحرك, يسمح بمرونة كبيرة للتحكم في لعبتك بسهولة.

اللغة حصلت على عدة تحديثات, حيث تغير بعض اسماء الأوامر والشروط الاساسية فيها. هذا المقال سيتحدث عن اخر اصدار وهو الخاص بنسخة godot 4.

تعلم لغة جي دي سكربت ليس له فائدة كبيرة بحد ذاته, بل ان من الصعب جدا ايجاد دروس فعلية تعلمك اياها, نظرا لان تستعمل فقط في المحرك, مما تدعو الحاجة لتعلم المحرك نفسه قبل تعلم اللغة.

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

مع ذلك, لدينا بالفعل دورة خاصة باللغة من احمد الطبراني, يمكنك الوصول اليها عبر هذا الرابط 

الفروقات بينها وبين لغة بايثون

بعيدا عن كونها تعمل فقط داخل المحرك, فيوجد عدة اختلافات بينها وبين لغة بايثون, وسأذكر لك أهم 3 اختلافات : 

تعريف المتغيرات‎‎

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

ولكن في لغة GDScript فانك تحتاج الي تعريف المتغير بـ var قبله, ايا كان نوع المتغير , سواء كان المتغير من نوع النص او عدد او مصفوفة, وكلمة var هي اختصار لكلمة Variable, اي “متغير”.

 من ثم وضع القيمة بنفس الأسلوب العادي.مع ذلك يوجد طرق اخرى لوضع القيمة ومختلفة عن بايثون, ولكن لن نتطرق لها.

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

var

تعريف الدوال

لتعريف الدالة ــ او الوظيفة ــ في لغة بايثون فيجب عليك استخدام الأمر def, ثم بعدها اسم الدالة التي تريدها.
في لغة GDscript, نفس الأسلوب, ولكن بدلا من def, فيجدر بك استخدام func, والتي هي اختصارا لـ function

fuc

كتابة الشروط وأدوات التحكم

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

if true

اضافات ليست في Python

الكثير من الأوامر والشروط المستخدمة في لغة بايثون, متواجدة ايضا في GDscript, مثل (if, elif, else, for, while), او حتى اسلوب اضافة التعليقات عن طريق رمز #.

ولكنها ايضا اضافة عدة أوامر جديدة لتتناسب مع حاجة المحرك لها, وهنا نذكر بعضا منها.
ملحوظة بسيطة : لا يمكن استخدام هذه الأسماء كاسماء متغيرات, فهي محجوزة للغة.

أوامر

الاسمالفائدة
varتعريف متغير جديد
funcتعريف دالة جديدة
signalتعريف إشارة جديدة
matchنظام افضل لاستبدال if, elif, elif, elif, etc, مشابهة لـ switch في لغات اخرى, انظر الرابط
breakpointمساعد للمحرر, لتمرير خطأ ما
awaitتقوم بايقاف الدالة حتى حدوث حدث او فعل معين, ثم اكمال الدالة (نستعمل نظام الاشارات)
yieldالنسخة القديمة من await, تستعمل نفس اسلوبها لإيقاف الدالة
assertالتحقق من عملية منطقية, إذا ما كانت خاطئة, سيتوقف المحرك ويرسل خطأ, انظر الرابط
voidتستخدم مع الدوال, للتعبير علي ان الدالة لا تقوم بارجاع اي قيمة

ثوابت

هي أسماء محجوزة تعبر عن بعض الثوابت الرياضية

PIثابت باي أو ط او π
TAUثابت تاو
INFاللا نهائية
NANتعنى (ليس رقم), تستخدم في المقارنات

مفصلات

نوع جديد من الأسماء المحجوزة, دائما يسبقه @, ويستخدم لعمل مهمات محددة بشكل مفصل (أي شارح)

@onreadyتعريف متغير جديد عندما تبدأ اللعبة
@exportتقوم بوضع المتغير خاصتك في واجهة المحرك, اي تستطيع التعديل عليه من الواجهة
@toolتقوم بتحويل السكربت الى سكربت يعمل داخل المحرك, وليس في اللعبة فقط
@warning_ignore تحديد خطأ ما وتجاهله

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

ختاما

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

بالتالي يصعب في المراحل الأولى من استخدام اللغة معرفة ما هي تلك الأشياء الخاصة باللغة نفسها, وتلك الأشياء التي يوفرها المحرك كدوال وأدوات جاهزة.

وما أن تتعلمها, حتى تبدأ رحلتك في تعلم المحرك نفسه, ومعرفة كيف يتم استعمالها لبناء لعبتك الخاصة.

شاركنا رأيك عن لغة GDscript, واخبرنا اذا ما كنت استعملتها او جربتها من قبل

4.1 8 votes
Article Rating
Subscribe
نبّهني عن
guest

1 تعليق
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Hajar
Hajar
3 شهور

رائع 👍