BrawlVision

المنهجية

كيف نبني كل إحصائية تراها

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

آخر تحديث: 2026-04-30

مصادر البيانات

كل ما نعرضه يأتي من ثلاثة مصادر نحافظ عليها قابلة للتدقيق: واجهة Supercell العامة (developer.brawlstars.com)، شبكة Brawlify CDN (cdn.brawlify.com)، وقاعدة بياناتنا الخاصة في Supabase التي تحفظ المعارك والمجاميع التي لا تكشفها الواجهة الرسمية بعد آخر 25 مباراة لكل لاعب.

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

تخزن قاعدتنا فئتين من الصفوف في meta_stats: source=user (معارك حقيقية لمستخدمي Premium الذين فعّلوا المزامنة) و source=global (أخذ عينات تلقائي من أفضل تصنيفات PRO). كل إحصائية عامة في الموقع محسوبة بفلتر source=global حتى لا تتسرب بيانات شخصية لأي مستخدم إلى الصفحات العامة.

كيف نبني بيانات PRO

طبقة "PRO" في BrawlVision هي مجاميع محسوبة على معارك حديثة لأفضل لاعبي العالم. كل ست ساعات تستعلم مهمة cron (meta-poll) عن تصنيفات Supercell الرسمية لإحدى عشرة دولة — التي تتركز فيها النشاط التنافسي — وتبني تجمعاً غير مكرر يضم نحو 2,100 لاعب فريد من أعلى 200 لكل دولة.

فوق هذا التجمع نطبق مأخوذ عينات احتمالي لمنع تركيبات (الخريطة، الوضع) الشائعة من الهيمنة على البيانات وإخفاء النادرة. احتمال قبول معركة فردية هو p = min(1, (minLive + 1) / (current + 1))، حيث minLive هو عدد التركيبة الأقل تمثيلاً و current عدد تركيبة المعركة المرشحة. التركيبات قليلة العينات تأخذ وزناً أكبر، والمشبعة تتوقف عن النمو.

يتكرر cron حتى META_POLL_MAX_DEPTH = 1,000 لاعب لكل تشغيل بميزانية مرنة 270 ثانية ليبقى ضمن maxDuration 300 ثانية لوظيفة serverless. تتضمن كل استجابة كتلة تشخيص "adaptive" مع عدد التكرارات واللاعبين المستعلَمين والعدّ لكل وضع، ليبقى أي سلوك غير طبيعي للسامبلر قابلاً للملاحظة في الإنتاج.

نسبة الفوز البايزية

نسبة الفوز الساذجة (الانتصارات مقسومة على المباريات) تخدع عندما تكون المباريات قليلة. بطل بـ 3 انتصارات و0 هزائم على خريطة جديدة يعرض 100% لا تعني شيئًا. تطبق BrawlVision تنعيمًا بايزيًا لتصحيح هذا التشويه وإعادة رقم قابل للمقارنة بين أبطال بأحجام عينات شديدة الاختلاف.

الصيغة هي WR_bayesian = (الانتصارات + α·μ) / (المباريات + α). يزن المعامل α عدد المباريات المتخيَّلة التي نضيفها، وμ هي النتيجة التي نسندها إليها. نستخدم α = 30، أي إضافة 30 مباراة سابقة قبل النظر في البيانات الحقيقية.

حتى سبتمبر 2026 كانت قيمة تلك المباريات المتخيَّلة 50%، وكانت قيمة خاطئة. يحفظ جدولنا صفًا واحدًا لكل مباراة، صف اللاعب الذي جرى استطلاعه، وهو من أفضل 200 في بلده ويفوز بنسبة 71.4% من مبارياته (61,400 انتصار من 85,970 مباراة في نافذة 14 يومًا، قياس 7 سبتمبر 2026). وتقريب بيانات متمركزة حول 71.4% نحو 50% كان يجر إلى الأسفل كل خانة قليلة المباريات، وكلما صغرت العينة اشتد الجر. واليوم تساوي μ القيمة 0.714، وهي الأساس الذي قسناه.

يتناقص وزن التوزيع القبلي كلما كبرت العينة. مع 1,000 مباراة و530 انتصارًا تصبح النتيجة (530 + 21.42) / 1,030 = 53.5%، قريبة جدًا من 53.0% الخام. ومع 3 مباريات و3 انتصارات تصبح 74.0% بدل 100% الساذجة. لا يزن التنعيم إلا حين تكون العينة صغيرة فعلًا.

القوة المعدَّلة

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

الحساب نموذج Bradley-Terry مُلائَم بطريقة MM على جدول المواجهات في آخر 14 يومًا. يجري تماثل كل زوج من الأبطال قبل دخوله في الملاءمة، لأن صفوفنا تُسجَّل دائمًا من جهة اللاعب الذي جرى استطلاعه، ولتلك الجهة أفضلية. وبالقياس على الأزواج التي لديها 30 مواجهة على الأقل في كل اتجاه، يبلغ مجموع نسبة فوز A أمام B ونسبة فوز B أمام A وسيطًا قدره 138%، بينما تعطي البيانات المتماثلة 100%. وباحتساب كل مواجهة مرة واحدة من كل جهة، تدخل هذه الأفضلية لصالح الطرفين فتُلغى. تُنشر النتيجة بوصفها نسبة الفوز المتوقعة أمام البطل الوسيط في الملاءمة، فيكون 50% في هذا المقياس هو التعادل.

يستبعد الرقم تشكيلة الخصوم والأفضلية المتوسطة في أخذ العينة. ولا يستبعد مهارة من يلعب بالبطل. لا يحفظ meta_stats ولا meta_matchups معرِّف اللاعب، لذا يستحيل طرح مستوى اللاعب بالبيانات المتاحة لدينا؛ يلزم لذلك تسجيل ترتيب اللاعب الذي جرى استطلاعه لحظة الإدخال. ولهذا تبقى قوائم الموقع مرتبة حسب نسبة الفوز المرصودة وتوضع القوة بجانبها. ولهذا أيضًا تدور نسبة الفوز المرصودة حول 72% لا حول 50%. العينة مباريات لاعبين من أفضل 200 في أحد عشر بلدًا، وهم يفوزون بنحو 72% مما يلعبون، فيصف 72% في ذلك المقياس بطلًا عاديًا. لا ننشر القوة إلا للأبطال الذين لديهم 400 مواجهة مسجلة على الأقل أمام 20 خصمًا مختلفًا؛ ودون ذلك نحذف الرقم بدل عرض قيمة لا تصمد.

Comfort Score

Comfort Score هو مقياس BrawlVision الداخلي للإجابة على سؤال "مع أي بطل تلعب فعلاً أفضل من المتوسط؟". ليس نسبة فوز خام: يجمع ثلاثة مكونات بأوزان 60/30/10 لتغطية أبعاد مختلفة من الأداء الشخصي.

المكون الرئيسي (60%) هو WR اللاعب مع ذلك البطل، منعّماً بايزياً مثل الميتا العالمية، لئلا يهيمن بطل قليل اللعب على التصنيف. المكون الأوسط (30%) هو الفرق بين هذا WR الشخصي و WR ميتا البطل عموماً: لاعب بنسبة 55% على SHELLY بينما الميتا العالمية 48% يحصل على comfort أكبر من لاعب بنسبة 55% على بطل ميتاه 53% لأن الارتفاع النسبي أكبر.

المكون الأخير (10%) هو تردد الاستخدام المعياري: مع تساوي الباقي، لعب بطل 100 مرة يحسب أكثر من 10 لأن الاتساق يكافأ. الصيغ الدقيقة والأوزان تعيش في src/lib/analytics/compute.ts وتُطبق بشكل متطابق عند كل استدعاء للنقطة الطرفية لتكون النتيجة قابلة للتكرار.

تواتر التحديث

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

الأبطال والجادجت والستار باور تتزامن من واجهة Supercell بمخبأ خادم 24 ساعة. يعمل meta-poll (بيانات PRO) كل 6 ساعات وينتج صفوف meta_stats جديدة. الحساب المسبق لاتجاهات 7 أيام يعمل في pg_cron على "17 */6 * * *" (الدقيقة 17 من كل ست ساعات) لتفادي الاصطدام مع meta-poll. دوران أحداث اللعبة يتجدد كل 30 دقيقة.

تنزل المعارك الفردية لمستخدمي Premium الذين فعّلوا المزامنة فور كل مباراة في نافذة متحركة عبر cron المزامنة. بمجرد دخولها قاعدتنا، تغذي meta_stats بـ source=user وتشكل أساس التحليلات الخاصة في قسم الملف الشخصي؛ لا تظهر أبداً في المجاميع العامة ولا تختلط أبداً مع source=global.

الأسئلة الشائعة

لماذا نسبة فوز بطل بعينة صغيرة ليست 0% أو 100%؟+

لأننا نطبق التنعيم البايزي بسابق متمركز عند 50%. مع قليل من المباريات يظل الرقم المعروض قرب 50%؛ مع نمو العينة يقترب من نسبة الفوز الفعلية. هذا متعمد: 100% على 3 مباريات ليست معلومة، بل ضوضاء.

هل تستخدم الصفحات العامة بيانات مستخدمين حقيقيين؟+

لا. كل مجمع عام يفلتر بـ source=global الذي لا يضم سوى معارك من أخذ عينات تلقائي لتصنيفات PRO. المعارك الخاصة لمستخدمي Premium تُحفظ بـ source=user ولا تنتقل أبداً إلى الصفحات العامة.

ماذا يحدث عند إصدار Supercell بطلاً جديداً؟+

قائمة الأبطال تأتي من الواجهة الرسمية، لذا يظهر الروستر الكامل في الموقع نفس يوم الإطلاق. الندرة والصور تأتي من Brawlify الذي قد يتأخر يوماً إلى ثلاثة؛ نحتفظ بخريطة ندرة محلية (BRAWLER_RARITY_MAP) كـ fallback لتلك الأيام الأولى.

لماذا تُظهر بعض الاتجاهات شرطة بدلاً من نسبة مئوية؟+

نعرض الاتجاه فقط إذا كان كل نصف من نافذة 14 يوماً يحتوي على 3 معارك على الأقل في source=global. عندما يكون البطل قليل الظهور، نفضّل عدم إظهار شيء بدلاً من رقم بإشارة ضعيفة.

هل يستخدم الموقع الذكاء الاصطناعي لتوليد الأوصاف؟+

تُولّد الأوصاف ديناميكياً من بياناتنا (أفضل خريطة، أفضل وضع، WR بايزي لكل بطل). لا ننسخ نصوصاً من Brawlify أو الويكي، ولا نستخدم نماذج لغوية لتضخيم المحتوى.

أسئلة أو تصحيحات؟

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