اذهب إلى المحتوى

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

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

التصميم كائني التوجه

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

من خلال استخدام محرك جودو، يمكنك بناء مشاهد متنوعة تكون بمثابة مكونات جاهزة لإعادة استخدامها داخل مشروعك. على سبيل المثال يمكنك إنشاء مشهد لأضواء وامضة BlinkingLight وآخر لمصابيح مكسورة BrokenLantern. يحتوي كل مشهد على خصائصه الخاصة، مثل طريقة تفاعل الضوء مع المشهد أو تغييره لونه، ويمكنك جمع هذه المشاهد في مشهد أكبر.

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

وفوق كل ذلك يدعم جودو الوراثة وهو أحد المبادئ الأساسية في البرمجة كائنية التوجه oop، فقد يكون مشهد جودو سلاحًا أو شخصية أو غرضًا ما أو بابًا أو مستوى أو جزء من مستوى أو أي شيء آخر  تريده. ويعمل المشهد عمل الصنف class في الشيفرة الصرفة، ما عدا أنك حر في تصميمه من خلال المحرر مستخدمًا الشيفرة فقط أو مزيجًا من الاثنين.

تختلف المشاهد في جودو عن الكائنات الجاهزة prefab في محركات اﻷلعاب ثلاثية اﻷبعاد اﻷخرى مثل محرك Unity في إمكانية الوراثة عنها أو توسيعها. فقد تُنشئ ساحرًا بتوسعة مشهد الشخصية مثلًا. وعند تحديث الشخصية في المحرر ستتحدث معها شخصية الساحر أيضًا. سيمكنك ذلك من بناء مشروعك كي يتطابق التصميم مع هيكلية الشيفرة.

01 engine design

وتجدر الملاحظة أن جودو يقدم أنواعًا مختلفة من الكائنات تدعى عقدًا Nodes، ولكل منها غاية محددة. والعقد أجزاء من شجرة وترث دائمًا من العقدة اﻷب وصولًا إلى الصنف الرئيسي Node. وعلى الرغم من وجود عقد في جودو مثل اﻷشكال المتصادمة التي تستخدمها فيزيائية العقدة اﻷب، تُعد معظم العقد مستقلة عن بعضها. وبعبارة أخرى، لا تعمل العقد كما تعمل المكونات components في محركات ألعاب أخرى.

02 engine design nodes

فالعقد Sprite2D و Node2D و CanvasItem و Node، تمتلك جميع الخاصيات والميزات للأصناف اﻵباء كالتحويلات أو القدرة على رسم أشكال محددة وتصييرها باستخدام معالج لوني shader محدد.

حزم حصرية بالكامل

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

03 engine design tools

إن الغاية من ذلك كله تقديم حزمة متكاملة من اﻷدوات ﻹنشاء اﻷلعاب تحسين تجربة المستخدمين مثل Blender لتصميم النماذج ثلاثية الأبعاد، وبإمكانك بالطبع العمل مع برامج خارجية نظرًا لدعمه للإضافات plugin، والتي تستطيع أن تنشئها بنفسك أيضًا لتلبية احتياجات خاصة في المشروع.

ويعود وجود لغة GDScript الخاصة بجودو إلى هذا السبب جزئيًا إضافة إلى دعمه لغة #C. فلغة GDScript مصممة لتلائم حاجات المطورين والمصممين ومتكاملة تمامًا مع المحرّك والمحرر. وتتيح لك GDScript كتابة شيفرة اعتمادًا على صياغة اﻹزاحة أو المسافات البادئة indentation، وتتعرف على اﻷنواع، وتزودك بميزة اﻹكمال التلقائي. وتُعد هذه اللغة من لغات برمجة الألعاب وتوفر شيفرة سهلة ومفهومة وتضم أنواعًا مخصصة مثل Vectors و Colors.

ومع GDExtension يمكنك كتابة شيفرة عالية اﻷداء باستخدام لغات مصرّفة مثل C و ++C و Rust وبايثون (باستخدام Cython) دون إعادة تصريف المحرّك.

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

04 engine design fsm plugin

محرك مفتوح المصدر

يقدم جودو قاعدة برمجية مفتوحة المصدر بالكامل وفق ترخيص MIT. ويعني ذلك أن كل التقنيات التي تأتي معه هي مفتوحة المصدر أيضًا. وقد طوّرت معظم أجزاء المحرك من الصفر من قبل مساهمين. ويمكن لأي شخص استخدام اﻹضافات المناسبة لمشروعه ولا يعني ذلك أن تشحن هذه اﻹضافات مع المحرك. من اﻷمثلة عليها نجد Google AdMob أو FMOD.

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

المحرك مُطوَّر من مجتمعه الخاص

يُطوّر محرك الألعاب جودو من قبل مجتمعه الخاص، فهو منهم ولهم ولجميع مطوري اﻷلعاب، وحاجات ونقاشات المستخدمين هو اﻷساس الذي يقود تطوير نواته. وتركّز الميزات الجديدة التي يقدمها مطورو النواة على ما يقدم الفائدة لمعظم مستخدميه، والقلة فقط من مطوري النواة يعملون رسميًا بدوام كامل. لكن المشروع يضم أكثر من 600 مساهم حتى لحظة كتابة هذه المقالة. فالمبرمجون المساهمون يعملون على تطوير الميزات التي يحتاجونها لأنفسهم لهذا سترى تحسينات من جميع النواحي عند كل إصدار رئيسي للمحرك.

محرر جودو هو في الواقع لعبة جودو

محرر جودو هو الأداة التي تستخدمها لبناء ألعابك، وهو يعمل مباشرة على نفس المحرك الذي يشغل اللعبة، وبالتالي عندما تكتب الشيفرة أو تصمم المشاهد، فستتمكن من اختبارها فورًا داخل المحرر أي بإمكانك استخدام نفس الشيفرة في مشاهد ألعابك أو بناء إضافات وتوسيع المحرر ويعطي ذلك مصداقية ومرونة لواجهة المستخدم. فعندما تستخدم التعليمة tool@ ستتمكن من تشغيل شيفرة اللعبة ضمن المحرر.

05 engine design rpg in a box

محرر RPG in a Box هو محرر صمم باستخدام جودو 2 ويستخدم واجهة جودو الرسومية لمنظومته البرمجية المبنية على أساس العقد

ضع التعليمة tool@ في بداية ملف GDScript وستعمل الشيفرة ضمن المحرر. سيساعدك ذلك على إدراج وتصدير الإضافات وإنشاء إضافة مخصصة مثل محررات مخصصة للمراحل أو إنشاء سكربتات لها نفس العقد وترتبط بنفس الواجهة البرمجية التي تستخدمها في مشروعك.

ملاحظة: كُتب محرر جودو بالكامل باستخدام لغة ++C وصُرّف إلى الصيغة الثنائية. ويعني ذلك أنه من غير الممكن إدراجه كمشروع نمطي على شكل ملف project.godot.

يوفر جودو محركين ثنائي الأبعاد وثلاثي الأبعاد

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

الخلاصة

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

ترجمة -وبتصرف- لمقال: Godot's design philosophy

اقرأ أيضًا


تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...