System ataku na gracza - gra przeglądarkowa


(rycerz2000) #1

Piszę z kolegą grę przeglądarkową w HTML, PHP i CSS, nic specjalnego gierka dla kilku znajomych i przychodzi czas na zrobienie ataków między graczami. Gracze mają mieć możliwość zdobywania/przejmowania miast, wsi i wiosek wydobywczych.

Nie wiem w jaki sposób ma przebiegać atak, mam takie jednostki jak husarz, miecznik, topornik i łucznik i teoretycznie każda z tych jednostek miała by mieć inną siłę w walce, jak obliczyć który gracz wygra i co ważne ile i jakich jednostek powróci do zamku gracza który wygrał?


(kostek135) #2

Pytasz tak jakby był na to jedyny słuszny sposób, to zależy od twojej (projektanta) inwencji. Najprostszy wariant będzie wyglądał tak: z sumować całkowitą siłę, wygrywa ta drużyna o większej sile. Ilość ocalałych wojsk per oddział to stosunek siły słabszej drużyny do silniejszej drużyny pomnożony przez ilość jednostek w oddziale silniejszej drużyny. Będzie to prosta liniowa zależność.


(rycerz2000) #3

A mógłbyś dokładniej wytłumaczyć jak by to wyglądało?


(GioWDS) #4

Kolega @kostek135 wytłumaczył to tak prosto jak się da, ale podejmuję wyzwanie:

Strona A:

Jednostka JA [sila = 5; obrona = 3] x 5

Jednostka JB [sila = 3; obrona = 3] x 10

Strona B:

Jednostka JA [sila = 5; obrona = 3] x 10

Jednostka JB [sila = 3; obrona = 3] x 1

Jednostka JC [sila = 3; obrona = 10] x 10

 

Sumujesz to wszystko:

Strona A: [sila = (5*5) + (3*10) = 55; obrona = (3*5) + (3*10) = 45]

Strona B: [sila = (5*10) + (3*1) + (3*10) = 83; obrona = (3*10) + (3*1) + (10*10) = 133]

 

Czyli w uproszczeniu obrona strony B zniweluje atak strony A, a obrona strony A nie będzie w stanie powstrzymać ataku strony B - wygrywa strona B.

 


Poczytaj o algorytmie walk OGame dość dokładnie gracze to rozkminili.


(rycerz2000) #5

Ok załóżmy że według tego co napisałeś strona A zaatakuje stronę B. Wygra strona B a wiec do strony A nie wróci żadne wojsko bo całe zostało pokonane w walce, ale jak obliczyć ile i jakich (nie może np. zostać stronie B jednostek których nie miała) jednostek zostanie stronie B? (część zginie w walce a część nie)


(kostek135) #6

Przecież napisałem liczysz proporcję między siłą jednych wojsk i drugich. Następnie wykorzystujesz ten współczynnik przy wyliczeniu straty.

Np. strona A ma 10 jednostek po 5 siły każda, strona b ma 1 jednostkę o sile 10

10*5 = 50

1*10 = 10

dzielimy mniejsze przez większe czyli 10/50 = 1/5

Mnożysz liczbę jednostek przez 1/5, czyli 10 * 1/5 = 2, przy czym są to jednostki zabite więc musisz teraz od wszystkich jednostek odjąć liczbę zabitych by zostały te ocalałe: 10 - 2 = 8. Prosta liniowa zależność, ty uzyskałeś wykształcenie podstawowe?


(rycerz2000) #7

Jestem teraz w 2 gimnazjum, a co do tematu to teraz coś tam rozumiem.


(ktoś tam) #8

Załóż sobie konta na kilku grach strategicznych i przeanalizuj ich system, będziesz miał jakieś pojęcie, jak zbudować taki system. Mam własny, ale ci go nie zdradzę, ponieważ planuję coś podobnego, jak ogarnę projekt szkolny.


(Drobok) #9

Wszystko zależy od konkretnej gry. Nie można używać prostych proporcji jeśli mamy kilka rodzajów jednostek + ulepszenia + strategie / formacje. Każda jednostka powinna mieć własne równania dla ilości wojsko które przeżyją / jej efektywność / zasięg na podstawie terenu, powinieneś wprowadzić też niewielką losowość.

To nie jest takie proste jak się wydaje, a gotowca w necie za friko ci nikt nie poda. Potem będziesz miał pełno komercyjnych gier czy botów na podstawie algorytmu który ci ktoś poda jak na tacy.