Advertisement
  1. Game Development
  2. Artificial Intelligence

آلات محدودة-الدولة: النظرية والتطبيق

Scroll to top
Read Time: 10 min

Arabic (العربية/عربي) translation by Luthfiyyah (you can also view the original English article)

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

كل الرموز التي قدمها لورك، ومتاح على http://game-icons.net.

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


ما هو جهاز الدولة محدودة؟

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

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

ولايات ميكرونيزيا الموحدة تمثل الدماغ من عدو.

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


تخطيط الدول وانتقالها

ويبدأ تنفيذ ولايات ميكرونيزيا الموحدة مع الدول، والتحولات التي سيكون لها. تخيل ولايات ميكرونيزيا الموحدة التالية، يمثل دماغ نملة تحمل يترك المنزل:

ولايات ميكرونيزيا الموحدة تمثل الدماغ من نملة.

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

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

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

ولايات ميكرونيزيا الموحدة تمثل الدماغ من نملة. لاحظ عدم وجود مرحلة انتقالية بين تشغيل بعيداً والعودة إلى الوطن.

تنفيذ من ولايات ميكرونيزيا الموحدة

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

نظراً لكل دولة دالة، بينما تنشط دولة محددة تمثل الدالة التي تكون الدولة التذرع بكل لعبة التحديث. الخاصية activeState مؤشر إلى دالة، حيث أنها تشير إلى الدالة الحالة النشطة.

يجب أن يكون الأسلوب update () من الفئة ولايات ميكرونيزيا الموحدة استدعاء كل إطار اللعبة، ذلك لأنه يمكن استدعاء الدالة يشير بواسطة الخاصية activeState. سيتم تحديث هذه الدعوة الإجراءات التي تتخذها الدولة النشط حاليا.

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


باستخدام FSM

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

ولايات ميكرونيزيا الموحدة دماغ النملة مع التركيز على التعليمات البرمجية.

يتم تمثيل النملة من قبل طبقة النملة ، التي لها خاصية تسمى الدماغ وطريقة لكل ولاية. خاصية الدماغ هي مثال لفئة FSM:

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

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

فيما يلي تنفيذ كل حالة ، بدءًا من findLeaf () ، وهي الدولة المسؤولة عن توجيه النملة إلى موضع الورقة:

حالة goHome () ، تستخدم لتوجيه المنزل النمل:

وأخيرا ، فإن حالة runAway () ، تستخدم لجعل النملة الفارة من مؤشر الفأرة:

والنتيجة هي نملة يتحكم فيها "دماغ" FSM:

النمل تسيطر ولايات ميكرونيزيا الموحدة. حرك مؤشر الماوس تهديد النمل.

تحسين التدفق: ولايات ميكرونيزيا الموحدة المستندة إلى المكدس

تخيل أن النمل تحتاج أيضا إلى تشغيل بعيداً عن مؤشر الماوس عند ذلك هو الذهاب إلى المنزل. يمكن تحديث ولايات ميكرونيزيا الموحدة إلى ما يلي:

تحديث النمل FSM مع التحولات الجديدة.

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

الحل لهذه المشكلة هو FSM المستندة إلى مكدس. بخلاف FSM الموجود لدينا ، تستخدم FSM المستندة إلى مكدس a مكدس للتحكم في الحالات. يحتوي الجزء العلوي من المكدس على الحالة النشطة؛ يتم التعامل مع التحولات عن طريق دفع أو تفرقع حالات من المكدس:

مدمج FSM

يمكن أن تحدد الحالة النشطة حاليًا ما يجب فعله أثناء عملية النقل:

التحولات في FSM المستندة إلى مكدس: pop نفسه + دفع جديد؛ البوب نفسه دفع جديد.

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


تنفيذ FSM المستندة إلى المكدس

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

تم استبدال أسلوب setState () بطريقتين جديدتين: pushState () و popState ()؛ يضيف pushState () حالة جديدة إلى الجزء العلوي من المكدس بينما يزيل popState () حالة في أعلى المكدس. يقوم كلا الطريقتين آليًا بنقل الجهاز إلى حالة جديدة ، نظرًا لأنهما يغيران الجزء العلوي من المكدس.


باستخدام FSM المستندة إلى مكدس

عند استخدام FSM المستندة إلى مكدس ، من المهم ملاحظة أن كل حالة مسؤولة عن popping نفسه من المكدس. عادةً ما تقوم الحالة بإزالة نفسها من الرصة عندما لا تكون هناك حاجة إليها ، كما لو أن الهجوم () نشط ولكن الهدف قد مات.

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

والنتيجة هي نملة قادرة على الهروب من مؤشر الفأرة ، والانتقال إلى الحالة النشطة السابقة قبل التهديد:

النمل التي تسيطر عليها FSM القائم على مكدس. حرك مؤشر الماوس لتهديد النملة.

الاستنتاج

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

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

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Game Development tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.