Aréna egyensúly tudományosan
A mai napon az aréna egyensúly mögött rejlő matematikáról lesz szó, melyekről Tian, a Hearthstone vezető adattudósa számol be.
Az aréna súlyozásokról és megjelenési arányokról ide kattintva olvashattok (a Hearthstone Wiki > Aréna menüpontjában).
Blizzard Entertainment cikkének a fordítása
Állandóan zajlanak az aréna meccsek, azok pedig folyamatosan adatok generálnak, - SOK adatot - amit arra tudunk felhasználni, hogy az aréna sokkal kiegyensúlyozottabb legyen. Ha a Boom Labs-ben lennék, valószínűleg a matematikai tudományok részlegén dolgoznék!
Az egyensúly megteremtése
Az aréna kiegyensúlyozása két fázisban történik. Először is meghatározzuk, hogy melyik kalapba melyik kártyák kerülnek (egy kalapban hasonlóan teljesítő kártyák vannak). Egy kártya általánosságban két kalapba kerül, továbbá a Legendary-kat és nem-Legendary-kat két különböző kalapba helyezzük. Eldöntjük, hogy mely kalapokba kerülnek a kártyák a győzelmi arányuk és a kiválasztási arányuk alapján. Ez azt jelenti, hogy amikor látod egymás mellett a három kártyát a kiválasztási folyamatban, akkor az a három kártya hasonló erősségi szinten van.
Ezt követően a nyerési arányt egyenlítjük ki a kilenc kaszt között. Legyen minél közelebb az 50%-hoz Ezt úgy érjük el, hogy minden egyes kártya súlyozását módosítjuk. A kártya súlya egy szám, ami azt jelzi, hogy milyen gyakorisággal fordulhat elő az adott lap a draftban. Minél több egy kártya súlya, annál nagyobb eséllyel láthatjátok a draftban Ha egy kártya súlya megváltozott, az megváltoztatja azt is, hogy az a kalap, amiben benne van, milyen gyakorisággal fog megjelenni.
Sok adatra van szükség ahhoz, hogy a rendszer működjön, de szerencsére nagyon sok aréna meccset játszotok napi szinten, így bőven van adatunk, amivel dolgozhatunk.
Három dologra van szükségünk ahhoz, hogy ezeket az adatokat hasznosítani is tudjuk úgy, hogy az hatással legyen a játék egyensúlyára.
- Felépíteni egy modellt
- Megoldani az erősen lekorlátozott optimalizációs problémákat (legjobb egyensúly eltalálása)
- Kiszámolni a súlyokat
Miután ez mind elkészült, időzítenünk kell a hotfixeket, hogy aktiváljuk a változásokat.
Modell felépítése
Ha sűrűn arénázol, akkor talán ismerős lehet a győzelmi esély kiszámítása. Néhány kártya jobban ferdíti ezt az esélyt, mint mások. Például, ha felhúzod a The Lich King-et egy meccsen, akkor az lényegesen jobban befolyásolná a győzelmi esélyedet, mint a Snowflipper Penguin felhúzása.
Feltételezzük, hogy felhúztad a The Lich King-et. Talán ezen gondolkozol: "Mik lehetnek most a győzelmi esélyeim, hogy felhúztam a Lich Kinget? 60%, vagy 50%? Hogyan tudnám ezt számokkal kifejezni?" Továbbá feltételezzük, hogy egy Ice Barrier-t is felhúzol majd a következő körben - most újra szeretnéd kiszámolni a győzelmi esélyeidet.
Ezért készítettünk egy gépi tanulásos modellt, ami megválaszolja ezeket a kérdéseket. A gép milliónyi adatok kap, felhasználja a részleteket minden egyes lejátszott aréna mérkőzésből, majd megtanulja, hogyan jósolja meg a győzelmi esélyt a begyűjtött információi alapján. Kissé formálisabban kifejezve, "betanítjuk" a modellt, amit készítettünk. Ezáltal képes választ adni a győzelmi esélyre minden egyes alkalommal az adott ("X") kártya felhúzása után.
Megoldani az erősen lekorlátozott optimalizációs problémákat (legjobb egyensúly eltalálása)
Lépjünk egyet vissza, és képzeljük el azt, hogy a modell egy doboz, ami tele van gombokkal. Minden egyes gomb egy kártyához van kötve Miután állítasz az egyik gombon, akkor valójában a kártyához tartozó értékeket állítod be.
Tegyük fel, hogy mielőtt módosítanál egy gombon, a doboz elárulja neked, hogy a jelenlegi győzelmi esély 40%. Miután állítasz a gombon, a megjósolt győzelmi esély 46%-ra nő. Ez egy nagyon érdekes kérdést vet fel: Ha egy csomó gombon állítasz, képes leszel a győzelmi esélyeket úgy beállítani, ahogyan szeretnéd?
Ebből a kérdésről született meg az az ötlet, hogy egy optimalizált problémát hozzunk létre. Matematikailag fogalmazva, meg szeretnénk találni a legjobb megoldást az összes lehetséges megoldásból. Szeretnénk egy olyan célt elérni, ami a lehető legközelebb áll ahhoz, amit "egy csomó gomb átállításával" megvalóíthatunk.
Az aréna kiegyensúlyozásánál szeretnénk, hogy a megjósolható győzelmi arány a lehető legközelebb álljon az 50%-hoz kaszttól függetlenül, és ennek elérése érdekében megváltoztatjuk a kártyákhoz tartozó számokat.
Azonban a gombokat nem lehet önkényesen állítani - vannak korlátok Íme néhány korlát, amit beleprogramoztunk a mi kis "dobozunkba"
- Az új szám legfeljebb +/-30%-kal térhet el az eredetihez képest. A drasztikus változások potenciálisan árthatnak a játékélménynek.
- Ha csökkenteni szeretnénk egy kaszt erejét az Arénában, akkor a kaszt legerősebb kártyájának ritkábban kell megjelennie, mint a kevésbé erős kártyáknak. Ez fordítva is igaz, ha a kasztot erősíteni szeretnénk.
- Vannak néhány felülírhatatlan korlátozások is annak érdekében, hogy a képlet érvényes maradjon. Például, amennyit növelünk a megjlenési eseélyeken, ugyanannyinak kell lennie a csökkenésnek is a másik oldalon.
Kiszámolni a súlyokat
Az utolsó lépés ahhoz, hogy hatni tudjunk az egyensúlyra, a súlyok beállítása minden egyes kártyához az előző két lépés során kapott adatokból. Általánosságban egy 2.0-ás súlyozású kártya kétszer olyan gyakran jelenik meg, mint egy 1.0-ás súlyozású. A leszűkített optimalizáció elárulja, hogy mely gombokat kell módosítanunk és mennyire. Ezt követően minden egyes gombot összekötünk minden egyes kártyával, ami megjelenhet a draftban. Most már tudjuk mennyit kell változtatnunk a kártyák súlyain, nem számolva a további módosító tényezőket, mint például: egy spell, vagy egy fegyver-e az adott kártya, melyik kiegészítőből származik, stb.
Következő szintre emelni a játékteret
Miután az egyensúly ezen fázisával megvagyunk, mind a kilenc kaszt győzelmi aránya 50% körül kell, hogy mozogjon. Azonban előfordultak olyan ritka esetek, amikor az egyensúly továbbra sem volt kielégítő. Ez akkor fordulhat elő, ha egy bizonyos kaszt győzelmi aránya túlságosan messze áll az 50%-tól, mielőtt nekiesünk a súlyok beállításának. Ez ilyen esetekben valószínűleg nem érjük el az ideális számokat, de még mindig jobb lesz a helyzet, mint előtte volt.
A rendszerünk képes feldolgozni az aréna adatokat fejlett matmetikával és gépi tanulással, ennek köszönhetően pedig képesek vagyunk meghatározni, hogy egy kasztot erősíteni, vagy gyengíteni kell, majd kiválaszthatjuk a megfelelő súlyt minden egyes kártyának, minden egyes kaszthoz.
Reméljük, hogy ez a betekintés az aréna "mikro-módosításokat" végrehajtó rendszerébe izgalmasnak bizonyult.
Forrás: PlayHearthstone - Fejlesztői betekintés: Aréna egyensúly tudományosan