The BlizzFeed

  • 0 Diablo
  • 0 Hearthstone
  • 0 Heroes of the Storm
  • 0 World of Warcraft
  • 0 Overwatch
  • 0 Starcraft
  • 0 Blizzard
  • 0 Activision-Blizzard

Fejlesztői betekintés - Arena balansz

| ulmi

Rengeteg Arena meccset jétszanak a játékosok, és ez a rengeteg mérkőzés sok adatot is generál, ami a segítségünkre van a játékegyensúly megtartására. "Ha a Booms Lab-ban élnék, vaószínűleg a matematikai részlegen dolgoznék" Monda el Tiam, a Herthsoten Seniro Adatelemzője.

Az egyensúly megtalálása

Az Arena balansznak két fázisa van. Először is, kategóriákra bontjuk a kártyákat (egy kategóriába azonos erősségű lapok kerülnek). Egy adott kártya általában két kategóriába tartozik és ezen felül külön kategóriába kerülnek a Legendary és nem Legendary lapok is. Ezután eldöntjük melyik kategóriába esnek a lapok a győzelmi és a valásztási adatai alapján. Ez azt jelenti, hogy az a három lap amit a választáskor latunk, azonos erősségi kategóriába tartozik. 

Ezután, egyensúlyba hozzuk a 9 class győzelmi arányát. Ideális esetben ez közelít az 50%-hoz. Ezt az egyensúlyt úgy érjük el, hogy "súlyozzuk" a kártyákat. Ez a "súly" egy szám lesz, ami kapcsolódik minden kártyához, ez képviseli annak az esélyét, hogy az adott kártya megjelenik draft közben. Minél nagyobb a "súlya", annál valószínűbb hogy találkozol vele draft közben. Ha ez az érték változik, akkor másik kategóriába is kerül ez alapján. Ennek eléréséhez rengeteg adatra volt szükségönk, de mivel temérdek arena meccset játszottatok ez a sok adat a rendelkezésünkre állt.

Hogy hasznosítani tudjuk az adatokat, amivel a játékot egyensúlyba hozhatjuk három dologra van szükség:

  • Állítsunk össze egy sémát
  • Oldjuk meg az eröltetett optimalizációs problémákat
  • Számoljuk ki a "súlyokat"

Miután ezzel megvagyunk, már csak be kell ütemezni a hotfixeket.

Állítsunk össze egy sémát

Hogy ha gyakori arena játékos vagy, akkor ismerős lehet a győzelmi esély számítása. Egyes kártyák jobban ferdítik az esélyt mint mások. Például ha a Lich Kinget húzzuk az sokkal jobban befolyásolja az esélyedet a győzelemre mintha felhúztad volna a Snowflipper Penguint. Tételezzük fel, hogy felhúzod a Lich King lapot. Ekkor elkezdesz gondolkodni: mik az esélyeim most, hogy megvan a kezembe a Lich King? 60%? 50%? Hogyan tudom ezt számokkal kifejezni? Tovább feltételezve, felhúzod az Ice Barrier lapot a kovetkező körben, ekkor újra kell számolni az esélyeinket mégegyeszer. 

Gépi tanulás segítségével összeállítottunk egy sémát amivel ezeket a kérdéseket meg tudjuk válaszolni. Ezek a számítógépek több tonna adatot dolgoznak fel, felhasználva minden arena játékot amit lejátszottunk, ezen felül megjósolja a győzelem valószínűségét a rendelkezésére alááó információk alapján. Egyszerúbben fogalmazva betanítjuk a sémát amit összeállítottunk. Ezért képes a rendszer megválaszolni midnen egyes alkalommal a győzelmi esélyeket adott kártya esetén.

Oldjuk meg az eröltetett optimalizációs problémákat

Ugorjunk csak vissza egy lépést, és képzeljük el, hogy a sémánk egy doboz, amin rengeteg gomb van. Minden egyes gomb egy adott kártyához tartozik. Amikor a gombot állítjuk, igazából a kértyéhoz tartozó értékeket babráljuk.

Tegyük fel, hogy mielőtt a gombot állítanánk, a doboz elmondja nekünk hogy az aktuális győzelmi valószínűség 40%. Miután állítottunk a gombon, megjósolt győzelmi esély 46%-ra módosult. Ez egy érdekes kérdést vet fel: ha egy csomó gombot állítasz, képes leszel beállítani a győzelem esélyét egy olyan értékre amit te szeretnél? Ez a kérdés vezet el ahoz az ötlethez hogy készítenünk kell egy optimalizált problémát. Tehát, minden lehetséges megoldás közül mi a legjobbat szeretnénk megvalósítani. Olyan közel akarunk kerülni a célokhoz, amennyire csak lehet azzal, hogy "gombokkal babrálunk". Magyarul, feláldozunk apró dolgokat a nagy cél elérése érdekében. Az arena egyesúlyát 50% körül szeretnénk tartani azzal, hogy változtatjuk a kátyákhoz tartozó számokat minden class számára.

Azonba, a gombok önkényesen és képesek változni bizonyos korlátok között. Itt van pár korlát, amit a "dobozunkhoz" programoztunk:

  • Az új szám a régihez képest maximum +/-30%-ban térhet el. Drasztikus változtatások elronthatják a játékélményt.
  • Ha szeretnénk egy class erősségét csökkenteni, a legerőseb lapjait levesebbszer kell felhozni mint a gyengébb lapjait. Ugynez igaz ha fordítva szeretnénk eljárni és a classt erősíteni akarjuk.
  • Vannak erős korlátozások hogy a probléma érvényes maradjon. Például, az összes előfordulás valőszínűsége ugyanannyinak kell lennie mint az összes vereség. 

Számoljuk ki a "súlyokat"

Utolsó lépésként beállítjuk a súlyokat minden kártyához az első két lépés adatait felhasználva. Általánosságban, ha egy lapnak 2.0 a súlya, akkor kétszer olyan gyakran jelenik meg, mint amelyiknek a súlya 1.0. Az eröltetett optimalizásió elmondja nekünk melyik gombhoz kell nyúlni és mennyit kell rajta állítani. Minden gombot úgy kezelünk, hogy a hozzá tartozó lap feljöhet draft közben. Mostmár tudjuk mennyi kell módosítani az adott lap súlyán, nem számolva az olyan módosítókkal mint a kártya jellemzője (pl. spell vagy weapon, melyik kiegészítőben van)

A pálya kiegyenlítése

Miután a balansz ezen részével megvagyunk, az átfogó győzelmi esély minden classhoz +/-50% körül kell lennie. Azonban, előfordulnak ritka esetek, amikor a győzelem arány a balansz után sem ideális. Ez akkor fordul elő, amikor egy bizonyos class győzelmi mutatója messye van az 50%-tól mielőtt a súlyozást csinálnánk. Ezekben az esetekben lehet, hogy nem értük el a kitűzött számokat, de még mindig jobban néznek ki mint a balanz előtt. Köszönhetően a fejlett gépi tanulási képességeknek és hgoy minden arena adatot elemez a rendszer, képesek vagyunk meghatározni, hogy egy adott class-t erősíteni vagy gyengíteni kell, és ehhez mérten állítani a súlyozást.

Reméljük érdekesnek találtátok ezt a kis betekintést az arena balansz háttérvilágába. Érdekes információkkal gazdagodtunk véleményem szerint.

Blizzard