اي محرك العاب لديه لغة البرمجة التي يستعملها في عمل الألعاب الخاص به, غالبية محركات الالعاب تستعمل لغات برمجة منتشرة مثل c# او C++, بعض المحركات الاخرى لا تستعمل نظام تكويد من الأصل.
وبعض المحركات يكون لديها نظامها الخاص مثل محرك godot, حيث قام المطورون بصنع لغة برمجة لتوافق إمكانيات المحرك, وفي نفس الوقت تكون سهلة الفهم للمستخدم العادي, فمحرك godot بالأساس مبني على كونه محرك بسيط, لذلك من الطبيعي ان يحتاج الى لغة برمجة بسيطة.
المحرك يدعم عدة لغات برمجة مختلفة لبرمجة الألعاب, ولكن سنركز في هذه المقالة, على لغة GDscript
عناصر المقال
ما هي لغة جي دي سكربت
هي لغة كائنية التوجه oop, وعالية المستوى ــ أي يمكن قرائتها بسهولة ــ شبيهة جدا بلغة بايثون, فهي تستخدم نفس أسلوب الكتابة الذي يعتمد علي المسافات الفارغة indentation, وحتى نفس الأوامر والشروط, ولكن على عكسها, فهي تُستعمل فقط داخل محرك غودو, ولا يمكن استعمالها خارجه لاغراض اخرى, وتوافق هذه اللغة مع المحرك, يسمح بمرونة كبيرة للتحكم في لعبتك بسهولة.
اللغة حصلت على عدة تحديثات, حيث تغير بعض اسماء الأوامر والشروط الاساسية فيها. هذا المقال سيتحدث عن اخر اصدار وهو الخاص بنسخة godot 4.
تعلم لغة جي دي سكربت ليس له فائدة كبيرة بحد ذاته, بل ان من الصعب جدا ايجاد دروس فعلية تعلمك اياها, نظرا لان تستعمل فقط في المحرك, مما تدعو الحاجة لتعلم المحرك نفسه قبل تعلم اللغة.
لذلك انصح دائما بتعلم لغة بايثون بديلا عنها, ومن ثم معرفة أهم الفروقات بينها وبين بايثون, بهذه الطريقة تستطيع القول انك تعلمت لغتي برمجة بدورة واحدة.
مع ذلك, لدينا بالفعل دورة خاصة باللغة من احمد الطبراني, يمكنك الوصول اليها عبر هذا الرابط
الفروقات بينها وبين لغة بايثون
بعيدا عن كونها تعمل فقط داخل المحرك, فيوجد عدة اختلافات بينها وبين لغة بايثون, وسأذكر لك أهم 3 اختلافات :
تعريف المتغيرات
كما تعلم , ففي لغة بايثون لا نحتاج إلى تعريف متغير جديد, او بالاصح, لا تحتاج لكتابة نوع المتغير الجديد, يكفيك فقط كتابة اسم المتغير, من ثم وضع قيمته مباشرة.
ولكن في لغة GDScript فانك تحتاج الي تعريف المتغير بـ var قبله, ايا كان نوع المتغير , سواء كان المتغير من نوع النص او عدد او مصفوفة, وكلمة var هي اختصار لكلمة Variable, اي “متغير”.
من ثم وضع القيمة بنفس الأسلوب العادي.مع ذلك يوجد طرق اخرى لوضع القيمة ومختلفة عن بايثون, ولكن لن نتطرق لها.
وهناك طريقة اخرى لتعريف المتغير وهي استخدام const قبل اسم المتغير ولكن هنا لم يعد اسمه متغير انما اصبح اسمه ثابت, أي أنه لن يتغير وسيظل كما هو.
تعريف الدوال
لتعريف الدالة ــ او الوظيفة ــ في لغة بايثون فيجب عليك استخدام الأمر def, ثم بعدها اسم الدالة التي تريدها.
في لغة GDscript, نفس الأسلوب, ولكن بدلا من def, فيجدر بك استخدام func, والتي هي اختصارا لـ function
كتابة الشروط وأدوات التحكم
لا يمكنك اضافة اوامر او شروط داخل السكربت ما لم تكن تلك الأوامر داخل دالة, الشيئ الوحيد الذي تستطيع كتابته خارج الدوال, هي التعاريف, مثل تعريف المتغيرات أو تعريف الدوال, غير ذلك ستجد تلقائيا أنه وضع علامة على ذلك السطر ليقول لك أنه أمر خاطئ
اضافات ليست في 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, واخبرنا اذا ما كنت استعملتها او جربتها من قبل
رائع 👍