وحدة هندسة حالة الوحدة لتنظيم سلوكيات الوحدة

كانت المرحلة الأولى في تطوير لعبتي هي تطوير محرك RTS. أخطط لكتابة سلسلة من المنشورات حول المشكلات التي نشأت وحلولها في هذه المدونة. سأخبرك في هذا المنشور كيف نظمت سلوك الوحدات.

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

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

وهذا هو ، تبدو العملية شيء مثل هذا:

صورة

بحيث يمكن لهذه الصورة أن تطالب حقًا باسم الأوتوماتون ، فهي تفتقر إلى شروط الانتقال بين الولايات والحالة الأولية والنهائية.

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

صورة

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

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

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

صورة

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

تعمل هذه السلوكيات عن طريق استدعاء أسلوب التكرار من حدث Update للكائنات من النوع Unit (هذا الحدث يطلق كل إطار). للتواصل مع بقية العالم ، يتم استدعاء أساليب IStateMachineListener.

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


هذا كل شيء. إذا أعجبك هذا التنسيق أو لا يعجبك ، فاكتب عنه في التعليقات!

Source: https://habr.com/ru/post/ar454402/


All Articles