نظام المجموعات الذكي في Godot

Godot

في يمين واجهة المشروع، تجد لوحة الخصائص inspector، وفي أعلاها يمكنك الضغط على Node والتي تنقلك إلى لوحة الإشارات Signals، وهو في حد ذاته أمر غريب، فلما تسمى Node أن كانت فقط للوحة الإشارات!

ولكن ذلك لأن لوحة الإشارات تلك هي مجرد جزء من لوحة Node، والتي تتضمن أيضا لوحة المجموعات Groups.

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

هذا المقال يتحدث عن أصدار Godot 4 ولكن الفارق بينه والقديم ليس كبيرا

نظام المجموعات Groups

ذكرت في مقدمة المقالة كيفية فتح لوحة المجموعات، ولكن السؤال المطروح، ما هو هذا النظام من الأصل؟

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

بعض البرامج الاخرى تشير إلى هذا النظام باسم “الوسوم” او tags، وذلك ايضا صحيح، ولكن في محرك غودو يسمى بالمجموعات لانك “تجمع” الكائنات وتعطيها اسم ما.

للتعامل مع هذا النظام، كل ما عليك فعله هو الضغط على أي كائن/عقدة تريدها، ثم انتقل إلى لوحة المجموعات بالطريقة المذكورة في مقدمة المقال، ثم اكتب اي اسم تريد، واضغط زر الاضافة.

هكذا فان ذلك الكائن/عقدة موجود في تلك المجموعة، تستطيع إضافة كائنات اخرى لنفس المجموعة بنفس الاسلوب, (اي اضغط على الكائن واكتب نفس اسم المجموعة تماما).

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

وفي لوحة المجموعات، يوجد زر Manage Groups، بالضغط عليه تظهر لك واجهة جديدة للتحكم في المجموعات، فمنها تعرف أسماء المجموعات المتواجدة في المشهد والكائنات التي بتلك المجموعة.

والواجهة تُمكنك من اضافة او ازالة اي عقدة من مجموعة ما.

هكذا تستطيع تنظيم كائنات اللعبة خاصتك، فربما تضع كائنات الاعداء كلها داخل مجموعة “ُEnemy” او مثلا لديك كائن الشجرة وكائن الصخرة وكائن النبات، وكلها كائنات يمكن للاعب التفاعل معها وتكسيرها، بالتالي تضعها في مجموعة باسم “breakable”، أي قابلة للكسر.

ولكن تنظيم المشروع ليس فقط هدف هذا النظام، بل هكذا وبعد وضع الكائنات في مجموعاتها الخاصة، تقدر أخيرا على الاستفادة من ذلك بطرق ذكية كالتالي:

فوائد المجموعات وبعض التطبيقات

يوجد 3 دوال اساسية مدمجة في المحرك للاستفادة من المجموعات ، وهي كالتالي:
حيث GroupName هو اسم المجموعة المطلوبة*

معرفة الكائن الذي تلامس مع اللاعبNode.is_in_group(“GroupName”)
استدعاء دالة في كل الكائنات في مجموعة ماget_tree().call_group(“GroupName”, “YourFunc”)
معرفة جميع الكائنات من مجموعة ما في مصفوفة get_tree().get_nodes_in_group(“GroupName”)

وكما ترى، فإن لكل واحدة من تلك الأوامر فائدة كبيرة وتطبيقات متعددة لها، فعلى سبيل المثال، يُستعمل الأمر is_in_group، لمعرفة اذا كان كائن ما متواجد في مجموعة ما.

أي مثلا لو أن اللاعب تلامس مع عدو، فبدلا من التأكد من اسم العدو، تتاكد اذا تواجد في مجموعة ما، وهذا افضل لو كان لديك العديد من الكائنات المختلفة ذات الأسماء المختلفة.

وبالنسبة للأمر call_group، فهو يهدف إلى استدعاء دالة في كل الكائنات المتواجدة في مجموعة ما، بالتالي مثلا لو أن اللاعب وصل إلى مكان ما، فتجعل جميع الأعداء يبدؤون بملاحقته.

او مثلا لو أن اللاعب استطاع النجاح في مهمة صعبة، فتجعل جميع الشخصيات الجانبية NPC تهنئه عندما يكلمهم، وذلك بتشغيل دالة “التهنئة” خاصتهم -طبعا بفرض أن الشخصيات الجانبية بها دالة “التهنئة”.

بالنسبة للامر الاخير وهو get_nodes_in_group، فذلك الأمر يجمع لك كل الكائنات من المجموعة المذكورة في مصفوفة، أي تستطيع وضع جميع تلك الكائنات في متغير ما، ثم عمل ما تريده بتلك الكائنات.

بالتالي تستطيع مثلا عمل تكرار على تلك الكائنات وتعديل خواصهم وصفاتهم أو الحصول عليها، او التأكد اذا كان كائن ما منهم لديه شيئ يهم اللاعب فيحدث حدثا ما.

وذلك الامر الاخير ايضا يمكن استعماله في شأن تخزين البيانات، حيث تمر على جميع الكائنات من مجموعة ما، وتحصل على بيانات تلك الكائنات لحفظها.

انظر أيضا : كيفية حفظ وتخزين البيانات في محرك Godot

تلخيص

نظام المجموعات في محرك غودو هو أداة قوية وفعالة لتنظيم العناصر في المشهد. يسمح لك بإنشاء مجموعات من العناصر، ثم معاملتها كمجموعة واحدة.

في هذا المقال، وضحت الفوائد الرئيسية لنظام المجموعات وهي:

  • سهولة التنظيم: فيسهل تنظيم العناصر ذات الصلة معًا في مجموعات، مما يجعل من السهل العثور عليها وتحديدها.
  • التحكم الفعال: يمكنك تطبيق خصائص ووظائف على المجموعة بأكملها، بدلاً من تطبيقها على كل عنصر على حدة.
  • امثلة تطبيقية وعملية على كيفية استخدم التعليمات المختلفة الخاصة بنظام المجموعات

ورغم وجود الكثير من التعليمات الخاصة بهذا النظام، الا اني سلطت الضوء على هذه الـ3 فقط:

  • get_nodes_in_group: ترجع هذه التعليمة مصفوفة بالعناصر الموجودة داخل مجموعة معينة.
  • is_in_group: تتحقق هذه التعليمة مما إذا كان عنصر معين ينتمي إلى مجموعة معينة.
  • call_groups: استدعاء وظيفة على جميع العناصر الموجودة داخل مجموعة معينة.

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

مصدر 1, مصدر 2

0 0 votes
Article Rating
Subscribe
نبّهني عن
guest

0 تعليقات
Inline Feedbacks
View all comments