تنظيم مشروع جودو

من موسوعة حسوب


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

التنظيم

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

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

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

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

/project.godot
/docs/.gdignore  # راجع قسم "تجاهل مجلدات معينة" أدناه للتوضيح
/docs/learning.html
/models/town/house/house.dae
/models/town/house/window.png
/models/town/house/door.png
/characters/player/cubio.dae
/characters/player/cubio.png
/characters/enemies/goblin/goblin.dae
/characters/enemies/goblin/goblin.png
/characters/npcs/suzanne/suzanne.dae
/characters/npcs/suzanne/suzanne.png
/levels/riverdale/riverdale.scn

دليل التنسيق

ننصح باتباع القواعد التالية للحفاظ على نسق ثابت ضمن المشاريع:

  • استخدام حالة الثعبان لكتابة أسماء المجلدات والملفات (باستثناء سكربتات لغة سي شارب)، وهذا قد يقيك من المشاكل المتعلقة بحساسية حالات الأحرف بعد تصدير مشروع على ويندوز، وتعدّ سكربتات سي شارب استثناءً لهذه القاعدة لأن الاصطلاح يقول أن الاسم يجب أن يكون مطابقًا لاسم الصنف الذي يكون باستخدام حالة أحرف باسكال.
  • استخدم حالة أحرف باسكال لأسماء العقد، وذلك لمطابقة حالة الأحرف لأسماء العقد المُضمّنة في المحرّك.
  • حافظ على الموارد الخارجية عمومًا في المستوى الأعلى من المجلد addons/، حتة وإن لم تكن إضافات للمحرّر. هذا يجعل من عملية تتبع الملفات الخارجية عملية أسهل، إلا أن هناك استثناءات لهذه القاعدة مثل استخدام موارد خارجية لشخصية في اللعبة، فمن المنطقي في هذه الحالة تضمين هذه الموارد داخل المجلد الخاص بمَشاهد الشخصية والسكربتات.

الاستيراد

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

وبسبب ذلك، يمكن استيراد الموارد الآن بكل وضوح ضمن مجلد المشروع.

تجاهل مجلدات معينة

يمكنك إنشاء ملف فارغ باسم ‎.gdignore لمنع جودو من استيراد ملفات محتواة في مجلدات معينة في المجلد الذي تريد تجاهله (النقطة في بداية الاسم ضرورية)، وهذا يؤدي إلى تسريع عملية الاستيراد الأولية ضمن المشروع.

ملاحظة: عليك استخدام محرر نصي في ويندوز لإنشاء ملف يبدأ اسمه بنقطة مثل Notepad++‎ أو استخدام الأمر التالي في سطر الأوامر type nul > .gdignore

لا يمكن تحميل الموارد في المجلد حالما يتم تجاهله باستخدام التابع load()‎ أو التابع preload()‎، كما أن تجاهل مجلد سيخفيه بشكل تلقائي من واجهة نظام الملفات، مما يساعدك بالتخلص من الملفات التي لا تهمّك.

لاحظ أنه يتم تجاهل محتويات الملف ‎.gdignore، وهذا هو السبب بترك محتوى الملف فارغًا، ولا يدعم الأنماط كما يدعمها ملف ‎.gitignore.

حساسية الأحرف

يستخدم ويندوز وإصدارات مؤخرة من ماك أو إس نظام ملفات غير حساس لحالة الأحرف بشكل افتراضي، بينما يستخدم لينكس نظام ملفات حساس لحالة الأحرف بشكل افتراضي، قد يسبب هذا الاختلاف مشكلة بعد تصدير المشروع، وذلك بالنظر إلى أن نظام ملفات جودو الافتراضي PCK هو نظام حساس لحالة الأحرف. لتفادي هذه المشاكل، يُنصح بالالتزام بتسمية جميع الملفات في مشروعك باستخدام حالة الثعبان snake_case وبأحرف صغيرة.

ملاحظة: يمكنك تجاهل هذه القاعدة عندما تخبرك أدلة التنسيق بعكس ذلك (مثل دليل تنسيق سي شارب). لكن احذر، كن متسقًا في تنسيقك لتفادي الأخطاء.

يمكنك إنشاء مجلد مشروع حساس لحالة الأحرف لتفادي الأخطاء المرتبطة بحساسية الأحرف في ويندوز 10، وبعد تفعيل ميزة WSL على ويندوز، نفّذ الأمر التالي في سطر أوامر PowerShell الخاص بويندوز:

# لتفعيل حساسية الأحرف
fsutil file setcasesensitiveinfo <path to project folder> enable

# لتعطيل حساسية الأحرف
fsutil file setcasesensitiveinfo <path to project folder> disable

يمكنك كتابة سطر الأوامر التالي في PowerShell بعد تشغيله كمسؤول ومن ثم إعادة تشغيل جهازك في حال لم تفعّل ميزة WSL:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

مصادر