چگونگی انجام تست A / B در بازی‌های MOBA

شکل ۱: عکس از ولادیسلاو بیچکوفمنتشر‌شده در towardsdatascience به تاریخ ۷ سپتامبر ۲۰۲۱ لینک منبع How To Do A/B Testing On MOBA Gamesمقدمهبازی DOTA2 یک بازی محبوب و پر طرفدار در عرصه نبرد آنلاین (MOBA) با میلیون‌ها کاربر فعال روزانه است. بازیکنان ۱۲۱ قهرمان را انتخاب می‌کنند و در ۵ بازی v5 بازی می‌کنند. این بازی یک منحنی یادگیری تند دارد و هیچ قهرمانی وجود ندارد که پیروزی را تضمین کند. در واقع، برای هر قهرمانی به نظر می‌رسد که قهرمان دیگری وجود دارد که نقطه مقابل کامل آن است.همچنین DOTA2 به طور مداوم در حال تکامل است که در آن آیتم‌ها و قهرمانان به منظور حفظ تعادل بازی، یا رد می‌شوند و یا تضعیف می‌شوند. به عنوان مثال، وصله 7.30 اخیراً منتشر شد و جامعه سریع به قهرمانانی اشاره کرد که اکنون "شکسته" شده‌اند، یعنی آنقدر باف (بزرگ و قوی) شده‌اند که درصد پیروزی‌های مسخره بالایی دارند.این مسئله این سوال را مطرح می‌کند: توسعه دهندگان DOTA2 چگونه می‌توانند بازی را متعادل نگه دارند؟ چگونه می‌توانیم تعیین کنیم که آیا یک قهرمان با موفقیت مغلوب شده‌است یا نه؟هدف این مقاله نشان دادن این است که چگونه آزمون فرضیه می‌تواند به عنوان یک معیار تعادل بازی و چگونگی تعامل با OpenDOTA API عمل کند.فرمول‌بندی فرضیهقهرمان انتخابی این پست، Pudge، یکی از برجسته‌ترین و متنوع‌ترین قهرمانان DOTA2 است. این یک قهرمان است که اغلب نرف/ باف شده‌است و برخی واکنش‌های قوی را از جامعه DOTA2 برمی انگیزد. همچنین «پگ» به دلیل درخشش قلاب فواره‌ای که اگر با «چن» (Chen) جفت شود، باعث کشته شدن تضمین شده‌ برای این قهرمان خواهد شد، سهم عادلانه‌ای در بحث و جدل دارد.آیا پگ نرف شده بود؟ ما باید تغییر نرخ برنده را که توسط موارد زیر تعریف شده است، بررسی کنیم:شکل۲:خوب است احتمال برنده شدن یک بازی را به عنوان پرتاب سکه در نظر بگیرید: شما یا برنده می‌شوید و یا می‌بازید. بنابراین ما با توزیع دو جمله‌ای سر و کار داریم، و اگر اندازه نمونه به اندازه کافی بزرگ باشد (معمولا n * ۳۰) ، می‌توانیم از آزمون z استفاده کنیم. برای این آزمون از یک آزمون دو طرفه با مقدار P برابر با ۰.۰۵ و امتیاز z برابر با ۱.۹۶. استفاده می‌کنیم.فرضیات عبارتند از:· فرضیه اول: پگ ۲۰۱۹ با پگ ۲۰۲۰ تفاوتی ندارد، نرخ برد یک‌سان است.· فرضیه جایگزین: پگ ۲۰۱۹ متفاوت از پگ ۲۰۲۰ است، نرخ برد تغییر کرده‌است.ما در حال مقایسه میانگین‌ها هستیم و می‌توانیم از فرمول زیر استفاده کنیم:شکل ۳:به طوری که p_hat به صورت زیر تعریف می‌شود:شکل ۴:جمع‌آوری داده‌هاداده‌ها با استفاده از OpenDota Explorer به دست می‌آیند، که به ما اجازه نوشتن پرسوجوهای SQL برای استخراج داده‌ها را می‌دهد. طرح کامل جدول را می توان در اینجا یافت:core/create_tables.sql at master · odota/coreطرح دادهبدیهی است که ما کل پایگاه‌داده را جستجو نخواهیم کرد، شکل زیر جداول علاقه و روابط را نشان می‌دهد.شکل ۵: طرح نویسندهپیاده‌سازی در SQLبه عنوان مثال، ما می‌توانیم داده‌های ۲۰۲۰ را با استفاده از پرس و جو زیر استخراج کنیم. توجه داشته باشید که اگر چه ما می‌خواهیم برای سال ۲۰۲۰ تطبیق داشته باشیم، چارچوب زمانی به طور دل‌خواه توسط قطعات اصلی محدود می‌شود (خطوط ۲۰-۱۷ را ببینید).نتیجه عکس فوری زیر است که می‌توانیم آن را به عنوان یک جدول CSV دانلود کنیم.شکل ۶:نتایج آزمایشمقدار p حاصل برای مقایسه نرخ‌های برد ۰.۵۷۰ است و نشان می‌دهد که ما باید فرضیه صفر را حفظ کنیم و فرضیه جایگزین را رد کنیم.با این حال، باید پرسید: آیا ما سیب را با سیب مقایسه می‌کنیم؟ یک راه برای ارزیابی آن، ارزیابی متغیرهای اضافی است.مدت زمان بازییک متغیر کنترلی که می‌توانیم به آن نگاه کنیم مدت‌زمان مسابقه است. امتیاز z برای تفاوت در میانگین ۲.۷۵۴ است و نشان می‌دهد که مدت‌زمان تطابق از نظر آماری بین هر دو نمونه متفاوت است.شکل ۷: تصویر نویسندهانتخاب تیمآیا انتخاب تیم برای نمونه‌های ۲۰۱۹ و ۲۰۲۰ یک‌سان است؟ ارزش p برای این آزمایش ۰.۰۰۷ است، بنابراین بله انتخاب تیم برای هر دو دوره زمانی یک‌سان است.محدودیت‌هامحدودیت اول تعداد نمونه‌ها است. در واقع، این جستجو در حدود ۲۵۰ بازی برای سال ۲۰۲۰ و ۶۵۰ بازی برای ۲۰۱۹ بود. مقایسه کنید که به طور متوسط ۲.۲ میلیون بازی در روز انجام می‌شود و حجم نمونه ناچیز به نظر می‌رسد.مدت‌زمان مسابقه متغیر دیگری است که پیچیده‌تر از مقدار صورت آن است. در واقع، هر قهرمان یک جهش قدرت متفاوت دارد که تابعی از مدت‌زمان بازی است. برای مثال، برخی از قهرمانان در بازی اولیه بسیار قدرتمند هستند و بعد از دقیقه ۳۰ سقوط می‌کنند.علاوه بر این، مسابقات برگشتی از بازیکنانی است که رضایت می‌دهند داده‌های بازی خود را عمومی کنند. به طور خاص، بازی‌ها معمولا از بازیکنان حرفه‌ای و بازی‌های لیگ هستند. از این رو، نتایج آزمایش را نمی توان به هر سطح بازی تعمیم داد. اگر رتبه بازیکن (MMR) مشخص باشد، این محدودیت می‌تواند به آسانی جبران شود.نتیجه‌گیریاین آزمایش بی‌نتیجه ماند، چون ما مطمئن نیستیم که آیا پگ نرف یا باف شده است. DOTA یک بازی با مکانیک پیچیده است و اگرچه نداشتن پاسخ قطعی خسته‌کننده است، اما همیشه یادگیری چیزی جدید جالب است.اگر می‌خواهید کل کد را بررسی کنید، مخزن زیر را ببینید:GitHub - NadimKawwa/dota_hypothesis_test: hypothesis testing for win rate using a sample heroاین متن با استفاده از ربات مترجم مقالات علم داده ترجمه شده و به صورت محدود مورد بازبینی انسانی قرار گرفته است.در نتیجه می‌تواند دارای برخی اشکالات ترجمه باشد.مقالات لینک‌شده در این متن می‌توانند به صورت رایگان با استفاده از مقاله‌خوان ترجمیار به فارسی مطالعه شوند.