Dobrý deň prajem všetkým, v tomto článku by som rád spravil kompletnú analýzu equipment modulu a jeho dopad na silu úderu (damage). V poslednej dobe sme zaregistrovali zopár článkov na túto tému, ja by som sa však pokúsil podať komplexný pohľad a presvedčiť každého o tom, ako sa veci majú a kde je pravda skrytá naozaj (ak si to prečítate celé tak gratulujem
). Ak sa vám bude zdať tento článok príliš technický, odporúčam prečítať si aspoň záver – posledné 3 paragrafy, v ktorých sumarizujem výsledky.
Základy
Pozrime sa na to, aké parametre nám equipment modul ponúka a ich hodnotu si označme premennými:
x1 – avoid damage
x2 – reduce miss chance
x3 – maximum damage
x4 – damage
x5 – critical chance
x6 – strength bonus
x7 – hit bonus
Od x1 po x5 sú to parametre, ktorých jednotkami sú percentá. x6 a x7 sú bez jednotiek, konštanty. Za hodnoty týchto premenných dosaďujeme priamočiaro to, čo vidieť v hre – ak je tam hit +60, tak x7 = 60. Ak je tam reduce miss +4.5%, tak x2 = 4.5. Žiadne prevody.
Pozrime sa teda najprv na formulu, ktorou sa v hre vyrátava náš základný damage. To je tá prvá dvojica čísel, zhruba v takomto tvare: 800/1200. Čo sú tieto 2 čísla zač? Ide o hornú a dolnú hranicu toho, čo daný hráč môže udrieť jedným úderom, samozrejme neberúc do úvahy žiadne buffy/debuffy, t.j. zbrane, MU bonus, atď. Bez týchto by hráč so základným damage 800/1200 udrel vždy jedným hitom vo výške od 800 do 1200, nikdy viac ani menej. Hra potom vlastne funguje tak, že vygeneruje náhodné číslo od 800 do 1200, a na toto vygenerované číslo sa aplikujú všetky buffy/debuffy. Ono by to totiž mohlo byť aj naopak - aplikujú sa buffy a až potom sa generuje damage, ale tieto prístupy sú ekvivalentné, nerobia rozdiel.
Ako je vidieť, buffy nás teda vôbec nemusia zaujímať, môžeme ich považovať za fixné a už nás zaujíma len to, čo za náhodné číslo sa to vlastne vygeneruje.
Ak predpokladáme, že každé číslo z našich 400 čísel: 801, 802, .. 1199, 1200 má šancu byť vygenerované s rovnakou pravdepodobnosťou a to 1/400, potom ľahko vypočítame očakávanú hodnotu damage ako (800+1200)/2 = 1000. Pre účely analýzy sa nám teda hodí pracovať iba s týmto priemerným prípadom a nič tým nepokazíme. Označme premenné:
ZD – základný damage
DH – dolná hranica
HH – horná hranica
Ako sa počíta DH a HH? Ďalšie označenie:
S – Sila
R – Rank (napr. major má R=2)
Platí
Bolo by dobré, aby sa čitateľ trochu zamyslel nad horeuvedenými vzorčekmi, ak o nich teda doteraz nevedel/neuvažoval. V podstate sú medzi hornou a dolnou hranicou iba dva rozdiely – koeficienty 0.8 a 1.2, a ten dôležitejší – na dolnú hranicu sa aplikuje iba damage boost, na hornú hranicu sa aplikuje navyše aj max-damage boost.
Critical, reduce a avoid
V tejto chvíli už máme predstavu o 4 zo 7 parametrov. Čo so zvyšnými? Treba si uvedomiť jednu vec. Všetky tieto 3 parametre (avoid, reduce, critical) fungujú s istou pravdepodobnosťou. To, či zafungujú, žrebuje akýsi generátor náhodných čísel (napr. ak máme critical na 23.45%, tak sa žrebuje číslo od 1 do 10000, a ak sa vyžrebuje číslo od 1 do 2345, tak critical zafunguje, ináč nie; podobne s avoid a reduce miss). Podstatné je, že tieto 3 čísla sa žrebujú nezávisle jeden na druhom. Toto nám dovoľuje uvažovať o ich účinku osobitne.
Pozrime sa na critical. Opäť sú to len 2 čísla v tvare 1600/2400. Zámerne som použil dvojnásobky pôvodného príkladu, lebo tak to je aj v hre. Critical v priemernom prípade udrie 2000, teda je to vlastne iba dvojnásobný damage. Táto udalosť dvojnásobného damage sa deje v 12.5 + x5 percentách prípadov (12.5 je default). To znamená asi toto: zo 100 úderov, v priemere, (12.5 + x5)-krát udriem 2*ZD (2*základný damage), a (100-12.5-x5)-krát udriem iba 1*ZD.
Čiže critical spôsobí to, že priemerný damage sa upraví zo ZD na
Rovnaké je to s reduce miss. Predstavme si to tak, že zo 100 úderov, (87.5+x2)-krát udriem, a zvyšné razy nie. To sa v priemere prejaví tak, že sa náš doterajší damage (teraz už critical*ZD) vynásobí celkovým percentom úspešných úderov, teda týmto
Samozrejme zanedbávame to, že takto by nám to zarátavalo aj reduce pod 0%, ale to nevadí, lebo neskôr to zakážeme.
Zostal už len avoid damage. Majme avoid na 50% (viem, že taký nie je dovolený, ale je to len príklad). Nech to čo sme doterajšími úvahami dosiahli je damage X. Potom to, že zo 100 razov 50 krát zafunguje avoid, znamená, že X sme udreli a ešte stále môžeme udrieť 0.5*X. Až doudierame tých 0.5*X navyše, opäť nám niečo ostane – tentokrát 0.25*X. Potom 0.125*X, atď. Vo všeobecnosti, ak máme avoid (5+x1), potom z damage X vieme v skutočnosti vyťažiť
a takto ďalej s exponentmi idúcimi do nekonečna. Ak vyjmeme X pred zátvorku, tak dostaneme
a suma v zátvorke sa dá upraviť na 100/(95-x1). Takže po tomto modifikátore už vieme presne definovať náš totálny damage (TD):
Nelineárne programovanie
Naša snaha je teda maximalizovať premennú TD. Ak by sme nemali žiadne obmedzenia, tak by sme napr. nastavili všetky premenné x1-x7 na milión a bolo by ;-) Potrebujeme teda vyjadriť obmedzenia dané hrou.
Z hry vyplýva len jedno principiálne obmedzenie, a to x2<=12.5. Okrem tohto nám ale treba zohľadniť 2 fakty, a to
1. hráč si môže na seba obliecť iba 5*2=10 boostov
2. každý parameter dostáva hodnoty z rôznych intervalov, resp. rôzne dobré
Druhý bod je extrémne dôležitý (jediný zaujímavý v celej tejto analýze), pretože keby sa napr. hodnoty critical pohybovali pri 1-2%, a reduce miss pri 10-20% (pre equip tej istej kvality), tak samozrejme, že je to nefér a reduce by bol už len kvôli tomu lepší.
Ale ako to zohľadniť?
Za vhodné považujem pozrieť sa na intervaly hodnôt, ktoré nadobúdajú jednotlivé parametre (nájdete to na wiki) pri equipe kvality 5 – ten je predsa z pohľadu koncovej hry jediný dôležitý. Pre jednotlivé parametre vezmime do úvahy priemerné hodnoty pre q5:
x1 – 5
x2 – 6.75
x3 – 10
x4 – 5
x5 – 5
x6 – 30
x7 – 65
Každý parameter prispieva do celkového súčtu iným tempom. Toto sa dá zohľadniť takým systémom, ktorý by som nazval celková kapacita equipment setu. Predstavme si, že na začiatku je celková kapacita 0, tzn. aj všetky x1-x7 sú 0. Ak zvýšime napr x6 o 1, tak chceme, aby sa to na celkovej kapacite prejavilo 6-krát menej, ako sa na celkovej kapacite prejaví napr. zvýšenie x4 o 1 (lebo 30/5 = 6). Toto sa dá zapísať schematicky takto:
Ide nám vlastne o to, aby sme vhodne zvolili koeficienty c1-c7 tak, aby odrážali to odlišné tempo rastu, resp. odlišnosť v intervaloch odkiaľ sú brané hodnoty. Povedzme teda, že by sme mali 10 boostov na damage (x4). Jeden pridáva za 5, dokopy je to 50 a teoreticky by sme C mohli nastaviť na hocičo, aj na tých 50 pri c4=1. To by si potom vynucovalo, aby ako už bolo hore spomínané, c6 bolo 6-krát menšie ako c4 a teda c6 by muselo byť 1/6. Takto by sme vedeli odvodiť aj všetky zvyšné koeficienty c1-c7 a pri C = 50 by nám vzniklo hotové pravidlo. Malo by však škaredé zlomky, a preto tu najprv vyrátam spoločný najmenší násobok 5,6.75,10,30 a 65 čo je 35100 a tento zvolím za C. Potom rovnakým systémom dorátam koeficienty a dostanem nerovnicu:
Poznámka: premenné R a S som pre naše účely nastavil na praktické hodnoty S = 1800, R = 2.2. Všetky nasledujúce výsledky boli vypočítané s použitím týchto konštánt. Zmenou týchto konštánt v podstate neočákavame žiadne principiálne zmeny vo výsledkoch.
Tento typ úlohy, kde chceme jednu funkciu optimalizovať (tu maximalizovať TD) za istých obmedzení, rieši oblasť matematiky nazývaná nelineárne programovanie. Existujú rôzne kvalitné solvery, ktoré to vedia vyriešiť za nás. Ja som si jeden taký zaobstaral a dostal som takéto riešenie:
To znamená, že najlepší damage nám vyrobí taký equipment, ktorý dáva všetko do avoid - má 10*5=55%. Keďže ale na avoid existuje obmedzenie x1<=35, skúsme, čo vyhodí solver po pridaní tohto obmedzenia:
Ako vidieť, keď už sa raz avoid naplnil na 35 a viac mu bolo zakázané, parameter, ktorý bolo najvýhodnejšie naplniť, bol reduce miss, následne zvyšok hodil do max-damage.
Avoid damage je síce neskonalý víťaz, ale zároveň je to aj ekonomicky náročný parameter – jediný z parametrov spôsobuje zvýšené náklady na zbrane. Skúsme teda zakázať avoid úplne.
Pre x1 <= 0
= ECONOMICKÁ DOKONALOSŤ
A máme 4. miesto – critical.
Pre preskúmanie ostatných parametrov teraz musíme zakázať max-damage:
Pridáme nové obmedzenie x3<=0
Damage sa teraz dostal pred critical, ony sú totižto +/- rovnaké, v závislosti od max-damage.
Ak zakážeme všetky 4 parametre x1-x4 a zväčšíme kapacitu, solver naleje hodnoty už aj do strength a ten sa tak stáva 6. v poradí.
Záver
Pre tých, ktorí chcú mať ekonomický set-up bez avoidu, je set-up označený „dokonalosť“ naozaj najlepší – asi 2 boosty do reduce miss, 7 do max-damage, 1 do critical.
Samozrejme, celkovým víťazom je set-up s 2 boostmi do reduce, 7 do avoid a 1 do max-damage, až na to, že je vhodný len pre tých, ktorí si to môžu dovoliť.
Celkový rebríček je teda takýto:
1. Avoid damage
2. Reduce miss
3. Maximum damage
4. Damage
5. Critical
6. Strength
7. Hit
Vaše pripomienky sú vítané
Tento článok sa pokúsil byť veľmi rigorózny a viem že pre väčšinu e-sim hráčov nie je veľmi užitočný. Nabudúce snáď napíšem viac laickejší tutoriál.
Previous article:
Úvod (11 years ago)
Next article:
Equipment: complete analysis (EN) (11 years ago)