Návod Výpočtový vzorec

Stav
Uzavreté pre ďalšie odpovede.

MatthewFOX

Administrátor
Člen tímu
Administrátor
Reakčné skóre
232
Výpočtový vzorec - ako sa počíta boj, kto vyhrá počty strát.

Pri výpočte boja hrajú obrovskú úlohu typy jednotiek - pechota, jazda, luky. Pri útoku ide každý typ jednotiek (pechota, jazda, luky) sám za seba, pri obrane sa bráni zmiešane. (Príklad: vždy útočia spolu šermiari, sekerníci a baranidlá. Naopak, spolu ide zase LK a TK.)

Ďalej sú pri výpočte boja dôležité už konkrétne hodnoty útočných a obranných čísel. Keď príde k boju, pre útočiace jednotky sa použijú iba útočné čísla
att.png
, pre brániace sa jednotky sa berú iba obranné čísla typu, proti ktorému sa bráni
def.png
def_cav.png
def_archer.png
.
(Poznámka: Znamená to, že obranné čísla jednotiek v útoku sa vôbec nepoužijú. A naopak, útočné čísla brániacich sa jednotiek nehrajú vôbec žiadnu rolu).

----------

Tória.

Ako prebieha vlastný výpočet boja.

Pre útočiace jednotky sa spočíta pomer sily útoku typov (pechoty, jazdy a lukov). Týmto pomerom sa rozdelia jednotky v obrane a každému typu útoku sa bráni odpovedajúci pomer jednotiek v obrane. A pre každý typ jednotiek útočiacich sa robí samostatný výpočet.
Príklad. Ak je v útoku 60% sily jazdy a 40% pechoty, znamená to, že pri výpočte sa bude 60% jednotiek v obrane brániť "samostatnému" nájazdu jazdy (a použije sa obranné číslo proti jazde) a 40% jednotiek v obrane sa postaví útočiacej pechote. Rozdelenie obrany je rovnomerné na každú jednotku (čiže treba 60% kopijníkov, 60% TK, ...)

Sila útočiacich jednotiek sa už logicky počíta ako suma násobkov počtu jednotiek (sekier, LK, ...) a odpovedajúceho útočného čísla. Sila obranných jednotiek sa, naopak, počíta ako suma násobkov jednotiek a obranného čísla (pričom obranné číslo sa berie vždy proti odpovedajúcemu typu útočných).

Prebehne teda kolo troch nezávislých výpočtov - proti jazde, pechote a lukom. Každý typ, každý výpočet, bude mať svoje celkové útočné číslo a odpovedajúce celkové obranné číslo. Ten, kto má vyššie, vyhráva. Môžu nastať prípady:

- Pre všetky tri typy vyhral útočník. Tak je hotovo, jasno. Príde len k výpočtu strát.
- Naopak, ak vyhrá všetky tri typy obranca, nie je problém. Príde len k výpočtu strát.
- Nerozhodný výsledok pre niektorý typ, keď sa obranné číslo rovná útočnému, môžeme pre výpočty zahrnúť ako jednoduchý prípad - obidve strany prídu o všetky jednotky (pre daný typ útoku) a nie je treba ďalšie výpočty (daného typu). To platí napríklad aj keď niektorý typ (napr. pechota) v útoku chýba. Potom je to 0 proti 0. (Pretože útoku sa postaví iba odpovedajúce percento obrany - a ak má pechota v útoku zastúpenie 0%, postaví sa proti nej zase iba 0% obranných jednotiek).

- V prípade, že niektorý typ (pechoty, jazdy, lukov) vyhrá obranca a niektorý typ zase útočník, rieši sa to tak, že sa spočítajú straty a proti sebe znovu nastúpia dve armády (pozostatkov) jednotiek a celé kolo sa opakuje, kľudne aj viackrát, pokiaľ jedna zo strán nebude mať na svojom konte 0 jednotiek, Môže tak interne prebehnúť aj niekoľko kôl, než bude známy konečný výsledok.

--------

Výpočet strát.

Straty sa počítajú pre každú z troch typov útokov samostatne. Viacmenej, vždy rovnakým spôsobom. A tiež rovnako, bez ohľadu či vyhrá obranca alebo útočník - štýl výpočtu zostávajúcich jednotiek je rovnaký. Pre jednoduchosť budem pre ďalší výklad predpokladať, že vyhral útočník - celkové útočné číslo pre daný typ bolo väčšie než celkové obranné číslo proti danému typu. Ale rovnakým spôsobom by sa počítalo, keby vyhral obranca.

Straty nie sú absolútne, alebo dané prostým pomerom. Sú menšie, nelineárne. Znamená to, že čím viac prevýšila sila útoku silu obrany, tým menšie straty bude mať. Koeficient strát je daný pomerom sily obrany a sily útoku (to by bolo lineárne) násobené naviac odmocninou pomeru sily útoku a obrany (nelinearita). Príklad. Ak bude sila útoku 100.000 a sila obrany 50.000, je výsledný koeficient rovný 50.000/100.000 * sgrt(50.000/100.000) = 0.5 * 0,7071... = 0.3535... Teda, dvojnásobne prevyšujúci útok nebude mať straty 50%, ale len 35,35%.

Straty sú následne na jednotky rozdelené rovnomerne. Ak útočila zároveň LK a TK (počíta sa spolu, ide o rovnaký typ - jazdu) tak, ak je koeficient strát napríklad 0.3535, príde ku strate 35.35% LK, aj ku strate 35.35% TK. Tu už nehrá rolu ani útočné číslo jednotky. Poznámka: Pochopiteľne tento koeficient je iný pre každý typ útoku - jazdu, pechotu a luky - každý prebieha v samostatnom výpočte a každý má iné percenta strát.

--------

Pre informáciu. Počty ľudí zo sedliackeho dvora (koľko aká jednotka zaberá) nehrajú vo výpočtoch rolu. (Iba nepriamo - spolu so stupňom sedliackeho dvoru určujú horný limit jednotiek útoku).
 

MatthewFOX

Administrátor
Člen tímu
Administrátor
Reakčné skóre
232
Modifikátory.

V priebehu výpočtu, v priebehu útoku sa používajú rôzne modifikátory. Najznámejšie sú opevnenie, morálka, šťastie, nočný bonus. Plus ďalší, ako vplyv kostola, paladin s predmetom, ...

Opevnenie je špecialitka, to nechám zatiaľ trochu bokom. Ostatné modifikátory sú veľmi jednoduché. Pri výpočte sa nimi (koeficientami) násobia útočné alebo obranné čísla. Príklady:

- Nočný bonus dáva 100% bonus (teda dvojnásobok) jednotkám v obrane. Preto všetky obranné čísla budú násobené dvoma. Bez ohľadu na typ a jednotku (bonus je obecný). A zostávajúci výpočet prebehne bezo zmien, vrátane výpočtu strát.

- Morálka 30% (0,3 násobok) znamená, že vojská v útoku útočia menšou silou. Teda, všetky útočné čísla násobíme 0,3. A zostatok výpočtu je rovnaký. Vrátane výpočtu strát.

- Šťastie "z pohľadu útočníka" -25% znamená koeficient 0.75 pre všetky útočné čísla. Šťastie +25% znamená koeficient 1.24 pre útočné čísla. Opäť to platí pre všetky útočné jednotky.

- Paladinov predmet ovplyvní iba útočné, čí obranné číslo danej jednotky, ale zostatok výpočtov sa tiež nijak nelíši od bežného prípadu.


Ak je viac modifikátorov, proste sa obranné resp. útočné čísla násobia všetkými uplatnenými modifikátormi. Na poradí nezáleží, násobenie je komutatívne.


Modifikátor opevnenia

Opevnenie je lahôdka. Nielen, že pridáva koeficient všetkým jednotkám v obrane, ale pridáva aj tzv. základnú hodnotu. Bonus (koeficient) k obrane je jasný - to je modifikátor ako každý iný. Základná obrana je špecialitka a ešte nemám zistené všetky podrobnosti. Zdá sa, že základná obrana sa absolútnou hodnotou odpovedajúcim pomerom typov pripočíta k výslednému obrannému číslu. Ale či hrá rolu aj pri rozdelení strát obrany (či sa má zase odpočítať), to som si zatiaľ nezisťoval. Naviac, opevnenie môže byť čiastočne poničené baranidlami ešte pred útokom. To už je väčší problém.

Možno časom doplním


Technológie

Na niektorých svetoch existujú technológie (tech-level), vylepšovanie jednotiek v kovárni na vyššie stupne. Takéto jednotky potom majú iné obranné a útočné čísla. Pre počtový vzorec to nie je žiadny problém a vlastne ani žiadna modifikácia. Pre danú armádu sa použijú také obranné a útočné čísla, ktoré odpovedajú ich stupňu. Konkrétne čísla sú v nápovede u každej jednotky.
 

MatthewFOX

Administrátor
Člen tímu
Administrátor
Reakčné skóre
232
Špeciálne jednotky.
Špeciálne jednotky z pohľadu počtového vzorca sú: baranidlá, paladin, šľachtic a špeh.

-----

Špeh

- Špeh má špecialitku pri útoku, resp. výpočtu strát pri jeho útoku. Pretože má útočné číslo veľkosti 0, nespôsobuje žiadne zranenia. Takže pri výpočte sily konvenčného útoku možno použiť štandardný vzorec aj so započítaným špehom (čokoľvek krát 0 je stále 0). Alebo ho je možné z výpočtu priamo odstrániť. Ale straty špehov pri ich útoku už idú mimo štandardný vzorec a sú dané samostatným predpisom. Odvíjajú sa od počtu špehov v obrane a podľa konfigurácie sveta. Niekde je treba prekonať rovný počet, niekde dvojnásobok špehov v obrane, aby prežil aspoň jeden útočiaci špeh. Konkrétne výpočty sú neznáme.

- Špeh v obrane sa pre výpočtový vzorec obrany chová ako každá iná jednotka (typ jazda) a to aj pre výpočet jeho strát.

- Plus, špeh dokáže (podľa nastavení sveta a ďalších modifikátorov, ako je napríklad paladin s ďalekohľadom) zistiť aj stav cieľovej dediny. Budovy, armádu a podobne. Z pohľadu výpočtového vzorca tieto schopnosti nehrajú rolu, nerozoberám ich tu.

-----

Paladin a šľachtic

Paladin spadá pod typ "jazda". Šľachtic pod "pechotu".

Paladin, okrem toho že (na niektorých svetoch) môže niesť predmety, z ktorých niektoré slúžia aj ako modifikátory (pozri vyššie), tak je aj bežná jednotka s obranným a útočným číslom. Len strata paladina sa počíta inak.

Naopak šľachtic. Okrem toho, že ak útočí a nezomrie, zníži oddanosť, tak je to bežná jednotka s obranným a útočným číslom. Iba strata šľachtica sa počíta inak.

Paladin padne, ak padne naraz polovica jazdy. Šľachtic padne, ak padne naraz polovica pechoty. Platí obecne pre útok a obranu.

Ak je v boji viac paladinov (v obrane) alebo viac šľachticov (môže vyť aj v útoku s jednou armádou), líšia sa pomery pri ktorom ich koľko padne. Ak sú v armáde dve šľachty/paladinovia tak jeden z nich padne, ak padne 24% pechoty/jazdy, obidvaja padnú, ak padne 75% pechoty/jazdy. A tak ďalej.

EDIT: Po podrobnom preskúmaní výpočtového vzorca som prišiel k záveru, že šľachtic a paladin vlastne nie sú výnimky. Platí, že straty sa rozpočítavajú rovnomerne na jednotky. Ďalej platí, že úplne posledný krok je matematické zaokrúhlenie strát na celé čísla (pochopiteľne, nebude nám hliadkovať polovica vojaka). A tým je to dané. Pokiaľ je paladin alebo šľachtic zastúpený jedným kusom pre danú jednotku, tak nadpolovičné straty, po koncovom matematickom zaokrúhlení, znamenajú stratu celej jednotky. Pri útoku ide šľachtic s pechotou, takže nezáleží na výsledku útoku pechoty - ak jej padne nadpolovičná väčšina. Pri obrane sa rozpočítavajú straty na všetky jednotky rovnomerne, takže aj tam platí, že zomrie, ak zomrie viac ako polovica pechoty (že zomrie aj rovnaký pomer iných typov neodporuje tvrdenie). Paladin tak isto, v bledomodrom s jazdou.

-----

Baranidlá

Baranidlá dokážu útokom zraziť opevnenie tak, že sa jeho veľkosť čiastočne redukuje aj pred vlastným útokom. Tým zásadne ovplyvňujú aj vlastný útok s ktorým idú. Možno, že časom niekedy urobím preklad a výklad anglického článku. Ale to je na samostatné téma. Asi iba poznámku. Potom, čo po útoku baranidlami prebehne modifikácia hodnôt opevnenia (pre útok, pre stav na konci) tak sa baranidlá začnú chovať ako bežná (dosť slabá útočná) pechota. Vrátane výpočtu strát.

Baranidlá v obrane sa chovajú ako každá iná jednotka. Typ pechota.

-----

Pre informáciu, špeciálna jednotka sú aj katapulty. Ale nie z pohľadu výpočtového vzorca. Katapulty pri útoku búrajú budovy, ale hodnoty obrany a útoku majú definované a v priamom súboji sa bijú ako každá iná jednotka. Výpočty pre búranie sa prevedú až po útoku a výsledok neovplyvní vlastný útok
 

MatthewFOX

Administrátor
Člen tímu
Administrátor
Reakčné skóre
232
Zatiaľ neriešim pomer rozpočítavaní strát na podpory, viac paladinov (s predmetmi) na podpore (aj keď zrovna to tuším) a podobné špecialitky. Možno pridám časom, možno vôbec.

Teraz pár príkladov.

Obrana:
1000 kopijníkov
1000 šermiarov
2000 lukostrelcov
500 TK (ťažká jazda)

Útok:
2600 sekerníkov
2000 LK (ľahká jazda)
1300 Lukostrelcov na koni

morálka 100, bez nočného bonusu, šťastie 0, opevnenie 0
(Pri naozaj presnom výpočte či málo jednotkách nemôžeme zanedbať ani opevnenie 0 (jeho základnú hodnotu 20). Ale to je tak malé číslo, že v našom výpočte je hlboko pod zaokrúhľovacou chybou)

-----------------------

Ako prvý sa prevedie výpočet pomeru síl typov (pechota, jazda, luky) útočiacich jednotiek.

2600 sekerníkov ................... *40 = 104.000 (20%)
2000 LK ............................ *130 = 260.000 (50%)
1300 lukostrelcov na koni .... *120 = 156.000 (30%)
................................................. 520.000 (100%)

A teraz tri typy výpočtov zvlášť:

20% obrany:
200 kop, 200 šerm, 400 luk, 100 TK ... sa bráni proti 2600 sekerníkov (pechote)
200*15 + 200*50 + 400*50 + 100*200 = 53.000 sa bráni proti 2600*40 = 104.000
straty: 2600 * 53.000/104.000 * sqrt(53.000/104.000) = 946 sekier


50% obrany:
500 kop, 500 šerm, 1000 luk, 250 TK ... sa bráni proti 2000 LK (jazde)
500*45 + 500*15 + 1000*40 + 250*80 = 90.000 sa bráni proti 2000*130 = 260.000
straty: 2000* 90.000/260.000 * sqrt(90.000/260.000) = 407 LK


30% obrany:
300 kop, 300 šerm, 600 luk, 150TK ... sa bráni proti 1300 LnK (lukom)
300*20 + 300*40 + 600*5 + 150*180 = 48.000 sa bráni proti 1300*120 = 156.000
straty: 1300* 48.000/156.000 * sqrt(48.000/156.000) = 222 LnK

Vždy vyhral útočník. Celkové straty: 946 sekier, 407 LK, 222 LnK
 

MatthewFOX

Administrátor
Člen tímu
Administrátor
Reakčné skóre
232
Obrana:
1000 kopijníkov
1000 šermiarov
2000 lukostrelcov
500 TK

Útok:
2600 sekier ............ *40 = 104.000 (20%)
2000 LK ................. *130 = 260.000 (50%)
1300 luky na koni .... *120 = 156.000 (30%)

(Tu je asi chyba, možno by už tu v rozdelení pomerov mala byť započítaná morálka (*0.3) - ale pretože sa uplatní na všetky jednotky, tak pomer zostáva rovnaký. Iné by to bolo napríklad u paladina s predmetom)

-----------------------
bez nočného bonusu, šťastie 0, opevnenie 0
Morálka 30% ... všetky útočné vojská majú silu násobenú 0.3


20% obrany:
200 kop, 200 šerm, 400 luk, 100 TK ... sa bráni proti 2600 sekerníkom (pechote)
200*15 + 200*50 + 400*50 + 100*200 = 53.000 sa bráni proti 2600*40*0,3 = 31.200
straty: pomer = 31.200/53.000 * sqrt(31.200/53.000) = 0.4517 to odpovedá strate: 90 kopijníkov, 90 šermiarom, 181 lukom, 45 TK


50% obrany:
500 kop, 500 šerm, 1000 luk, 250 TK ... sa bráni proti 2000 LK (jazde)
500*45 + 500*15 + 1000*40 + 250*80 = 90.000 sa bráni proti 2000*130*0,3 = 78.000
straty: 78.000/90.000 * sqrt(78.000/90.000) =
straty: 403 kopijníkov, 403 šermiarom, 807 lukom, 202 TK


30% obrany:
300 kop, 300 šerm, 600 luk, 150 TK ... sa bráni proti 1300 lukom na koni (lukom)
300*20 + 300*40 + 600*5 + 150*180 = 48.000 sa bráni proti 1300*120*0,3 = 46.800
straty: 46.800/48.000 * sqrt(46.800/48.000) = 0.9627
straty: 289 kopijníkov, 289 šermiarov. 578 lukov, 144 TK

Vždy vyhral obranca. Dokopy straty:
782 kopijníkov, 782 šermiarov, 1576 lukostrelcov, 391 TK
 

MatthewFOX

Administrátor
Člen tímu
Administrátor
Reakčné skóre
232
Obrana:
1000 kopijníkov
1000 šermiarov
2000 lukostrelcov
500 TK

Útok:
2600 sekier ............ *40 = 104.000 (20%)
2000 LK ................ *130 = 260.000 (50%)
1300 luky na koni ...... *120 = 156.000 (30%)

Morálka 100. opevnenie 0
nočný bonus (*2 obranca), šťastie -20% (*0,8 útočník)

Výsledok simulátoru:
Vyhral útočník so stratami: 2600 sekier, 1665 LK, 926 LnK
Teda, útočníkovi zostalo 335 LK a 374 LnK

-----------------------


20% obrany:
200 kop, 200 šerm, 400 luk, 100 TK ... sa bráni proti 2600 sekier (pechote)
200*15*2 + 200*50*2 + 400*50*2 + 100*200*2 = 106.000 sa bráni proti 2600*40*0,8 = 83.200
Vyhral obranca. Útočník stratil všetko.
straty: pomer = 83.200/106.000 * sqtr(83.200/106.000) = 0.6954 to odpovedá strate: 139 kopijníkov, 139 šermiarov, 278 lukov, 70 TK
obrancovi zostáva: 61 kopijníkov, 61 šermiarov, 122 lukov, 30 TK

50% obrany:
500 kop, 500 šerm, 1000 luk, 250 TK ... sa bráni proti 2000 LK (jazde)
500*45*2 + 500*15*2 + 1000*40*2 + 250*80*2 = 180.000 sa bráni proti 2000*130*0.8 = 208.000
Vyhral útočník. Obranca stratil všetko.
straty: 2000 * 180.000/208.000 * sqtr(180.000/208.000) = 1610 LK
útočníkovi zostáva: 390 LK

30% obrany:
300 kop, 300 šerm, 600 luk, 150 TK ... sa bráni proti 1300 LnK (lukom)
300*20*2 + 300*40*2 + 600*5*2 + 150*180*2 = 96.000 sa bráni proti 1300*120*0.8 = 124.800
Vyhral útočník. Obranca stratil všetko.
straty: 1300 * 96.000/124.800 * sqtr(96.000/124.800) = 877 LnK
útočníkovi zostáva? 422 lukov na koni (LnK)

----------------------

Nasleduje teda ďalšie kolo:
Obranca: 61 kopi, 61 šerm, 122 luky, 30 TK
Útočník: 390 LK, 422 LnK

Som lenivý to znovu rozpočítavať. takže ty zostávajúce čiastky hodím do simulátoru - aspoň sa ukáže, že ďalšie kolo je nezávislé na predchádzajúcom a používa úplne rovnaký algoritmus a logiku. Je to pre neho ako keby ďalší útok.

Výsledok simulátoru (za druhé kolo):
Vyhral útočník, straty 55 LK a 49 LnK.
Teda, útočníkovi zostalo 390-55 = 335 LK a 422-49 = 373 LnK

To (až na zaokrúhľovaciu chybu jedného Luku na koni) odpovedá simulátoru celkového útoku (pozri začiatok). Skvele. Vyšlo to. Dokázané.
 

MatthewFOX

Administrátor
Člen tímu
Administrátor
Reakčné skóre
232
Je tu rozobraný Turgonov obľúbený extrémny príklad so strateným šľachticom.
http://cs1.divokekmeny.cz/public_report/a4e3706ec6cbdd7d7bac3d5c5fbdf66e

Obrana:
27 šermiarov

Útok:
4 špehovia
200 TK
1 šľachtic


Modifikátory:
- Opevnenie 19 (základná obrana 970, bonus obrancu 99% t.j. násobok 1.99)
- Nočný bonus pre obrancu (100% t.j. násobok 2)
- Morálka útočníka 38% (koeficient útoku 0.38 ) /presnejšia morálka 37,96267497%, to sa dá zaokrúhliť na 38%./
- Šťastie z pohľadu útočníka -17.5% (koeficient útočníka 0.825)

-----

Najskôr pomer typov. Špehovia v útoku rolu nehrajú (útočné číslo 0). TK je typ "jazda" Šľachtic je pechota. Prípadné modifikátory použité na všetky jednotky, pre pomer typov môžeme ignorovať.

Jazda:
200 TK .... 200*150 = 30.000 (cca 99.9%)
/Presnejšie 0.999000999... to sa dá zaokrúhliť na 0.999/

Pechota:
1 šľachtic ...... 1*30 = 30 (cca 0,1%)
/Presnejšie 0.000999000999... to sa dá zaokrúhliť na 0.001/

U tak malých čísel sa už nedá pracovať na celé jednotky. Aj pomer typov útoku (jazda a pechota) musíme zahrnúť do výpočtového vzorca. Nedá sa nám podeliť počty jednotiek a potom zaokrúhliť na celé jednotky ako som to urobil v umelých prípadoch vyššie.

-----

Obrana proti pechote (0.1% ... koeficient 0.001)

Obrana (27 šerm * 50 obranné_číslo_na_pechotu * 2 nočný_bonus * 1.99 bonus_opevnenie + 970 základné_opevnenie) * 0.001 pomer_typov_pre_pechotu = (5373 + 970) * 0.001 = 6.343 sila obrany

Útok (1 šľachtic * 30 útočné_číslo * 0.38 morálka * 0.825 šťastie = 9.405 sila útoku.

Vyhral útočník. Straty 6.343/9.405 * sqrt(6.343/9405) = 0.5538... teda straty 55%. Pretože sme prišli o viac ako 50% pechoty, šľachtic v útoku je zabitý. Iné jednotky v útoku pechoty nemáme, nič ďalšie nedelíme.Mimochodom, šľachtic by bol zabitý, aj keby boli iné jednotky. Pri rovnomernom rozložení strát na jednotky a nadpolovičným zraneniam to znamená (zaokrúhlením) zabitie jednotky. Takže šľachta a paladin vlastne ani nie sú výnimka výpočtového vzorca! Ono to tak proste zo vzorca vyjde. Koncové výsledné cifry jednotiek sa naozaj matematicky zaokrúhľujú, aj pre iné jednotky. Len u šľachty a paladina je to viac vidieť.

-----

Obrana proti jazde (99.9% ... koeficient 0.999)

Obrana (27 šerm * 15 obranné_číslo_na_jazdu * 2 nočný_bonus * 1.99 bonus_opevnenia + 970 záladné:eek:pevnenie) * 0.999 pomer_typov_pre_jazdu = (1611.9 + 970) * 0.999 = cca 2579 sila obrany

Útok (200 TK * 150 útočné_číslo * 0.38 morálka * 0.825 šťastie = 9405 sila útoku.

Vyhral útočník. Straty 200 TK * 2579/9406 * sqrt(2579/9406) = 200 TK * 0.1436 = 28.71 TK = cca 29 TK

-----

Uff. Ono to vyšlo.

Ak si zadáte tieto údaje do simulátora, výsledok bude rovnaký.
 
Naposledy upravené :
Stav
Uzavreté pre ďalšie odpovede.
Hore