Hearthstone

Okiem projektantów: balans Areny z naukowej perspektywy

Okiem projektantów: balans Areny z naukowej perspektywy

Cześć! Jestem Tian, starszy analityk danych w zespole Hearthstone. Dzisiaj omówimy procesy matematyczne, które stoją za balansem na Arenie.

Arena nigdy nie cichnie od rozgrywanych tam pojedynków. Uzyskujemy w ten sposób ogromną ilość danych, które pomagają nam później usprawnić balans tego trybu. To NAPRAWDĘ dużo danych. Gdybym miał dołączyć do zespołu Laboratoriów Huka, prawdopodobnie trafiłbym do działu matematycznego!

Gra o balans

ABunchOfKnobs_option02.jpgBalansowanie Areny przeprowadzane jest w dwóch etapach. Najpierw określamy, do których koszyków trafiają poszczególne karty („koszykami” nazywamy podzbiory kart o podobnej mocy). Karta zwykle zostaje przydzielona do dwóch koszyków. Rozdzielamy również legendarne i nielegendarne karty między dwa różne systemy koszyków. O tym, do którego koszyka trafia każda karta, decyduje jej współczynnik zwycięstw i częstotliwość wybierania. Oznacza to, że wszystkie trzy karty, które macie do wyboru, są na podobnym poziomie.

Następnie balansujemy współczynnik zwycięstw wszystkich dziewięciu klas. Najlepiej, żeby był jak najbliższy 50%. Udaje nam się to osiągnąć poprzez wagę przypisaną każdej karcie. „Wagą” nazywamy liczbę, która odzwierciedla względne prawdopodobieństwo pojawienia się karty w selekcji. Im wyższa ta liczba, tym większa szansa, że zobaczycie ją podczas selekcji. Jeśli waga karty ulegnie zmianie, zmieni się również szansa na wystąpienie koszyka, do którego jest przyporządkowana.

Aby ten system działał, potrzeba wielu danych. Na szczęście każdego dnia gracze rozgrywają na Arenie mnóstwo pojedynków, więc tych danych nam nie brakuje.

ThreeSteps_EK_600x260.png

Wykorzystanie danych w celu zmiany balansu sprowadza się do trzech kroków. 

  1. Tworzenie modelu.
  2. Rozwiązywanie problemów optymalizacji z ograniczeniami.
  3. Obliczanie wagi.

Gdy zrobimy już to wszystko, ustalamy terminy wprowadzania poprawek, aby zmiany trafiły do gry.

Tworzenie modelu

Jeśli często gracie na Arenie, być może już wiecie, jak działa obliczanie prawdopodobieństwa wygranej. Niektóre karty mają większy wpływ na to prawdopodobieństwo niż inne. Przykładowo, dobranie w trakcie partii Króla Lisza ma większy wpływ na możliwość wygranej niż dobranie chociażby Śnieżnopłetwego pingwina.

EN_SnowFlippaLichKing.png

Rozważmy sytuację, w której gracz dobiera Króla Lisza na wczesnym etapie gry. Zaczyna się wtedy zastanawiać: „Jakie mam prawdopodobieństwo wygranej po dobraniu tej karty? 60%? 50%? Jak mam to ocenić liczbowo?”. Z kolei po dobraniu w kolejnej turze Lodowej bariery będzie musiał na nowo oszacować tę wartość.

Aby móc odpowiedzieć na pytania tego typu, stworzyliśmy model uczenia maszynowego. Wprowadzamy do komputera mnóstwo danych. Na podstawie szczegółowych informacji na temat wszystkich rozegranych dotąd arenowych pojedynków komputer uczy się przewidywać prawdopodobieństwo wygranej. Innymi słowy, „uczymy” stworzony przez nas model. Dzięki temu może nam dostarczyć informacje na temat prawdopodobieństwa wygranej w przypadku wskazanych kart za każdym razem, gdy sformułujemy takie pytanie.

Rozwiązywanie problemów optymalizacji z ograniczeniami

ABunchOfKnobs_option03.jpgWyobraźmy sobie, że ten model wygląda jak pudełko z pokrętłami, które można regulować. Każde pokrętło łączy się z konkretną kartą. Kręcąc gałką, regulujemy wartości liczbowe związane z tą kartą.

Przyjmijmy, że zanim w ogóle zaczniemy kręcić gałkami, pudełko poinformuje nas, że obecne prawdopodobieństwo wygranej wynosi 40%. Po zmianie ustawienia pokrętła przewidywana wartość zamieni się w 46%. Pojawi się wtedy bardzo ciekawe pytanie: jeśli wyregulujemy szereg pokręteł, czy uda nam się ustawić dokładnie taką wartość, jaką chcemy uzyskać?

To pytanie prowadzi do konieczności sformułowania problemu optymalizacji. Oznacza to, że chcemy znaleźć najlepsze spośród wszystkich możliwych rozwiązań. Dążymy do celu jak najbliższemu przyjętym założeniom poprzez „majstrowanie przy wielu pokrętłach” jednocześnie. Mówiąc językiem matematycznym, minimalizujemy funkcję celu o wektor wielowymiarowy.

Zależy nam na tym, żeby w balansie Areny przewidywany współczynnik zwycięstw był jak najbliższy 50%, niezależnie od klasy. Zmieniamy liczby powiązane z poszczególnymi kartami, żeby osiągnąć ten cel.

Pokręteł nie można jednak przekręcać według uznania – istnieją pewne ograniczenia. Oto kilka z nich, które zostały zaimplementowane do naszego „pudełka”.

  • Nowa liczba powinna znaleźć się w zakresie +/-30% ustalonej wartości. Większe zmiany mogłyby negatywnie wpłynąć na rozgrywkę.
  • Jeśli chcemy osłabić moc danej klasy na Arenie, jej najmocniejsze karty będą musiały pojawiać się rzadziej niż jej słabsze karty. Działanie musi być odwrotne, jeśli chcemy, żeby klasa nabrała mocy.
  • Istnieją też pewne ograniczenia fizyczne, które należy brać pod uwagę, aby problem nadal był prawidłowo sformułowany. Przykładowo, łączna liczba kart o zwiększonym prawdopodobieństwie występowania musi równać się łącznej liczbie kart o zmniejszonym prawdopodobieństwie występowania (suma stała w języku matematycznym).

Obliczanie wagi

HeavyLooking.pngOstatni krok balansowania Areny na podstawie uzyskanych danych to modyfikacja wagi przypisanej każdej karcie na podstawie informacji zdobytych podczas dwóch pierwszych kroków. W uproszczeniu karta o wadze 2,0 pojawia się dwa razy częściej niż karta o wadze 1,0. Dzięki etapowi optymalizacji z ograniczeniami wiemy, które „pokrętła” należy przekręcić oraz w jakim stopniu. Następnie łączymy nasze „gałki” z prawdopodobieństwem wystąpienia danej karty podczas selekcji. Wiemy już, jak bardzo musimy zmienić wagę karty oraz inne modyfikatory związane z cechami kart, takimi jak typ karty (zaklęcie, broń), czy rozszerzenie, z którego pochodzi.

Zapewnianie równych szans

Gdy ten etap balansowania dobiega końca, ogólny współczynnik wygranych we wszystkich dziewięciu klasach powinien być bardzo bliski +/-50%. Dochodzi jednak do rzadkich sytuacji, w których po zmianach balansu ten współczynnik nadal nie jest idealny. Może się tak zdarzyć np. wtedy, gdy współczynnik zwycięstw danej klasy jest zbyt odległy od 50% przed wyregulowaniem wagi kart. Nie zawsze trafiamy idealnie, ale po takich zmianach balans i tak jest lepszy, niż przed nimi.

Dzięki temu, że istnieje system, który pozwala nam analizować dane z Areny z wykorzystaniem zaawansowanej matematyki obliczeniowej i uczenia maszynowego, możemy zadecydować, czy dana klasa wymaga wzmocnienia, czy osłabienia oraz wybrać optymalną wagę wszystkich kart danej klasy.

ABunchOfKnobs_option05.jpg

Mam nadzieję, że zaciekawił was ten opis działania systemu mikromodyfikacji na Arenie! Chętnie dowiemy się, co sądzicie na ten temat. Dajcie nam znać w komentarzach, jeśli macie jeszcze jakieś pytania.

Kolejny artykuł
Hearthstone
8 g.

Pomysły na dzikie talie – 18 stycznia 2019

Trwa wielkie święto Dziczy. Z tej okazji wybraliśmy dla was parę świetnych, dzikich talii!