
WoT Blitz هو مطلق دبابة متنقلة يقاتل فيه اللاعبون بتنسيق 7 على 7.
يعد صانع التوفيق ، أو الموازن ، آلية تشكل ، بناءً على تشكيلة اللاعبين الذين يرغبون في الدخول في المعركة ، تشكيل الفرق.
الدبابات لديها المعلمات التالية مهمة للتوفيق بين:
- المستوى. بناءً على المستوى ، تتغير الخصائص المختلفة للدبابات (على سبيل المثال ، السرعة ، اختراق الدروع). في المستوى 1 - أضعف الدبابات ، في 10 - الأقوى.
- اكتب. يوجد 4 أنواع من الدبابات في WoT Blitz: مدمرات خفيفة ومتوسطة وثقيلة ودبابات (مدفعية ذاتية الدفع مضادة للدبابات)
إن أبسط تطبيق لأحد أعواد الثقاب هو رمي اللاعبين بشكل عشوائي في فرق. ولكن في هذه الحالة ، لن يكون للاعبين في المستويات المنخفضة أي فرصة للتسبب في بعض الأضرار على الأقل ، وسيصبح اللعب غير مهتم.
متطلبات
تم تكوين قائمة متطلبات الموازن على أساس ردود الفعل من مجتمع الألعاب ويتم تحديثها بشكل دوري حتى يومنا هذا.
في وقت كتابة المقال للمعارك العادية ، كانت القائمة تتألف من العناصر التالية:
قائمة متطلبات الموازن- يجب ألا يتجاوز الفرق بين الحد الأقصى والحد الأدنى لمستوى الخزان واحدًا ، باستثناء الفصائل (أي إذا صادفت 10s في معركة ، فلا ينبغي أن يكون هناك 5s أو 7s ، 9s و 10s فقط) ؛
- يجب أن تكون الفرق 7 × 7 ، باستثناء انخفاض الإنترنت (في هذه الحالة ، يمكنك إنشاء معارك أصغر ، على سبيل المثال 5 × 5 أو 3 × 3) ؛
- يجب أن تكون الفرق متوازنة وفقًا للفن السابق (إذا كان لدى أحد الفريق 3 دبابات من المستوى العاشر و 4 من التاسع ، فيجب أن يكون لدى الفريق الآخر 3 عشرات و 4 تسعة) ؛
- في كلا الفريقين ، يجب أن يكون الفن السابق للفصيلة هو نفسه ؛
- يجب ألا يكون للفرق أكثر من 3 دبابات من كل نوع (على سبيل المثال ، لا يزيد عن 3 فروع ، لا يزيد عن 3 نقاط نقل). تعمل القاعدة بدءًا من المستوى 5 وما فوق ؛
- لا ينبغي أن يكون الفرق في عدد الدبابات من نفس النوع بين فريقين أكثر من واحد (على سبيل المثال ، إذا كان لدى فريق واحد 1 PT ، فيمكن أن يحتوي الثاني على 2 PT بحد أقصى) ؛
- يجب أن تكون الفرق متوازنة في عدد الدبابات المتطابقة ، مع اختلاف لا يزيد عن دبابة واحدة (إذا كان هناك 1 IS-7 في فريق واحد ، فلا يزيد عن 2 IS-7 في الآخر) ؛
- يجب أن يقع اللاعبون فقط في أوضاع المعركة التي يختارونها (إذا قام اللاعب بتشغيل "معركة قادمة" فقط ، فلا يجب أن يقع في "التفوق") ؛
- إذا اشترى لاعب دبابة جديدة ، فعند معارك N الأولى على الدبابة الجديدة ، فإن مستويات الدبابات الأخرى لا تتجاوز مستوى دبابة اللاعب الجديدة (أي ، إذا كان لدى اللاعب دبابة من المستوى 5 ، فلا ينبغي مواجهة دبابات من المستوى السادس في المعركة) ؛
- يجب أن يحصل اللاعب على تلك البطاقات التي قام بتحميلها بالفعل. يتم تنزيل جزء من المحتوى بعد تثبيت اللعبة ؛
- إذا قام لاعب بتشغيل الخيار "Single control type" ، فينبغي عليه اللعب فقط مع اللاعبين الذين لديهم نفس نوع التحكم مثله (إذا كان يلعب على جهاز كمبيوتر لوحي / هاتف ، فلا ينبغي له الوصول إلى لاعبين مع الفئران ، والعكس بالعكس).
إن تطوير صانِع الثقاب ، خاصةً النظر في مثل هذا العدد من القيود ، مهمة شيقة جدًا. يمكن أن تكون طرق حلها كثيرة جدًا.
موازن تشكيل زوج من اللاعبين
في البداية ، في الدبابات المتنقلة ، تم استخدام موازن ، ورثه عن أخيه الكبير - خزانات سطح المكتب. بشكل عام ، كان يعمل جيدًا ، لكنه واجه العديد من المشكلات: أولاً ، لم يقدم ضمانات واضحة لتلبية المتطلبات ؛ ثانياً ، كانت إضافة متطلبات جديدة صعبة إلى حد ما.
بداية المعركةلذلك ، تم كتابة موازن آخر ، والذي يعمل وفقًا للخوارزمية التالية:
- نقسم اللاعبين إلى مجموعات وفقًا لمستوى ونوع المعدات ؛
- من اللاعبين الناتجة نشكل أزواج.
- نحن نوزع الأزواج لفرق مختلفة: أخذ كل زوج ، ورمي اللاعب الأول في الفريق الأول ، والثاني في الثاني ؛
- في الفرق المستلمة ، نجعل إعادة التوازن النهائية: لتلبية معظم المتطلبات ، نستبدل بعض اللاعبين من فريق واحد بلاعبين من فريق آخر.
عملت موازنة الناتجة أسرع 5-10 مرات من الإصدار السابق وتجميع فرق في البداية التي تلبي جميع المتطلبات في ذلك الوقت. تمت إضافة قواعد جديدة بكتابة تصاريح إعادة موازنة إضافية.
في البداية ، كل شيء يعمل بشكل جيد. لكن مع مرور الوقت ، تمت إضافة المزيد من القواعد ، وكان من الصعب كتابة إعادة التوازن. يجب ألا تؤدي عملية إعادة التوازن الجديدة ، نتيجة لعملها ، إلى كسر عمل تلك السابقة. أصبح من الواضح أن هذا هو الطريق إلى العدم.
علة في الخاطبة - تجمع 9 في 9 فريقمحاكاة الصلب الموازن
في الإصدار النهائي ، استقرنا على موازن يعمل وفقًا للخوارزمية التالية. جميع اللاعبين الذين ينقرون فوق الزر "To Battle" يقعون في قائمة الانتظار العامة. يقوم موازن الحلقة اللانهائي بما يلي:
- يختار معلمات معركة عشوائية (مستوى معركة عشوائي (من 1 إلى 10) ، وضع عشوائي ، خريطة عشوائية) ؛
- يجد في قائمة الانتظار جميع اللاعبين الذين يتطابقون مع المعايير المحددة أعلاه (دخلوا في معركة على مستوى مناسب ، مع تشغيل الوضع المحدد ، وتحميل الخريطة المحددة) ؛
- محاولة تشكيل فرق تفي بجميع المتطلبات المذكورة أعلاه (الوصف أدناه) ؛
- إذا كان من الممكن تشكيل فريق ، فإنهم يرمون هؤلاء اللاعبين خارج خط الانتظار وتبدأ المعركة.
لتشكيل فرق من قائمة اللاعبين المناسبين ، يتم استخدام طريقة محاكاة التلدين. اقرأ المزيد عن الطريقة نفسها
هنا .
البحث عن الحد الأقصى العالمي من خلال محاكاة الصلبفي سياق التطبيق على تشكيل الفرق ، تكون الخوارزمية كما يلي:
- يبدأ بفريقين فارغين ؛
- في كل تكرار ، يغير بشكل عشوائي حالة الأوامر. للقيام بذلك ، قم بإحدى العمليات التالية:
- إضافة لاعب عشوائي من قائمة اللاعبين المناسبين إلى الفريق الأول أو الثاني (نأخذ أيضًا فريقًا عشوائيًا) ؛
- يزيل لاعب عشوائي من فريق عشوائي.
- يستبدل مشغل عشوائي من قائمة اللاعبين المناسبين بأحد اللاعبين الحاليين في الفريق الأول أو الثاني ؛
- تغيير لاعب عشوائي من الفريق الأول إلى لاعب عشوائي من الفريق الثاني.
- الحصول على تقدير للحالة الناتجة. للقيام بذلك ، يستدعي وظيفة التقييم. وظيفة يمر قائمة المتطلبات وخرق كل عنصر يزيد من عقوبة. كلما كانت النقطة منتهكة ، كلما كانت العقوبة أعلى. على سبيل المثال ، ستكون عقوبة فريق 2x2 أعلى من عقوبة فريق 6 × 6 ؛
- اعتمادًا على التغير في قيمة الوظيفة المقدرة ودرجة الحرارة الحالية ، نحدد احتمال الانتقال إلى حالة جديدة ؛
- نواصل العملية حتى تصل درجة الحرارة إلى الحد الأدنى المحدد أو تصل قيمة وظيفة التقييم إلى الصفر (في هذه الحالة ، تكون جميع المتطلبات مستوفاة ويمكن بدء المعركة).
الميزة الرئيسية لهذا النهج: لإضافة متطلبات جديدة ، يكفي تعديل وظيفة التقييم. ليست هناك حاجة لكتابة التعليمات البرمجية التي تصف كيفية الحصول على ما نريد بالضبط. أضف فقط قاعدة تنظر إلى الفريق المشكّل وتقول ما إذا كانت متوازنة بشكل جيد أم لا.
وخير مثال على إضافة مثل هذه القواعد هو معارك التصنيف. في معارك التقييم في الخاطبة ، ظهرت عدة قواعد جديدة في وقت واحد:
- يجب أن تكون الفرق متوازنة من حيث التصنيف (يجب ألا يتجاوز الفرق في التصنيف الكلي للاعبين بين الفرق قيمة معينة) ؛
- يجب أن يكون الفرق في التصنيف بين اللاعبين ضئيلاً (يجب ألا يشارك لاعبو الدوري البرونزي في معارك مع الماس من الماس).
مثال لفرقة لاعب الدوري الماسييتم تنفيذ القاعدة الأولى عن طريق تعديل وظيفة التقييم: تمت إضافة عقوبة لتجاوز الحد الأقصى المسموح به للفرق في التصنيف. يتم تطبيق القاعدة الثانية عن طريق تغيير الوظيفة التي تسحب اللاعبين المناسبين من قائمة الانتظار.
عيب هذا النهج هو السرعة البطيئة. مقارنة بالإصدار السابق ، بدأت النسخة الحالية تعمل بمعدل أبطأ بنحو 10 مرات ، على الرغم من عدد من التحسينات. بالمناسبة ، عن التحسين. تتم كتابة معظم الخادم (باستثناء الشبكة والفيزياء) للعبة في Python. تمت إعادة كتابة الموازن في C ++ ومتوازنة مع العديد من مؤشرات الترابط. من Python ، يصل طلب تشكيل أمر إلى رمز الجمع. علاوة على ذلك ، يبدأ كل من التدفقات بشكل مستقل في طريقة التلدين. بمجرد أن يجد بعض الخيط حلاً ، تتوقف بقية سلاسل العمليات عن عملية البحث ، ويتم إرجاع الحل الموجود إلى Python.
وقت الانتظار وحجم قائمة الانتظار على خادم RU (5 ثوان في المعارك العادية و 10 في المعارك التقييم)كما نما النمو عبر الإنترنت ، وكذلك زاد الحمل على الموازن. في خريف هذا العام ، عندما وصل الخادم عبر الإنترنت على خادم RU إلى 120 ألف (خلال حدث Mad Games) ، توقف الموازن عن التعامل معه. كتدبير مؤقت ، قمنا بتعطيل بعض القواعد ، مما سمح لنا بتقليل الحمل. لتجنب مثل هذه المشاكل في المستقبل ، قمنا بتوزيع برنامج التوفيق.
نظام التقييم
أفضل اللاعبين في الدوري الماسي ، 21 أبريل 2019في العديد من ألعاب MMO ، بالإضافة إلى المعارك العشوائية ، هناك أيضًا تصنيف / تصنيف / إلخ. الفكرة الرئيسية لهذا الوضع: لا يتم البحث عن المعارضين بشكل عشوائي ، ولكن مناسبة في المهارة. إذا كنت لاعبًا ماهرًا ، فستلعب بنفس لاعبي المهارات ، والعكس بالعكس ، إذا كنت لا تعرف كيفية اللعب ، فستواجه نفس اللاعبين الجدد.
في بداية الموسم ، يمر اللاعب بسلسلة من معارك المعايرة ، تحدد نتائجها موضع البداية. بعد ذلك ، اعتمادًا على النجاح الإضافي للعبة ، إما أن يرتفع اللاعب أو يقع في التصنيف. تم إنشاء نظام التصنيف في Blitz ، أولاً وقبل كل شيء ، لتحقيق التوازن السليم. يتم شحذها على مهارة اللاعبين ومستقلة عملياً عن عدد الألعاب التي تم لعبها.
لتنفيذ معارك التقييم ، كان من الضروري حل مشكلتين في وقت واحد. أولاً ، كان من الضروري اختيار نظام تصنيف (حسب ما ينبغي تصنيف اللاعبين الأساسيين). ثانياً ، كان من الضروري تحسين الموازن بحيث يجمع المعارك مع مراعاة قيود التصنيف.
الشرط الرئيسي لنظام التصنيف هو القدرة على تحديد مستوى اللاعب بدقة. لتقييم مدى دقة نظام تصنيف واحد أو آخر ، تم إنشاء جهاز محاكاة ، تم عنده تقديم تاريخ المعارك ونظام التصنيف المحدد ، وفي الإخراج ، تم الحصول على دقة النظام.
تم حساب الدقة على النحو التالي:
- تم تكليف جميع اللاعبين بتصنيف يبدأ.
- بناءً على نتائج كل معركة ، تم إعادة حساب تصنيف اللاعبين المشاركين في هذه المعركة وفقًا للنظام المحدد ؛
- قبل كل معركة ، حاول النظام التنبؤ بأي فريق سيفوز ؛
- نتيجة لذلك ، تم حساب النسبة المئوية للمعارك التي أعطاها النظام التنبؤ الصحيح.
أنظمة حساب التصنيف الأكثر شعبية: winrate ،
Elo ،
Glicko ،
TrueSkill . Winrate هو النسبة المئوية المعتادة من الانتصارات. Elo هو نظام تصنيف ، تم إنشاؤه في الأصل للألعاب مع شخصين (لعبة الشطرنج ، إلخ). في هذا النظام ، يتم منح / سحب اللاعب عددًا معينًا من النقاط للفوز / الخسارة ، اعتمادًا على تصنيف الخصم. يشبه Glicko بشكل عام Elo ، ولكنه يأخذ أيضًا في الاعتبار المدة التي كان فيها اللاعب غير نشط. TrueSkill هو نظام تصنيف خاص من Microsoft ، حيث يحتوي كل لاعب على معلمتين: التصنيف وثقة النظام في هذا التصنيف.
أثناء تطوير الإصدار الأول من معارك التقييم ، فكرنا في winrate و Elo (عدة خيارات تم تكييفها مع لعبة جماعية) ، بالإضافة إلى نظام نقاط بسيط (حيث كان اللاعبون يحصلون دائمًا على عدد ثابت من نقاط التصنيف للفوز وأخذوا للهزيمة).

تم عرض أفضل النتائج من خلال نظام Elo ، حيث يعتبر Ra هو تصنيف اللاعب ، و Rb هو الفرق بين التصنيف الكلي للفريق المنافس والتصنيف الإجمالي لفريق اللاعب ، باستثناء اللاعب نفسه.
الصعوبات الرئيسية التي واجهناها بعد الإطلاق:
- تباين كبير في الترتيب بين اللاعبين ؛
- السرعة التي لا يمكن التنبؤ بها والتي يسجلها اللاعبون (تصل إلى الدوري).
لا يمكن حل المشكلة الأولى تمامًا بسبب وجود عدد قليل جدًا من اللاعبين المهرة ، وعليهم الانتظار لفترة طويلة قبل بدء المعركة ، وكثيراً ما يرون اللاعبين في فرقهم أضعف. لتخفيف التأثير ، جعلنا معارك التقييم متاحة فقط في وقت الذروة (أي ، في وقت كان فيه أكبر عدد ممكن من الأشخاص يلعبون على الخوادم).
لقد حللنا المشكلة الثانية عن طريق إدخال عامل تباطؤ (أي أنه كلما كان اللاعب أكثر من التصنيف المتوسط ، زاد صعوبة ارتفاعه أو انخفاضه).
حاولنا أيضًا بطرق مختلفة لتحسين جودة نظام التصنيف. في الإصدارات الأولى ، لتغيير التصنيف ، استخدمنا فقط المعلومات حول النصر / الهزيمة. لكن لدينا لعبة جماعية ، ولا تؤدي الإجراءات الجيدة التي يقوم بها لاعب معين دائمًا إلى فوز الفريق بأكمله. هذا هو ، حتى لو لعب اللاعب أداءً جيدًا وخسر الفريق ، فقد حصل هذا اللاعب على نفس الدرجة التي حصل عليها جميع اللاعبين الآخرين. لمنع هذا ، بدأنا في محاولة مراعاة الإجراءات الفردية للاعب في المعركة.
لهذه الأغراض ، حاولنا استخدام التعلم الآلي: جمعنا العديد من العوامل وحاولنا تدريب النموذج للتنبؤ بفوز / هزيمة الفريق وفقًا لتصرفات اللاعب في المعركة ، ثم استخدام هذا النموذج لتحديد معامل مكافأة التصنيف (أي إذا خسر الفريق ، لكن سلوك اللاعب كان مشابهًا) حول سلوك اللاعبين الفائزين ، امنح هؤلاء اللاعبين مكافأة إضافية).
اللاعب من الفريق الفائز الذي لعب جيدًا في التصنيف +40. وهذا أمر سيء فقط +10تمكنا من بناء نموذج جيد أظهر نتائج أفضل بكثير من النموذج الحالي ، ولكن كانت هناك صعوبة واحدة (غالبًا ما تفسد كل شيء في مشاكل التعلم الآلي). كان النموذج جيدًا ، لكن في بعض الأحيان كان لديه أخطاء واضحة للعيان. كانت هناك مواقف بشكل دوري عندما يكون اللاعب الذي ، من وجهة نظر شخص ما ، قد حقق نتائج جيدة ، وحصل على مكافأة منخفضة من وجهة نظر النموذج ، والعكس بالعكس.
نتيجة لذلك ، تخلينا عن نموذج ML واتخذنا صيغة يدوية أبسط. تأخذ هذه الصيغة في الاعتبار تجربة القتال فقط دون مراعاة مكافآت النصر و x2 وغيرها. إنها تعطي نتيجة جيدة للغاية ، على الرغم من أنها أقل قليلاً من تلك الخاصة بنموذج ML.
استنتاج
- سمح لنا الموازن القائم على طريقة محاكاة الصلب بالانتقال من وصف الحل (كيفية تجميع الفريق) إلى وصف المتطلبات (أي الشروط يجب ألا تنتهك) ؛
- في معارك تصنيف الفريق ، أظهر نظام Elo المعدل نفسه جيدًا ، مع مراعاة الإجراءات الفردية للاعب في المعركة ؛
- لا يجدر دائمًا استخدام الأساليب المعقدة للتعلم الآلي (خاصةً عندما تكون أهمية تفسير الشخص للنتائج وفهمها أمرًا مهمًا).
نواصل تطوير وتحسين الموازن. لقد هزمنا تقريبا الانطباع السلبي عن الخلل الطبقي. المشاكل الرئيسية التي يوليها لاعبونا الاهتمام هي عدم التوازن في المهارة والاضطراب واللاعبين. هذا تحدٍ خطير ، نواصل العمل على موازن في هذه المناطق.
إذا كان لديك أي أسئلة / اقتراحات بشأن موازن في WoT Blitz ، فقم بإلغاء الاشتراك في التعليقات (أو في
منتدانا ).