Nastavak na temu matematike u igrama, što mi znači +2 armora što mi daje paladinova aura?
Slično
attack i
defence ratingu igrice mogu imati mehanizam
damagea i
armora/
resistencea. Tipičan primjer su strategije kao npr. Warcraft III i Starcraft. Ako se usredotočimo na strategije, dva su pristupa: oduzimanje i dijeljenje vatrene moći napada. RPGovi ili kombiniraju jedan od ova dva pristupa ili jednostavno svrstavaju
armor pod
defense rating.
Damage minus armor
Starcraft je primjer igre u kojoj se primjenjuje oduzimanje. Napad od 12
damagea protiv jedinice s 3
armora oduzima 12-3=9
hit pointa. Posljedice ovakvog pristupa su da ako
damage i
armor nisu sumjerljivi da se gubi značaj ili
damagea ili
armora. Ako je
armor veći od
damage tada meta ne bi trebala primiti nikakvu štetu. Dizajnerima Starcrafta se to nije svidjelo pa su i igru stavili pravilo da
armor ne može smanjiti
damage ispod 0.5. U obrnutom slučaju, kada je
damage puno veći od
armora, utjecaj
armora postaje nezamjetan. Utjeće na račun ali čisto simbolički. Npr. ako napač vrši napad od 1100
damagea na meti s 2
armora, taj
armor neće bitno utjecati na ishod, niti će nadogradnje koje povećavaju
armor mete za 1 bitno joj promijeniti izglede za preživljavanje.
Damage podijeljen s armorom
Ovo izgleda malo neobično ali takvog oblika je formula za
damage reduction u Warcraftu III (zapravo, količnik je 1+6*
armor). Za razliku od pristupa s oduzimanjem, pristup s dijeljenjem nema problem nesrazmjera, slab
armor će malo umanjivati
damage, jak
armor će jako umanjivati
damage. Naime, štos je u tome da postotak reduciranog
damage ne ovisi o iznosu
damagea. To je po mom mišljenju ujedno i loša strana ovog pristupa jer na taj način
armor nije ništa drugo nego +%
hit pointa, odnosno isti efekt se postiže povećanjem
hit pointa jedinice.
Jedan neobičan pristup
Pišući ovaj tekst, sjetih se jedne igre koja je imala zanimljiv pristup. U strateškoj igri Warlord Battlecry koristi se nešto slično geometrijskom redu. Ako je
armor manji ili jednak
damageu, za svaki poen
armora damage se umanjuje za 0.5. Ak je veći od
damaga tada se efekt dodatnog
armora prepolavlja. Primjer, recimo da napadač vrši napad s 10
damagea i da meta ima 25
armora. Prvih 10 poena
armora reducira
damage za 5 (10*0.5), sljedećih 10 za 2.5 (10*0.25) i zadnjih 5 za 0,625 (5*0.125) i napadač vrši ukupno 10 -5 - 2.5 - 0.625 = 1.875 poena štete. Znači za svaki višekratnik
armor oduzima dodatan
damage ali s dvostruko manjim faktorom. To je približno jednako eksponencijalnom utjecaju, pogotovo za veće vrijednosti
armora:
Usporedba
Očigledno je da sam protiv Warcraftovog
damage reduction pristupa (jer utjecaj
armora ne može ne ovisiti o napadaču). Pristup s oduzimanjem ima mane kada su
damage i
armor u nesrazmjeru. Kada je
damage puno veći od
armora, zapravo je i logično da bi
armor trebao imati jako mal utjecaj. Činjenice da se moraju izmišljati dodatna pravila kada je
armor veći od
damagea i da se brojke ponašaju skokovito kad je
damage jedva nešto veći od
armora razlozi zašto ne odabrati takav pristup.
Pristup kojeg koristi igre Warlords Battlecry je zanimljiv i nakon malo analize, rekao bih da ispunjava očekivanja. Nedavno sam i sam smišljao formule za utjecaj
armora. Formula do koje sam došao slična je onoj koja se obično koristi za vjerojatnost pogotka a izgleda ovako:
Usporedbe radi napravih sljedeća dva grafa. Prvi prikazuje funkcije za
armor = 10 (pretežno slučajevi kada je
damage veći od
armora) a drugi za
armor = 40 (slučajevi kada je
armor veći od
damagea).

Kao što se može iz ovog grafa vidjeti, pristup iz Warlords Battlecrya za veće vrijednosti damagea u odnosu na armor prelazi u obično oduzimanje (ali s duplo manjom vrijednosti za armor). Kontinuirana inačica WB pristupa tj. eksponencijalna funkcija se u području kada je armor veći od damagea gotovo poklapa s originalnom WB metodom. Zbog toga i zato što je ta inačica lakša za ukucavanje u Excel (lijenost FTW i zapravo sam koristio OpenOffice ekvivalent za MS Excel), na drugom grafu nije prikazana originalna WB metoda. U području gdje je armor manji od damagea, kontinuirana WB inačica konvergira u obično oduzimanje ali s neobičnom vrijednosti za armor (armor*ln(2)). No ta neobičnost ionako nije važna jer je tada damage ionako ogroman u usporedbi s armorom. Ono što je bitno je činjenica da se na početku ponaša slično kao i originalna WB metoda, da ima približno jednak utjecaj kao obično oduzimanje s armor/2. Moja funkcija također konvergira u obično oduzimanje ali za razliku od WB pristupa, konvergira u pravo oduzimanje kakvo je u Starcraftu i to relativno brzo.

Na koncu, kontinuirana inačica WB pristupa mi se čini kao najelegantniji pristup. Doslovce one liner i jasno razumljiva formula. Plus k tome, bazom potencije se može podešavati strmina funkcije.