نظام مكونات الكيان
⚡ ملخص ذكي
يُعدّ نمط الكيان-المكون-النظام (ECS) نمطًا معماريًا شائع الاستخدام في تطوير الألعاب. وهو يُفضّل التركيب على الوراثة: فالكيانات هي مُعرّفات، والمكونات تحتوي على البيانات، والأنظمة تحتوي على المنطق الذي يعمل على الكيانات ذات المكونات المتطابقة.

ما هو نظام مكون الكيان؟
يُعد Entity-Component–System (ECS) نمطًا معماريًا. ويُستخدم هذا النمط على نطاق واسع في تطوير تطبيقات الألعاب. ويتبع ECS مبدأ التكوين بدلًا من مبدأ الوراثة، مما يوفر مرونة أفضل ويساعدك على تحديد الكيانات حيث تُعتبر جميع الكائنات في مشهد اللعبة كيانًا.
برمجة ECS هي طريقة لكتابة التعليمات البرمجية التي توفر أداءً عاليًا بشكل افتراضي.
يتكون هذا النظام من ثلاثة مصطلحات.
- كيان
- مكون
دعونا نتعلم هذا المفهوم بالتفصيل:
ما هو الكيان؟
الكيان هو كائن مميز يمثل ممثلًا في مساحة محاكاة. ليس لديها بيانات أو سلوك فعلي. يمنح هذا المكون الكيان بياناته. عادة ما يكون دعامة أو قاموسًا.
على سبيل المثال، إذا كنا نحاكي عالم اللعبة ماين كرافت، كل "الأشياء" المرئية والملموسة في عالم اللعبة يتم حسابها في الكيانات.
ما هو المكون؟
المكون هو سلوك فردي منسوب إلى كيان ما. يجب أن ينقل اسم العنصر بشكل مثالي السلوك الذي سيظهره الكيان. ومع ذلك، المكون نفسه ليس لديه أي سلوك. إنها وحدات قابلة لإعادة الاستخدام ومرتبطة بالكيانات. يوفر المكون المظهر والسلوك والوظيفة.
يتم تنفيذ كل المنطق باستخدام المكونات التي تساعدك على تحديد أنواع مختلفة من الكائنات عن طريق مزج المكونات وتكوينها.
ما هو النظام؟
سيقوم النظام بتكرار العديد من المكونات لأداء المستوى المنخفض
وظائف مثل تقديم الرسومات، وأداء الفيزياء
الحسابات أو تحديد المسار. إنه يوفر نطاقًا عالميًا وإدارة وخدمات لفئات المكونات.
ومع ذلك، الأنظمة ليست اختيارية، ولكن يمكننا استخدامها لفصل المنطق والبيانات. كما أنه يساعدك على التعامل مع المكونات المنطقية، والعمل كحاويات للبيانات.
أمثلة
- الجاذبية (السرعة) - تساعدك على تسريع السرعة بسبب الجاذبية
- يضيف السرعة إلى الموقف
- يضبط مدخلات الكيان الذي يتحكم فيه الروبوت وفقًا لوكيل الذكاء الاصطناعي
- تقديم (الموضع، العفريت) – يرسم النقوش المتحركة
- يساعدك التحكم في المشغل (مشغل الإدخال) على ضبط إدخال الكيان الذي يتحكم فيه اللاعب وفقًا لوحدة التحكم.
التركيب
التركيب هو عنصر يمكنك إرفاق المزيد من المكونات به لإضافة مظهر أو سلوك أو وظيفة إضافية. يمكنك أيضًا تحديث قيم المكونات لتكوين الكيان.
الاستفادة من ECS
فيما يلي مزايا استخدام ECS في البرمجة:
- يمكنك إنشاء تعليمات برمجية أقصر وأقل تعقيدًا.
- سلوك ناشئ مرن للغاية.
- إنه يوفر بنية لتطوير ثلاثي الأبعاد والواقع الافتراضي.
- تمكين البرمجة النصية حسب السلوك من قبل غير التقنيين.
- يساعدك على تقسيم فصولك المتجانسة.
- سهولة الرفض والقابلية للتوافق.
- خيار سهل لاختبار الوحدة والسخرية.
- إنه يسمح لك ببناء تطبيق الواقع الافتراضي من حيث التعقيد.
- استبدال المكونات بمكونات مستهزئة في وقت التشغيل.
- يساعدك على توسيع الميزات الجديدة.
- ECS هي طريقة سهلة الاستخدام للمعالجة المتوازية والخيوط المتعددة.
- يساعدك على فصل البيانات عن الوظائف التي تعمل عليها
- توفير مرونة أفضل عند تحديد الكائنات عن طريق المزج مع الأجزاء القابلة لإعادة الاستخدام.
- إنه يقدم تصميمًا نظيفًا باستخدام طرق الفصل والتغليف والنمطية وإعادة الاستخدام.
عيوب استخدام ECS
فيما يلي بعض عيوب استخدام ECS
- لم يتم تعريفها بشكل ملموس مثل الأنماط الأخرى مثل MVC.
- من الصعب تطبيقها بشكل صحيح، ومن السهل إساءة استخدامها. تتطلب المكونات الجيدة مزيدًا من التفكير في التصميم
- يتطلب ECS كتابة العديد من الأنظمة الصغيرة التي تعتمد على التكرار على أعداد هائلة من الكيانات، مما يؤدي إلى تطوير خطر كتابة كود غير فعال للغاية
- معظم الناس لم يسمعوا قط عن هذا النمط.
مثال على نظام مكون الكيان
دعونا نلقي نظرة على مثال الأرنب:
انظر إلى المربع المنقط حول هذه المكونات. هذا هو كيان الأرنب - ليس سوى حاوية للمكونات. يمكنك أيضًا تعريف الكيانات كمجموعة من أي مجموعة فرعية من المكونات.
يمكنك رؤية الصورة المذكورة أعلاه. إنه أحد الكيانات الأرنبية – ليس أكثر من حاوية للمكونات. يمكنك تعريف الكيانات كتجميع لأي مجموعة فرعية من المكونات، مثل Carrot:
تدفق البيانات في ECS:
سلوك الأنظمة هو نموذج ECS يتغير من حالة إلى أخرى.
دعونا نفهم باستخدام هذا المثال:
السلوكيات: "الأرنب الذي يجلس على شجرة يسقط بسبب الجاذبية."
كيفية تنفيذ السلوك أعلاه؟
يمكنك جعلها بقيمة z أكثر من 0 والتي تنخفض بمرور الوقت إلى 0.
السلوك: "الكائنات الحية تتقدم في السن."
دعونا نرى كيف يمكنك تنفيذ هذا السلوك؟
يمكنك جعل المكونات الحية لها قيمة عمرية، والتي تزداد بمرور الوقت.


