Recherche de streamers Twitch dans une correspondance PUBG

image

Récemment, avec les rediffusions minmax.gg/chickendinner , nous avons publié une nouvelle fonctionnalité qui affiche les vidéos diffusées par les streamers PUBG Twitch participants. Pour l'implémenter, nous devions reconnaître les streamers Twitch par leurs noms dans le jeu, ce qui s'est avéré être une tâche plutôt intéressante.


Notre nouvelle fonctionnalité Twitch en action.

La probabilité que vous jouiez dans le même match avec le streamer


Avant de commencer à développer cette fonctionnalité, nous voulions nous assurer que la probabilité d'un match dans lequel l'un des joueurs diffusait sur Twitch était suffisamment grande pour justifier nos efforts. Nous pouvons faire une estimation très approximative en regardant le nombre de joueurs actifs et en le comparant avec le nombre de diffusions actives.

Au moment de la rédaction, le jeu diffusait sur Twitch environ 2100 utilisateurs et sur Steam, il y avait environ 700 000 joueurs actifs dans PUBG. Cela signifie qu'à cette époque, les streamers représentaient environ 0,3% de la base de joueurs.


Étant donné que 100 personnes jouent le match le plus souvent, la probabilité qu'au moins l'une d'entre elles soit un streamer est l'opposé de la probabilité que personne ne soit un streamer. Étant donné que la probabilité que le joueur ne soit pas un streamer est de 99,7%, la probabilité qu'aucun des 100 joueurs ne soit un streamer est de 0,997 à la puissance de 100, soit 0,74. En d'autres termes, dans n'importe quel match, il y a environ 25% de chances de trouver au moins un joueur en streaming sur Twitch.

Il convient de noter que nous pouvons supposer sur Twitch un fort changement vers la région de l'Amérique du Nord par rapport à la base générale des joueurs PUBG, donc si vous regardez des matchs d'Amérique du Nord, le pourcentage sera probablement beaucoup plus élevé.

Devinez les noms


Maintenant que nous savons qu'il y a de bonnes chances de trouver un streamer dans un match donné, comment savoir si un joueur diffuse un jeu sur Twitch?

Pour des bonus supplémentaires, vous pouvez connecter votre compte Twitch au jeu, mais, malheureusement, ces données ne sont pas disponibles à partir de l' API PUBG . Nous avons besoin d'un autre moyen de lier le nom du joueur au streamer dans Twitch.

Regardons un streamer hypothétique avec un nom de compte Mitch . Mitch joue régulièrement dans PUBG, mais sa chaîne Twitch n'a pas encore atteint le niveau de vues dont il rêve. Après réflexion, il change son nom dans le jeu en TwitchMitch . Maintenant, tout le monde sait que Mitch diffuse sur Twitch.

Ce principe est très courant, avec parfois des variations légèrement différentes: TTVMitch ou Mitch_TV . Ces noms peuvent être détectés par programme et déterminés à partir d'eux sur un compte sur Twitch, ce qui nous permet de recevoir des vidéos à afficher lors de la rediffusion du match.

Cartographie manuelle


Cette approche nous donne un très bon point de référence, mais c'est loin d'être suffisant. Les noms des streamers les plus populaires ne correspondent pas à ce modèle. Pour les trouver, vous devez lier individuellement le compte PUBG au nom de leur chaîne Twitch.

Pour y faire face, nous avons commencé à rechercher manuellement les streamers les plus populaires sur Twitch et à enregistrer les noms de compte dans le jeu qui sont visibles à l'écran. Si vous êtes chanceux, vous pourrez saisir l'instant où le joueur attend dans le hall, où vous pouvez trouver le nom à plusieurs endroits:


Cependant, il est beaucoup plus probable de trouver un joueur qui joue déjà dans le match. S'il joue avec l'équipe, son nom sera toujours visible dans le coin inférieur gauche:


Cependant, il est nécessaire de calculer lequel des noms lui appartient, car ce ne sera pas toujours le même. La façon la plus simple de le faire est de regarder la mini-carte dans le coin inférieur droit, qui est centrée sur le marqueur du joueur, marquée d'un nombre et d'une couleur.

L'approche la plus holistique consistera à étudier la partie centrale inférieure de l'écran, où vous trouverez les éléments suivants:


Ce texte contient le nom du compte, la version actuelle du jeu, les 6 derniers caractères de l'identifiant du match et la région du serveur. Il convient de noter qu'il n'est pas toujours aussi propre que celui indiqué ci-dessus, car il se mélange généralement à ce qui se passe derrière l'écran. Le texte est petit, ce qui signifie qu'il peut être flou et mal lu lorsque de graves artefacts vidéo se produisent. Mais tôt ou tard, vous obtiendrez un cadre suffisamment bon pour le lire.

Vous pensez peut-être déjà à ce que nous avons réalisé à l'époque - c'est une tâche idéale pour une solution informatique automatique!

Vision par ordinateur


Dans des conditions idéales, l'algorithme OCR devrait reconnaître ce qui est écrit dans le texte ci-dessous. Après avoir essayé quelques options, nous avons finalement décidé que l' API Google Cloud Vision donne les meilleurs résultats. Nous pouvons créer un script qui fait ce qui suit:

  1. Obtient une diffusion PUBG en direct et coupe le bas de la capture d'écran (l' API Twitch fournit une image d'aperçu en taille réelle, nous n'avons donc pas besoin de prendre des captures d'écran nous-mêmes).
  2. Envoie une capture d'écran à l'API Cloud Vision et analyse le nom du joueur à partir du résultat.
  3. Vérifie via l'API PUBG que le joueur existe, puis enregistre le compte Twitch à partir du compte PUBG dans notre base de données.

Cela fonctionnera très bien, sauf pour un petit détail: Google demande 1,5 $ pour chaque millier de demandes à l'API Cloud Vision. À tout moment, il peut y avoir environ 2 à 3 000 streamers actifs, donc même une seule exécution de script nous coûtera jusqu'à 4,5 $. Compte tenu du fait que nous sommes susceptibles d'obtenir de nombreuses captures d'écran avec du texte illisible, vous devrez exécuter le script plusieurs fois pour obtenir une quantité importante de données. En d'autres termes, une telle approche deviendra rapidement une entreprise très coûteuse. Heureusement, nous pouvons organiser les demandes pour Cloud Vision un peu plus intelligemment. Nous pouvons profiter du fait que Google demande le paiement des demandes individuelles, quelle que soit la taille de l'image. Autrement dit, nous pouvons connecter de nombreuses images à la grille:


Ensuite, nous envoyons cette grille d'images à l'API et attachons le texte résultant au lecteur de bande correspondant à la zone dans laquelle le texte a été trouvé.

Il y a une limite sur la taille des données envoyées par Google en même temps, nous prendrons donc 300 images collées ensemble pour une demande. Cela signifie que nous pouvons maintenant exécuter le même script 300 fois au même prix qu'auparavant, ce qui rend cette approche très viable et efficace.

Comblez les dernières lacunes


Notre script a fonctionné pendant quelques semaines, et jusqu'à présent, nous avons réalisé 25 000 comparaisons entre Twitch et PUBG. Cependant, le script ne pouvait pas lier certains streamers, par exemple ceux qui ont leur propre superposition en haut du texte en bas de l'écran.

Nous devons lier ces streamers manuellement. Au lieu de le faire nous-mêmes, nous avons décidé d'ajouter une fonction qui permet à nos visiteurs d'envoyer le nom de tout streamer qu'ils n'ont pas trouvé dans notre base de données:


Nous serons heureux de continuer à expérimenter les méthodes d'obtention de telles paires de comptes, et plus encore, nous voulons trouver de nouvelles façons d'utiliser les informations existantes. Attendez-vous à de nouveaux articles de notre part!

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


All Articles