واقعية منظمة العفو الدولية القتالية للعبة 2D

صورة

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

البيئة والقيود


تتكون بيئة الألعاب من مضلعات. معظم المضلعات تمنع الحركة والرؤية والتصوير ، ولكن هناك أيضًا مضلعات "منخفضة" تمنع الحركة فقط. البيئة مغطاة بإحكام بالعقبات والملاجئ.

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


الشكل 1: البيئات


الشكل 2: منظر من وجه اللاعب للعقبات التي تمنع العرض (المناطق الرمادية غير مرئية له)

شبكة الملاحة والرؤية ، والبحث التكتيكي للطريقة


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


الشكل 3: شبكة الملاحة

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


الشكل 4: بيانات الرؤية المخزنة في العقدة (خطوط زرقاء). يمثل كل سطر قيمة أحادية البايت تحدد الرؤية في اتجاه معين.

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

يمكن استخدام نفس بيانات الرؤية ، بالإضافة إلى إيجاد المسار بين نقطتين معينتين ، في الإجراءات "التكتيكية" الأخرى. على سبيل المثال ، يبحث البوت عن ملجأ من خلال إجراء بحث موسع أولاً ويتوقف بمجرد العثور على موقع محمي. تُستخدم اختبارات خط البصر للتحقق من أن الموقع يوفر بالفعل المأوى. وبالمثل ، يمكننا إنشاء مسارات هجوم من الأجنحة من خلال البحث عن الهدف * A ؛ في الوقت نفسه ، تفرض غرامات عالية على العقد المفتوحة داخل مخروط الرماية. يتوقف البحث بمجرد وصولنا إلى عقدة مفتوحة خارج مخروط الحرق هذا. (إحدى مشاكل هذا النهج هي أن الروبوتات التي تخرج عن النطاق تحاول باستمرار الاقتراب من الهدف ، وبالتالي تبدو عدوانية للغاية ؛ ربما يمكن إصلاح ذلك عن طريق تعيين A * مجريات الأمور بحيثبحيث لا يتحرك البوت مباشرة إلى الهدف ، ولكن إلى أي عقد تقع على مسافة محددة من الهدف).

مشاعر وذاكرة البوتات


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


هناك طريقتان يمكن للاعب من خلالها الكشف عن موقع العدو: يمكنه رؤية العدو أو سماع كيف يتحرك أو يطلق النار أو يقوم ببعض الأعمال الأخرى.

يحتفظ كل بوت بقائمة "حقائق" معروفة عن مواقع واتجاه نظرة الأعداء. بدون تحديثات ، يتم حذف هذه الحقائق بعد عشر ثوان. يتم تحديث حقيقة تتعلق بعدو معين عندما يتمكن الروبوت من سماع ذلك العدو أو رؤيته. عندما يسمع البوت عدوًا ، لمحاكاة عدم اليقين ، يتحول موضع الحقيقة المقابلة من الموقع الحقيقي للعدو في اتجاه ومسافة عشوائيين ، اعتمادًا على مدى قرب البوت من الصوت (انظر الفيديو ، 1:28).


الشكل 5: الحقائق (الدوائر الوردية) في ذاكرة الروبوت

شجرة السلوك


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

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

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


الشكل 6: شجرة القرار والسلوك المستخدمة حاليًا

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

توزيع الحمل


لا يلزم تحديث كل روبوت في كل إطار من الفيزياء ، أي 40 مرة في الثانية. لتقليل تكاليف وحدة المعالجة المركزية ، "يفكر" كل روبوت 20 مرة في الثانية فقط (يمكن تقليل هذا العدد إذا لزم الأمر). لذلك ، يتم تحديث نصف البوتات فقط في كل دورة فيزياء.

استخدم القنابل اليدوية


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

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

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


الشكل 7: يتم التحقق من الاتجاهات بواسطة البوت لمدة ثانية واحدة (خطوط وردية باهتة) ومسارات تم اختبارها (دوائر زرقاء) على طول الاتجاه المحدد في المقياس الحالي (خط وردي ساطع).

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

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

الحركة إلى المزيد من السلوك البشري


تصبح هذه المشكلة واضحة بسرعة: البوتات سريعة جدًا في دفع الزناد ، لأنه من الصعب جدًا إلحاق الهزيمة بهم في معركة فردية. يبلغ متوسط ​​وقت رد فعل الإنسان للمنبهات البصرية 250 مللي ثانية ، ولكن عند 20 نبضة في الثانية ، فإن أقصى وقت رد فعل بوت هو 50 مللي ثانية فقط!

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

مزيد من التحسينات


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

All Articles