

Herní algoritmus: výpočet boje na základě hodnoty útoku a brnění
Zdravím,
chtěl jsem se poradit, nebo zeptat, zdali by neměl někdo nápad, jak vyřešit následující problém:
Mám hru, kde mezi sebou budou bojovat "paňáčci".
Struktura bojovníka:
int hp; //zdraví
int attack; //útok
int shield; //brnění
Rád bych vymyslel nějakou funkci, podle který budu snižoval určitý počet hp při útoku jednoho bojovníka na druhého.
Funguje to tak, že čím vyšší attack tím větší poškození dá a čím větší shield tím menší poškození dostane.
Tedy že shield redukuje poškození co utrpí.
Nějaký nápady?
Horní hranice attacku a shieldu ještě nejsou určeny a asi budou závislé na výpočtu.
(vše musí být int).
To snad zavisi od toho jak si tu hru definujes, aby to bolo hratelne. Urcite tam bude pomer attack/shield. P.S> a dobre je neurobit to linearne, t.j. nakresli si krivku a podla toho bud fcia alebo tabulka
Pokud to chces pojmout komplexneji, tak kazdy utok bude snizovat kvalitu brneni a tim padem zpusobovat vyssi poskozeni. Brneni pak bude nutne opravovat.
Ano, to by bylo určitě hezké, ale tak moc to propracované nebude.
Je to komplexna vec ktoru si mas premysliet ty, ptz to zavisi od sposobu hry.
Urob si priklady toho jak to ocakavas a nakresli to do grafu alebo rovno zhlavy funkciu na to. Ak to menis po kazdom jednom udere, tak si staci dat do pomeru attack/shield a vynasobit to 100 a po kazdom udere znizovat protivnikov v danom pomere. Ak v tom je zamontovane aj pocet vojakov a hodnoti sa cely suboj, tak je nutne za prve nasobit to poctom vojakov (10 na 1ho urcite toho 1ho zabiju a budu mat mensiu stratu HP), uvazovat ze od akeho pomeru pocet*attack/pocet*shield a aj povodne hodnoty HP do toho musia byt zamontovane (ked ma jeden 100% a druhy uz len 1%) este ten slabsi je schopny utiect a ak je tam viac vojakov tak ze kolko % z nich utecie, apod. Nasledne skodu na HP protivnika vydelis poctom utocnikov (krat pomer attack/shield) a mas rozdiel HP pre kazdeho vojaka utocnika apod. To si mas prehrat v hlave rozne situacie a zadefinovat si jak ocakavas vysledok a nakoniec dojst k nejakemu vzorcu na zaklade toho jake ocakavas vysledky
P.S> ratat mozes v double a na konci to zaokruhlit na int. Ak to chces ratat vyradne v int tak nasobit pred delenim, ne naopak.
A do toho ještě zabudovat určitý poměr štěstí. V reálu ne vždy stejný úder způsobí stejnou škodu. Stačí nějaký konkrétní úhel štítu a meč sklouzne a nezpůsobí žádnou škodu. Proto by i ve hře mělo být určitá nejistota a výslednou škodu pak vynásobit nějakým náhodným koeficientem, třeba 0,9 - 1,1
útok - obrana = poškození?
Nebo jsem něco nepochopil?
To by bylo moc jednoduché a lineární
Nech nás mu to trošku zkomplikovat, protože taková hra by tě pak ani nebavila.
takže ak by mal enemy viac armor ako ty damage tak tvoje utoky budu brat tobe HP? = Welcome in game of suicide!
Ono to neni v reali taketo jednoduche, ptz podla tvojho vzorca keby utok < obrana, tak by si do protivnika busil, a jemu by po kazdom tvojom udere pribudalo zdravie :) Hra ma snad simulovat nejak nejake deje jak v realite, a vzorec sa odvodzuje od toho jak sa deje ten dej v realite, a ne naopak ze vymyslim si vzorec, a ta "realita" podla takeho vzorca bude ale potom dost divna :)
No, máte samozřejmě pravdu, ale pro jednoduchost se to dá ošetřit tak, že všechny útoky ve hře jsou o řád vyšší než obrany a komu se damage přičítá, tedy HP odečítá je snad jasné. Já myslím, že bude fajn, když si tam hodí tenhle základní vzorec a až mu bude fungovat tohle, může tu myšlenku rozvíjet.
http://www.bigfishgames.com/games/2588/puzzle-hero /
je tam všetko: sila útoku, brnenie, zdravie. Opíš si pri každom útoku hodnoty a nejaký šikovný matematik podľa nich spraví algoritmus.
Děkuji všem za odpovědi.