Színtiszta előny (2. rész)

2009.02.09. 17:42

[1. rész]  2. rész  [3. rész]

Dinamikus Verseny Kiegyensúlyozás

A cikk eredetijét Eduardo Jimenez publikálta a Pure című játékról a Gamasutra portálon

Kezdetben úgy gondoltuk, hogy a nehézség a képesség-értékek segítségével szabályozható. Például a 0,4 és a 0,6 közötti értékeket tekintettük a normál nehézségi foknak, így a legjobb MI versenyző minden képessége 0,6-os értéket kap, míg a legrosszabbé 0,4-est. Ez a megközelítés előidézett néhány problémát:

  • A nehézségi szint általában vagy túl nehéz, vagy túl könnyű lett. Nagyon nehéz megsaccolni a játékos szintjét, így a legtöbb esetben úgy tűnt, hogy a nehézségi szint rosszul van beállítva.
  • Magányos verseny. Ez a mellékhatása volt az előbbinek: ha a nehézségi szint rosszul van beállítva, akkor a játékos túl sok időt tölt egyedül a pályán. Ez nem valami szórakoztató.

Hamarosan rájöttünk, hogy egy a szisztéma messze nem elég rugalmas, és inkább távolodtunk az eredeti célunktól, ami a korrekt, de kihívást jelentő verseny. Emiatt úgy döntöttünk, hogy az eredeti beállításokat „kezdeti képességeknek” nevezzük, és készítünk egy újabb, „jelenlegi képességek” beállítást, ami az előzőn alapszik.

Az „jelenlegi képességek” új táblázatát (a továbbiakban: képességek) úgy alakítottuk ki, hogy módosítókat (ami természetesen lehet pozitív és negatív is) számolunk az eredeti értékekre. Ezek a módosítók a verseny aktuális állapotától függenek. Ezt, az értékeket a verseny közben módosító rendszert neveztük el „Dinamikus Verseny Kiegyensúlyozásnak” (a továbbiakban a DVK rövidítéssel hivatkozunk rá).

Az olvasóban felmerülhet, hogy a DVK első verziója tulajdonképpen a gumiszalag módszer egy kissé bonyolított verziója. Egyébként a gumiszalag kifejezés rossz hangzása miatt is próbáltunk valami másmilyen elnevezést találni. Megpróbáltuk (csapaton belül) elkerülni azt, hogy e kifejezés miatt előítéleteink legyenek a saját módszerünkkel szemben.

A DVK értékeit először a játékos rangsorban elfoglalt helyére alapoztuk. Minden MI karakter megpróbálta az indexe szerinti helyet megszerezni – ez a játékos esetében a 0, ami az első helyet jelentette, míg az első MI játékos a második helyet célozta meg.

Ez az elgondolás kissé segített a problémákon, de messze volt még attól, hogy megoldja azokat. A szisztéma túl rugalmatlan volt és nem működött; az MI játékosok véletlenszerű sorrendben végeztek. És ami a legrosszabb volt, a játékos még mindig túl sok időt versenyzett egyedül.

Azt is szerettük volna, ha a mezőny három bolyra tagozódik. Ezért bevezettük a „csoport” koncepciót a DVK-ba. Ez azt az elképzelést takarta, hogy egy bolyon belül „csoportvezérek” voltak, akik arra törekedtek, hogy a rangsorban beállított pozícióban végezzenek, míg a többiek a következő boly „csoportvezérét” próbálták legyőzni. (Fordító megjegyzése: Ez lehet, hogy egy elírás a cikkben. Nekem nem tűnik logikusnak, hogy a középső bollyal versenyeznek a hátsó boly tagjai. Bár a cikk folytatása nem cáfol rá a leírt mechanizmusra.)

Végül felhagytunk ennek a vonalnak az erőltetésével, hiszen a rendszer túl komplikált volt, és nem működött nagyon jól. A csoportok általában szétszakadoztak, és a csoportvezérek kiszámíthatatlanul szóródtak szét.

Persze ha továbbhaladtunk volna ezen az ösvényen, nyilván jobb eredményeket értünk volna el. De e helyett inkább kitaláltunk egy eltérő, teljesen új koncepciót, amely (erre hamarosan rátérünk) bevált a későbbiekben.

Képességek… újra!

Volt néhány gond, ami csak a DVK implementálása közben bukkant fel.

Először azzal szembesültünk, hogy mi a teendő akkor, ha a képesség értékek kifutnak a 0-tól 1-ig terjedő intervallumból. Úgy határoztuk meg a képességeket, hogy azok értékei mindenképpen 0 és 1 között legyenek. Felfedeztük, hogy a kezdeti képesség értékek olykor kiesnek az intervallumból miután alkalmaztuk a DVK módosítókat.

Hogy megoldjuk ezt a gondot, az értékeket egyszerűen intervallumon belülre vágtuk vissza. Tényleg nem volt szükségünk arra, hogy az MI -20%-on vagy 110%-on teljesítsen. Ha azt szerettük volna, hogy jobban vagy rosszabbul versenyezzenek, akkor egyszerűen új értékeket adtunk a képesség alsó és felső határához.

Rájöttünk, hogy arra van szükségünk a probléma legfontosabb aspektusának kezeléséhez – a mezőny egyben tartásához, és az MI erősségének a játékos szintjéhez való igazításához –, hogy a képességek szisztémával csináljunk valamit. Ezt a felismerést továbbgondolva azonosítottuk a képességek azon tulajdonságait, amelyekkel elérhetjük ezeket a célokat:

  • Széles tartomány. Képességekre van szükségünk ahhoz, hogy meghatározzuk az MI teljesítményét, és minden képességnél sok variációra van szükségünk. Szóval a 0 érték valójában azt jelenti, hogy az MI nevetségesen rossz, míg az 1-es érték igazán erős MI-t jelent. Hogy ha a képességek skálája nem lenne elég széles, akkor olyan helyzetbe kerülnénk, hogy nem tudnánk a játékos teljesítményéhez igazítani az MI-t.
  • Reakcióérzékenység. Nem elég, ha elég széles skálán mozgunk, ha a lépéseket túl nagy fokozatokban tesszük meg. Például, ha egy trükk képesség skálája úgy van felosztva, hogy 0,5 alatt nem sikerül a trükk, míg felette mindenképpen, akkor lehet, hogy nem lesz elég mozgásterünk, hogy megfelelő módon finomhangoljuk a képességeket.

A 0-s tulajdonságú karakter nagyon rosszul fog teljesíteni, míg az 1-es tulajdonságú olyan jól, amennyire csak lehetséges. Így elképzelhető, hogy a viselkedés nem sokat fog változni, ha a 0,3-as értéket 0,4-es vagy 0,45-re emeljük, vagy csökkentjük 0,2-re vagy 0,1-re. Ez használhatatlanná tenné a képességeket, mert a rendszer a változásokra nem reagál a kellő érzékenységgel.

Mivel a legtöbb változtatás meglehetősen kicsi (valószínűleg kisebb, mint 0,2), ezért annyira érzékeny reakcióra van szükségünk, amennyire csak lehetséges. Ha diszkrét skálán mozgunk, akkor sok fokozatra van szükségünk, és arra, hogy a különbség is egyenletesen legyen a fokozatok között.

A változtatások hatása is lineáris kell hogy legyen. Nem túl szerencsés, ha a viselkedés releváns változása az értékek 10%-os változásából adódik. Amennyire csak lehetséges a viselkedés változásának összhangban kell lennie az értékek változásával.

A „verseny szkript”

Az MI még mindig nem teljesített olyan jól, mint amennyire az elvárható egy AAA minőségű next-gen játéktól, arról nem is beszélve, hogy a mi saját mércénket sem ütötte meg. A versenyzés nem volt kihívás, és nem volt elég szórakoztató, a bolyok nem maradtak együtt, és a játékos még mindig a magányos verseny érzését tudhatta magáénak.

Tartottunk egy ötlettelő megbeszélést, és először itt merült fel a „versenyszkript” elképzelés. A terv az volt, hogy a pályatervezők készítenek egy szkriptet, ami leírja, hogyan kéne végbemennie a versenynek. Kiterjedne minden egyes forgatókönyvre, mint például amikor a játékos a legjobb a mezőnyben, vagy amikor a játékos a legrosszabb, és minden egyes felállásban a kettő között.

A versenyek nem mindig az ideális forgatókönyvet követik. Máshogy fogalmazva: a játékos teljesítményétől függenek. A szkript arra kényszeríttette a tervezőket, hogy gondolkodjanak el a különféle lehetőségeken. Ez csak egy útmutatás, szóval semmilyen kötött, lineáris eseménysort nem idéz elő.

Egy példa arra, hogyan kéne festenie a szkriptnek:

  • Ha a játékos jobb, mint a legjobb MI karakter, akkor nem sokkal a verseny kezdete után az MI versenyzők hátsó csoportjának élére kerül. Ezután a verseny első háromnegyed részében megpróbál minél jobb pozíciót kiharcolni magának. Amint elhagy egy csoportot, az üldözőbolyból kiszakad néhány MI versenyző, így elkerülhető, hogy a játékos egyedül maradjon. A verseny utolsó negyedében a játékos már az első helyért küzd.
    Az első bolyban versenyző srácok egy kissé könnyedebben adják oda a vezető helyet, és ha a játékos hibázik, akkor sem húznak el mérföldekre azonnal. Ez különösen a verseny legutolsó szakaszára igaz. Így úgy fog tűnni, hogy a játékos megdolgozott az első helyért, és ezt a pozíciót nem fog elveszíteni egy ostoba hiba miatt a verseny végén. Ez az alapszkript a legtöbb verseny számára.

Hogyan lehetne ezt a tipikus versenyforgatókönyvet a verseny szkript nélkül kivitelezni?

  • Ha a játékos jobb, mint az MI, akkor megszerzi az első helyet a verseny, és körönként növeli az előnyét.
  • Ha a játékos rosszabb, mint az MI, akkor a verseny során végig az utolsó helyen lesz, és a hátránya egyre nő.
  • Ha a játékos jobb, mint a leggyengébb MI, de rosszabb, mint azok, akik az első bolyban vannak, akkor az egész versenyt a hátsó üldözőbolyban fogja tölteni a középső boly felé menetelve, vagy hadakozva az utolsó bollyal.

(Fordító megjegyzése: A szöveg kissé szájbarágósnak tűnhet, de nem akartam semmilyen módon megváltoztatni az eredetit, csak olyan pontosan lefordítani, amennyire csak telik tőlem. A következő, és egyben befejező részben az implementációról olvashatunk részleteket, majd levonjuk a tanulságot. Nemsokára :)

Következő rész




A bejegyzés trackback címe:

https://zsir.blog.hu/api/trackback/id/tr80932745

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.