Finde Twitch Streamers in einem PUBG-Match

Ursprünglicher Autor: minmax.gg
  • Übersetzung
Bild

Vor kurzem haben wir zusammen mit den Replays minmax.gg/chickendinner eine neue Funktion veröffentlicht, die Videos der PUBG Twitch-Streamers zeigt, die am Match teilnehmen. Um dies zu implementieren, mussten wir die Twitch-Streamers anhand ihrer Namen im Spiel erkennen, was sich als ziemlich interessante Aufgabe herausstellte.


Unsere neue Twitch-Funktion in Aktion.

Die Wahrscheinlichkeit, dass Sie mit einem Streamer in einem Spiel spielen


Bevor wir mit der Entwicklung dieser Funktion begonnen haben, wollten wir sicherstellen, dass die Wahrscheinlichkeit eines Spiels, bei dem einige Spieler auf Twitch strömen, groß genug ist, um unsere Bemühungen zu rechtfertigen. Wir können eine sehr grobe Schätzung vornehmen, indem wir die Anzahl der aktiven Spieler betrachten und mit der Anzahl der aktiven Sendungen vergleichen.

Zum Zeitpunkt dieses Schreibens wurde das Spiel auf Twitch um 2100 Benutzer übertragen, und auf Steam gab es etwa 700 Tausend aktive Spieler in PUBG. Dies bedeutet, dass die Streamers zu diesem Zeitpunkt ungefähr 0,3% der Spielerbasis ausmachten.


Wenn man bedenkt, dass 100 Leute am häufigsten in einem Match spielen, ist die Wahrscheinlichkeit, dass mindestens einer von ihnen ein Streamer ist, das Gegenteil der Wahrscheinlichkeit, dass niemand ein Streamer sein wird . Da die Wahrscheinlichkeit, dass ein Spieler kein Streamer ist, 99,7% beträgt, ist die Wahrscheinlichkeit, dass keiner der 100 Spieler ein Streamer ist, 0,997 gegenüber der Potenz von 100, das heißt 0,74. Mit anderen Worten: In jedem Spiel besteht eine Chance von etwa 25 Prozent, mindestens einen Spieler zu finden, der zu Twitch strömt.

Es ist erwähnenswert, dass wir bei Twitch von einer starken Verschiebung in Richtung Nordamerika im Vergleich zur gesamten PUBG-Spielerbasis ausgehen können. Wenn Sie also Spiele aus Nordamerika ansehen, ist der Prozentsatz wahrscheinlich viel höher.

Erraten Sie die Namen


Nun, da wir wissen, dass es in jedem ausgewählten Spiel eine gute Chance gibt, einen Streamer zu finden, wie können wir wissen, dass der Spieler das Spiel auf Twitch streamt?

Für weitere Boni können Sie Ihr Twitch-Konto mit dem Spiel verbinden. Leider sind diese Daten nicht über die PUBG-API verfügbar . Wir brauchen eine andere Möglichkeit, den Namen des Spielers an einen Streamer auf Twitch zu binden.

Schauen wir uns ein hypothetisches Bandlaufwerk namens Mitch an . Mitch spielt regelmäßig PUBG, aber sein Twitch-Kanal hat noch nicht die Ansichten erreicht, von denen er träumt. Nach Überlegung ändert er seinen Namen im Spiel in TwitchMitch . Jetzt wissen alle, dass Mitch auf Twitch strömt.

Dieses Prinzip tritt sehr oft auf, manchmal mit geringfügigen Abweichungen:TTVMitch oder Mitch_TV . Solche Namen können programmgesteuert erkannt und auf Twitch ein Konto ermittelt werden, sodass wir Videos zur Anzeige in der Spielwiedergabe erhalten können.

Manuelle Zuordnung


Dieser Ansatz gibt uns einen sehr guten Anhaltspunkt, ist aber bei weitem nicht ausreichend. Die Namen der beliebtesten Streamer stimmen nicht mit diesem Muster überein. Um sie zu entdecken, müssen Sie den PUBG-Account einzeln mit dem Namen des Twitch-Kanals verknüpfen.

Um dies zu bewältigen, begannen wir mit der manuellen Suche nach den beliebtesten Streamern in Twitch und zeichnet die Kontonamen des Spiels auf, die auf dem Bildschirm sichtbar sind. Wenn Sie Glück haben, können Sie den Moment erfassen, in dem der Spieler in der Lobby wartet, wo Sie den Namen an mehreren Stellen finden können:


Es ist jedoch viel wahrscheinlicher, dass ein Spieler bereits in einem Match spielt. Wenn er mit einer Mannschaft spielt, ist sein Name immer in der unteren linken Ecke sichtbar:


Es ist jedoch zu berechnen, welcher der Namen zu ihm gehört, da es nicht immer derselbe sein wird. Der einfachste Weg, dies zu tun, ist die Minikarte in der rechten unteren Ecke, die sich auf der Markierung des Spielers befindet und mit einer Nummer und Farbe markiert ist.

Der ganzheitlichste Ansatz wäre, die untere Mitte des Bildschirms zu erkunden, wo Sie Folgendes finden können:


Dieser Text enthält den Kontonamen, die aktuelle Version des Spiels, die letzten 6 Zeichen der Match-ID und die Serverregion. Es lohnt sich zu bedenken, dass es nicht immer so sauber ist, wie es oben gezeigt ist, da es normalerweise mit dem, was hinter dem Bildschirm passiert, vermischt wird. Der Text ist klein, dh er kann unscharf werden und schlecht lesbar sein, wenn ernsthafte Videoartefakte auftreten. Aber früher oder später wirst du einen guten Rahmen finden, um ihn zu lesen.

Vielleicht überlegen Sie bereits, was wir damals realisiert haben - eine ideale Aufgabe für eine automatische Computerlösung!

Computer Vision


Unter idealen Bedingungen sollte der OCR- Algorithmus erkennen, was im folgenden Text geschrieben wird. Nachdem wir einige Optionen ausprobiert hatten, entschieden wir uns schließlich dafür, dass die Google Cloud Vision API die besten Ergebnisse liefert . Wir können ein Skript erstellen, das Folgendes ausführt:

  1. Empfängt eine Live-Übertragung von PUBG und schneidet den unteren Teil des Screenshots ab ( Twitch API bietet ein Vorschaubild in voller Größe, daher müssen wir keine Screenshots selbst erstellen).
  2. Sendet einen Screenshot an die Cloud Vision-API und analysiert den Namen des Players vom Ergebnis.
  3. Durch die PUBG-API wird der Spieler davon überzeugt, dass der Spieler existiert, und speichert dann die Bindung des Twitch-Kontos an das PUBG-Konto in unserer Datenbank.

Bis auf ein kleines Detail funktioniert es hervorragend: Google verlangt für jede tausend Anfragen an die Cloud Vision-API 1,5 US-Dollar. Zu jeder Zeit können ungefähr 2-3 Tausend aktive Streamer sein, so dass uns sogar ein einzelner Skriptstart bis zu 4,5 Dollar kosten wird. In Anbetracht der Tatsache, dass wir höchstwahrscheinlich viele Screenshots mit unlesbarem Text erhalten werden, müssen Sie das Skript mehrmals ausführen, um eine sinnvolle Menge an Daten zu erhalten. Mit anderen Worten, dieser Ansatz wird schnell zu einem sehr kostspieligen Unterfangen. Glücklicherweise können wir Anfragen an Cloud Vision etwas intelligenter organisieren. Wir können die Tatsache nutzen, dass Google unabhängig von der Größe des Bildes die Zahlung für individuelle Anfragen verlangt. Das heißt, wir können mehrere Bilder in ein Raster einbetten:


Dann senden wir dieses Bildraster an die API und binden den resultierenden Text an das Bandlaufwerk, das dem Bereich entspricht, in dem der Text gefunden wurde.

Die Größe der gleichzeitig von Google gesendeten Daten ist begrenzt. Daher werden 300 zusammengeklebte Bilder angefordert. Dies bedeutet, dass wir jetzt das gleiche Skript 300-mal zum gleichen Preis wie zuvor ausführen können, was diesen Ansatz sehr praktikabel und effizient macht.

Füllen Sie die letzten Felder aus


Unser Skript hat ein paar Wochen gearbeitet, und wir haben bisher 25 Tausend Vergleiche zwischen Twitch und PUBG erzielt. Einige Streamers konnten das Skript jedoch nicht binden, z. B. diejenigen, die ihre eigene Überlagerung über dem Text am unteren Rand des Bildschirms haben.

Diese Streamers müssen wir manuell binden. Anstatt dies alleine zu tun, haben wir beschlossen, eine Funktion hinzuzufügen, mit der unsere Besucher den Namen eines Bandlaufwerks senden können, das sie nicht in unserer Datenbank gefunden haben:


Wir experimentieren gerne mit Möglichkeiten, um solche Kontenpaare zu erhalten, und noch mehr möchten wir neue Wege finden, um die bereits verfügbaren Informationen zu nutzen. Warten Sie auf neue Artikel von uns!

Jetzt auch beliebt: