Hearthstone

Einblicke der Entwickler: Die Wissenschaft hinter der Balance in der Arena

Einblicke der Entwickler: Die Wissenschaft hinter der Balance in der Arena

Hi, ich bin Tian. Ich arbeite als Senior Data Scientist im Hearthstone-Team. Heute erzähle ich euch mehr über die Mathematik hinter der Balance in der Arena.

Es werden dauernd Arenamatches gespielt, und die generieren massenweise Daten, mit denen wir die Balance in der Arena gewährleisten können. Es sind wirklich BERGE von Daten. Wenn ich bei Bumm Labortechnologie arbeiten würde, wäre ich vermutlich Teil der Abteilung für mathematische Wissenschaft!

Der Balanceakt mit der Spielbalance

ABunchOfKnobs_option02.jpgDie Balanceänderungen in der Arena werden in zwei Phasen durchgeführt. Als erstes legen wir fest, zu welcher Gruppe (oder Gruppen) jede einzelne Karte gehört. Als Gruppe bezeichnen wir eine bestimmte Teilmenge an Karten mit ähnlicher Leistung. Jede Karte passt für gewöhnlich in zwei Gruppen. Legendäre und nicht-legendäre Karten werden außerdem in zwei unterschiedliche Gruppensysteme einsortiert. Wir ermitteln die Gruppe jeder Karte mithilfe ihrer Siegesrate und anhand daran, wie häufig sie bei Spielen ausgewählt wird. Das bedeutet, dass jede der drei Karten, die ihr auswählen könnt, ähnlich mächtig sind.

Danach gleichen wir die Siegesrate für alle neun Klassen an. Idealerweise sollte sie so nah wie möglich an 50 % liegen. Deshalb passen wir die Gewichtung der Karten an. Die Gewichtung ist ein Wert, der die relative Häufigkeit repräsentiert, mit der eine Karte bei der Deckzusammenstellung auftaucht. Je höher dieser Wert ist, desto wahrscheinlicher ist es, dass die betroffene Karte bei der Deckzusammenstellung zur Wahl steht. Wenn die Gewichtung einer Karte verändert wird, ändert sich auch die Wahrscheinlichkeit, mit der die Gruppe auftaucht, der diese Karte zugeordnet ist.

Damit dieses System funktioniert, brauchen wir eine ganze Menge Daten, aber dank der gewaltigen Anzahl an gespielten Arenapartien pro Tag haben wir genügend verwendbare Daten zur Verfügung.

ThreeSteps_EK_600x260.png

Um mithilfe dieser Daten eine ausbalancierte Arenaerfahrung zu schaffen, braucht es drei Schritte.

  1. Ein Modell aufstellen
  2. Eingeschränkte Optimierungsgleichungen lösen
  3. Die Gewichtung errechnen

Wenn das alles geschafft ist, müssen wir einen Termin für den Hotfix festlegen, mit dem wir die Änderungen dann durchführen.

Ein Modell aufstellen

Wenn ihr häufig in der Arena spielt, dann habt ihr bestimmt eine Ahnung von der Berechnung der Siegeswahrscheinlichkeit. Manche Karten wirken sich stärker auf diese Wahrscheinlichkeit aus als andere. Der Lichkönig würde zum Beispiel die Siegeswahrscheinlichkeit viel stärker beeinflussen als ein Schneewatschler.

EN_SnowFlippaLichKing.png

Nehmen wir mal an, ihr zieht in einem Spiel die Karte Der Lichkönig. Vielleicht denkt ihr euch dann: „Wie beeinflusst Der Lichkönig jetzt meine Siegeswahrscheinlichkeit? Liegt sie jetzt bei 60 %? 50 %? Wie kann ich das quantitativ feststellen?“ Nehmen wir außerdem an, dass ihr im nächsten Zug Eisbarriere zieht – jetzt müsst ihr eure Siegeswahrscheinlichkeit nochmal neu berechnen.

Um diese Fragen zu beantworten, haben wir ein Modell für maschinelles Lernen entwickelt. Wir füttern den Computer mit jeder Menge Daten, die wir aus allen gespielten Arenamatches gewonnen haben. Aus diesen Daten lernt er, die Siegeswahrscheinlichkeit basierend anhand der vorhandenen Informationen vorauszusagen. Etwas formeller ausgedrückt „trainieren“ wir unser Modell. Dadurch kann es jedes Mal die Frage nach der Siegeswahrscheinlichkeit basierend auf X gezogenen Karten beantworten.

Eingeschränkte Optimierungsgleichungen lösen

ABunchOfKnobs_option03.jpgStellen wir uns das Modell einmal als Gerät mit lauter Knöpfen und Reglern vor. Jeder davon gehört zu einer bestimmten Karte. Wenn man an einem Regler dreht, verändern sich die mit dieser Karte verbundenen Zahlen.

Nehmen wir mal an, das Gerät zeigt gerade an, dass die momentane Siegeswahrscheinlichkeit bei 40 % liegt. Dreht man dann an dem Regler, springt die Anzeige auf 46 %. Das wirft eine sehr interessante Frage auf: Wenn man einen Regler nach dem anderen dreht, kann man dann die Siegeswahrscheinlichkeit nach seinen Wünschen anpassen?

Um diese Frage zu beantworten, müssen wir eine Optimierungsgleichung aufstellen. Mathematisch gesehen wollen wir unter allen möglichen Lösungen bestmögliche herausfinden. Wir wollen ein Endergebnis schaffen, das so nah wie möglich an unsere Vorstellung heranreicht, indem wir gleichzeitig „an ein paar Reglern drehen“. Formal gesehen minimieren wir eine Zielfunktion über einen hochdimensionalen Vektor.

Bei der Balance der Arena wollen wir, dass die vorausgesagte Siegeswahrscheinlichkeit unabhängig von der Klasse so nah wie möglich bei 50 % liegt. Um dieses Ziel zu erreichen, passen wir die mit jeder Karte verbundenen Zahlen an.

Allerdings können die Regler nicht einfach beliebig gedreht werden – es gibt einige Einschränkungen. Hier findet ihr eine Liste mit ein paar der Einschränkungen, die wir in unser „Gerät“ einprogrammiert haben.

  • Die neue Zahl soll im Bereich von +/-30 % eines festgelegten Werts liegen. Drastische Änderungen könnten der Gameplayerfahrung schaden.
  • Wenn wir die Effektivität einer Klasse in der Arena verringern wollen, müssen ihre stärksten Karten seltener auftauchen als schwächere Klassenkarten. Wenn wir eine Klasse stärken wollen, ist es genau umgekehrt.
  • Es gibt einige physische Einschränkungen, durch die diese Gleichung gültig bleibt. Zum Beispiel müssen der Gesamtgewinn an Erscheinungswahrscheinlichkeit gleich dem Gesamtverlust (mathematisch ausgedrückt also eine Nullsumme) sein.

Die Gewichtung errechnen

HeavyLooking.pngDer letzte Schritt bei der Verwendung von Arenadaten für die Spielbalance ist es, die Gewichtung aller Karten basierend auf den Ergebnissen der ersten beiden Schritte anzupassen. Generell erscheint eine Karte mit der Gewichtung 2,0 doppelt so häufig wie eine Karte mit der Gewichtung 1,0. Die eingeschränkte Optimierung sagt uns, an welchen „Reglern“ wir drehen müssen und wie stark. Dann weisen wir jeder Karte, die bei der Deckzusammenstellung auftauchen kann, einen „Regler“ zu. Jetzt wissen wir, wie stark wir die Gewichtung jeder Karte anpassen müssen, abgesehen von anderen Modifikatoren basierend auf den Eigenschaften der Karte (z. B. Zauber, Waffe, aus welcher Erweiterung die Karte stammt usw.).

Gleiche Chancen für alle

Wenn diese Phase abgeschlossen ist, sollte die generelle Siegesrate aller neun Klassen knapp um die +/-50 % liegen. Allerdings war in seltenen Fällen die Siegesrate nach den Balanceänderungen immer noch nicht ideal. Das kann passieren, wenn die Siegesrate einer bestimmten Klasse vor den Anpassungen an der Gewichtung zu weit von den 50 % entfernt ist. Zwar sind dann die Zahlen nicht optimal, aber immer noch besser als vorher.

Dadurch, dass dieses System die Arenadaten für komplizierte Rechenvorgänge und maschinelles Lernen verwendet, können wir feststellen, ob eine Klasse verstärkt oder abgeschwächt werden muss, und dann die optimale Gewichtung für jede einzelne Karte jeder Klassen auswählen.

ABunchOfKnobs_option05.jpg

Ich hoffe, diese Einblicke in unser System für Mikroanpassungen an der Arena haben euch gefallen! Wir interessieren uns sehr für eure Meinung, lasst uns also in den Kommentaren wissen, wenn ihr irgendwelche Fragen habt.

Nächster Beitrag

Empfohlene Artikel