في الآونة الأخيرة ، إلى جانب عمليات إعادة عرض minmax.gg/chickendinner
، أصدرنا ميزة جديدة تعرض مقاطع الفيديو التي تبثها برامج البث PUBG Twitch المشاركة. لتنفيذه ، نحتاج إلى التعرف على ملفات Twitch من خلال أسمائهم في اللعبة ، والتي تبين أنها مهمة شيقة إلى حد ما.
لدينا ميزة جديدة نشل في العمل.احتمال أن تلعب في نفس المباراة مع غاسل
قبل أن نبدأ في تطوير هذه الميزة ، أردنا التأكد من أن احتمالية المباراة التي قام أحد اللاعبين بتدفقها على Twitch كانت كبيرة بما يكفي لتبرير جهودنا. يمكننا إجراء تقدير تقريبي للغاية من خلال النظر في عدد اللاعبين النشطين ومقارنته بعدد عمليات البث النشطة.
في وقت كتابة هذا التقرير ، بثت اللعبة على Twitch حوالي 2100 مستخدم ، وعلى Steam كان هناك حوالي 700 ألف لاعب نشط في PUBG. هذا يعني أنه في ذلك الوقت شكلت اللافتات ما يقرب من 0.3 ٪ من قاعدة اللاعب.
بالنظر إلى أن 100 شخص يلعبون المباراة في معظم الأحيان ، فإن احتمال أن يكون واحد منهم على الأقل غاسل هو عكس الاحتمال بأن
لا أحد سيكون غاسل. نظرًا لأن احتمال أن يكون اللاعب ليس لاعبًا غائمًا هو 99.7٪ ، فإن احتمال عدم وجود لاعب من بين 100 لاعب هو 0.997 إلى قوة 100 ، أي 0.74. بمعنى آخر ، في أي مباراة هناك فرصة تقارب 25 بالمائة للعثور على لاعب واحد على الأقل يتدفق على Twitch.
تجدر الإشارة إلى أنه يمكننا أن نفترض على Twitch تحولًا قويًا نحو منطقة أمريكا الشمالية مقارنةً بالقاعدة العامة للاعبي PUBG ، لذلك إذا كنت تشاهد مباريات من أمريكا الشمالية ، فمن المحتمل أن تكون النسبة أعلى بكثير.
تخمين الأسماء
الآن بعد أن علمنا أن هناك فرصة جيدة للعثور على غاسل في أي مباراة معينة ، كيف نعرف ما إذا كان هناك لاعب يبث لعبة على Twitch؟
للحصول على مكافآت إضافية ، يمكنك توصيل حسابك على
Twitch باللعبة ، لكن لسوء الحظ ، لا تتوفر هذه البيانات من
PUBG API . نحتاج إلى طريقة أخرى لربط اسم اللاعب بالتيار في Twitch.
دعونا نلقي نظرة على غاسل افتراضي مع اسم حساب
ميتش . يلعب ميتش بانتظام في PUBG ، لكن قناة Twitch لم تصل بعد إلى مستوى الآراء التي يحلم بها. عند التفكير ، قام بتغيير اسمه في اللعبة إلى
TwitchMitch . الآن يعلم الجميع أن ميتش تيارات على Twitch.
هذا المبدأ شائع للغاية ، وأحيانًا يكون هناك اختلافات مختلفة قليلاً:
TTVMitch أو
Mitch_TV . يمكن اكتشاف هذه الأسماء بطريقة برمجية وتحديد حساب منها على Twitch ، مما يسمح لنا باستلام الفيديو لعرضه في إعادة تشغيل المطابقة.
رسم الخرائط اليدوية
هذا النهج يعطينا نقطة مرجعية جيدة للغاية ، لكنه أبعد ما يكون عن الحد الكافي. أسماء الأكثر شعبية اللافتات لا تتطابق مع هذا النمط. للعثور عليهم ، يجب أن تربط بشكل فردي من حساب PUBG باسم قناة Twitch الخاصة بهم.
للتعامل مع هذا ، بدأنا في البحث يدويًا عن أكثر اللافتات شعبية على Twitch ، وتسجيل أسماء الحسابات الموجودة في اللعبة والتي تظهر على الشاشة. إذا كنت محظوظًا ، فستتمكن من معرفة اللحظة التي ينتظرها اللاعب في الردهة ، حيث يمكنك العثور على الاسم في عدة أماكن:
ومع ذلك ، فمن الأرجح أن تجد لاعبًا يلعب بالفعل في المباراة. إذا لعب مع الفريق ، فسيظل اسمه دائمًا في الزاوية اليسرى السفلى:
ومع ذلك ، من الضروري حساب أي من الأسماء ينتمي إليه ، لأنه لن يكون هو نفسه دائمًا. أسهل طريقة للقيام بذلك هي النظر إلى الصورة المصغرة في الزاوية اليمنى السفلى ، والتي تتمحور حول علامة اللاعب ، والتي تحمل رقمًا ولونًا.
تتمثل الطريقة الأكثر شمولية في دراسة الجزء السفلي المركزي من الشاشة ، حيث يمكنك العثور على ما يلي:
يحتوي هذا النص على اسم الحساب والإصدار الحالي للعبة وآخر 6 أحرف من معرف المباراة ومنطقة الخادم. تجدر الإشارة إلى أنه ليس دائمًا نظيفًا كما هو موضح أعلاه ، لأنه يمتزج عادة مع ما يحدث وراءه على الشاشة. النص صغير ، مما يعني أنه يمكن أن يكون غير واضح وقراءة سيئة عند حدوث آثار فيديو خطيرة. ولكن عاجلاً أم آجلاً ، ستصطاد إطارًا جيدًا بما يكفي لقراءته.
ربما كنت تفكر بالفعل في ما أدركناه في ذلك الوقت - هذه مهمة مثالية لحل تلقائي للكمبيوتر!
رؤية الكمبيوتر
في ظل الظروف المثالية ، يجب أن تتعرف خوارزمية
التعرف الضوئي على
الحروف على ما هو مكتوب في النص أدناه. بعد تجربة عدة خيارات ، قررنا أخيرًا أن Google
Cloud Vision API تقدم أفضل النتائج. يمكننا إنشاء برنامج نصي يقوم بما يلي:
- احصل على بث PUBG مباشر وتقطع الجزء السفلي من لقطة الشاشة (يوفر Twitch API صورة معاينة بالحجم الكامل ، لذلك لا نحتاج إلى التقاط لقطات لأنفسنا).
- يرسل لقطة شاشة إلى Cloud Vision API ويوزع اسم اللاعب من النتيجة.
- يتحقق من خلال PUBG API وجود المشغل ، ثم يحفظ حساب Twitch من حساب PUBG في قاعدة بياناتنا.
سيكون هذا الأمر رائعًا ، باستثناء تفاصيل صغيرة واحدة: تطلب Google 1.5 دولار عن كل ألف طلب إلى واجهة برمجة تطبيقات Cloud Vision. في أي وقت من الأوقات ، يمكن أن يكون هناك حوالي 2-3 آلاف من اللقطات النشطة ، وبالتالي فإن تشغيل برنامج نصي واحد سيكلفنا ما يصل إلى 4.5 دولار. نظرًا لحقيقة أنه من المحتمل أن نحصل على العديد من لقطات الشاشة بنص غير قابل للقراءة ، ستحتاج إلى تشغيل البرنامج النصي عدة مرات للحصول على أي كمية كبيرة من البيانات. وبعبارة أخرى ، فإن مثل هذا النهج سرعان ما يصبح مهمة مكلفة للغاية. لحسن الحظ ، يمكننا تنظيم طلبات Cloud Vision بشكل أكثر ذكاءً. يمكننا الاستفادة من حقيقة أن Google تطلب الدفع للطلبات الفردية ، بغض النظر عن حجم الصورة. وهذا يعني أنه يمكننا توصيل العديد من الصور بالشبكة:
ثم نرسل شبكة الصور هذه إلى واجهة برمجة التطبيقات (API) ونعلق النص الناتج على محرك الشريط المقابل للمنطقة التي تم العثور على النص فيها.
يوجد حد لحجم البيانات المرسلة من Google في نفس الوقت ، لذلك سوف نلتقط 300 صورة تم لصقها معًا لطلب. هذا يعني أنه يمكننا الآن تشغيل البرنامج النصي 300 مرة بنفس السعر كما كان من قبل ، مما يجعل هذا النهج قابلاً للتطبيق وفعال للغاية.
املأ الفجوات الأخيرة
لقد عمل البرنامج النصي الخاص بنا لمدة أسبوعين ، وحتى الآن سجلنا 25 ألف مقارنة بين Twitch و PUBG. ومع ذلك ، لم يتمكن البرنامج النصي من ربط بعض اللافتات ، على سبيل المثال ، أولئك الذين لديهم تراكبهم الخاص أعلى النص في أسفل الشاشة.
علينا ربط هذه اللافتات يدويا. بدلاً من القيام بذلك بمفردنا ، قررنا إضافة وظيفة تسمح للزائرين بإرسال اسم أي غاسل لم يجدوه في قاعدة بياناتنا:
سنكون سعداء لمواصلة تجربة طرق الحصول على مثل هذه الأزواج من الحسابات ، بل إننا نريد المزيد من البحث عن طرق جديدة لاستخدام المعلومات الحالية. توقع مقالات جديدة منا!