تفاصيل إنشاء روبوت لـ Dota 2

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

الصورة
التغيير في تصنيف TrueSkill (مشابه لتقييم Elo للشطرنج) في برنامجنا مع مرور الوقت ، محسوبًا عن طريق محاكاة الألعاب بين الروبوتات.

تم تطوير المشروع على النحو التالي. إن تصنيف 15٪ من اللاعبين أقل من 1.5K على مقياس MMR ؛ 58 ٪ من اللاعبين لديهم أقل من 3K ؛ 99.99٪ من اللاعبين لديهم أقل من 7.5 ألف.

• 1 مايو: ينتج أول تدريب تقويمي في بيئة Dota بسيطة حيث يتعلم Drow Ranger محاربة Earthshaker المشفر بشدة.
• 8 مايو: قال مُختبِر ب MMR 1.5K أن نتائجه تتحسن أسرع من البوت.
• بداية من يونيو: فاز اختبار مع 1.5 MMR MMR
30 يونيو: فزت بمعظم المباريات بمختبر MMR 3000.
8 يوليو: لأول مرة بفارق صغير ، تمكنت من التغلب على اختبار شبه احترافي بمعدل MMR 7.5K.
7 أغسطس: فاز Blitz (6.2K ، محترف سابق) 3-0 ، و Pajkatt (8.5K ، محترف) 2-1 ، و CC&C (8.9K ، محترف) 3-0. اتفقوا جميعًا على أن SumaiL سوف يكتشف كيفية ضربه.
• 9 أغسطس: هزم Arteezy (10K ، محترف ، أحد أفضل اللاعبين) 10-0. وقال إن شركة SumaiL ستكون قادرة على التعامل مع هذا الروبوت.
• 10 أغسطس: فاز فريق SumaiL بـ (8.3K ، محترف ، أفضل لاعب على لاعب واحد) 6-0. قال اللاعب أن البوت لا يمكن هزيمته. لعب مع نسخة الروبوت في 9 أغسطس ، فاز 2-1.
• 11 أغسطس: هزم دندي (7.3 ك ، محترف ، بطل العالم السابق) 2-0. فوز أكثر بنسبة 60٪ من إصدار 10 أغسطس.


لعبة ضد سمائل

التحدي


في النسخة الكاملة من اللعبة ، يلعب اللاعبون 5 في 5 ، ولكن في بعض البطولات هناك أيضًا 1 في 1. لعب البوت الخاص بنا وفقًا لقواعد البطولة القياسية - لم نقم بإضافة تبسيط خاص للذكاء الاصطناعي.

عمل البوت مع الواجهات التالية:

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

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


بوت يلعب ضد Arteezy

البطولة الدولية


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

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

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

لعب Arteezy مباراة مع جهاز اختبار 7.5K. فاز Arteezy بالمباراة ، لكن اختبارنا تمكن من مفاجأته بمساعدة استراتيجية تجسس عليها بواسطة الروبوت. لاحظ Arteezy لاحقًا أن Paparazi قد استخدم هذه الاستراتيجية ضده ذات مرة ، ونادراً ما لجأوا إليها.


يفوز Paykatt في رهان يوم الاثنين. يجذب البوت ، ثم يستخدم التجديد.

نقاط الضعف بوت


على الرغم من أن SumaiL وصف البوت بأنه "لا يقهر" ، إلا أنه لا يزال من الممكن الخلط بينه وبين المواقف التي تختلف كثيرًا عما رآه. أطلقناها في أحد الأحداث التي أقيمت في البطولة ، حيث لعب اللاعبون أكثر من 1000 مباراة من أجل هزيمة البوت بكل الطرق الممكنة.

تنقسم الثغرات الناجحة إلى ثلاث فئات:

• شد الزحف. يمكنك باستمرار عمل زحف من مطاردة الخط مباشرة بعد ظهورها. ونتيجة لذلك ، ستجري عدة عشرات من الزحف بعدك عبر الخريطة ، وستدمر زحف العدو برج الروبوتات.
• الجرم السماوي + دانتيل الريح: يمنحك ميزة في سرعة الحركة فوق البوت في المستوى الأول ويسمح لك بإحداث الضرر بسرعة.
• الرز في المستوى الأول: يتطلب مهارات ، لكن العديد من اللاعبين من الدرجة 6-7K تمكنوا من قتل الروبوت في المستوى الأول ، وأكملوا بنجاح 3-5 نوبات في وقت قصير.

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

البنية التحتية


نحن لسنا مستعدين بعد لمناقشة الميزات الداخلية للبوت - يعمل الفريق على حل المشكلة مع لعبة 5 في 5.

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

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

في الوقت نفسه ، كتبنا برامج الروبوت في البرامج النصية - كمرجع للمقارنة (على وجه الخصوص ، لأن الروبوتات المدمجة لا تعمل بشكل جيد في وضع 1 على 1) وفهم دلالات API لبرامج الروبوت . يصل روبوت البرنامج النصي إلى 70 ساعة في 10 دقائق على مسار فارغ ، ولكن لا يزال يخسر للأشخاص الذين يلعبون جيدًا بما فيه الكفاية. يصل أفضل روبوت لدينا 1 إلى 1 إلى مستوى 97 تقريبًا (إنه يدمر البرج في وقت سابق ، حتى نتمكن من الاستقراء فقط) ، والحد الأقصى النظري هو 101.


البوت يلعب ضد SirActionSlacks. لم تنجح استراتيجية تحويل البوت مع حشد من السعاة

خمسة إلى خمسة


إن لعب 1 على 1 مهمة صعبة ، ولكن 5 على 5 هي محيط من التعقيد. سنحتاج إلى توسيع قدرات الذكاء الاصطناعي حتى يتمكن من التعامل معه.

بالطريقة المعتادة ، نبدأ بنسخ السلوك. تستضيف Dota حوالي مليون لعبة عامة يوميًا. يتم تخزين سجلات التطابقات على خوادم Valve لمدة أسبوعين. نقوم بتنزيل كل إدخال على مستوى الخبراء منذ نوفمبر الماضي ، وجمعنا مجموعة بيانات من 5.8 مليون لعبة (تستغرق كل لعبة 45 دقيقة تقريبًا مع 10 لاعبين). نحن نستخدم OpenDota للبحث عن السجلات ونقلنا 12000 دولار إليهم (عشرة أضعاف ما أرادوا جمعه في السنة) لدعم المشروع.

لا يزال لدينا الكثير من الأفكار ، ونوظف المبرمجين (المهتمين بتعلم الآلة ، ولكن ليس بالضرورة خبراء) والباحثين لمساعدتنا. نشكر Microsoft Azure و Valve لدعمهما في عملنا.

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


All Articles