Skocz do zawartości

Jak oszacować wynik walki w RPG?


Rekomendowane odpowiedzi

To pytanie kieruję gównie do znawców gier RPG.

 

Czy znacie jakiś ciekawy algorytm obliczania wyniku walki na podstawie cech wojowników takichj jak: atak, obrona, celność, szczęście itd. ? A jeśli znacie to napiszcie.

 

Ja osobiście wymysliłem prosty algorytmik oparty na 2 cechach: ataku i obronie. Ale można by to jakoś bardziej rozwinąć.

//Cechy atakujacego:

max_atak = 20;
Atak_1     = 5;

//Cechy atakowanego:

max_obrona = 20;
Obrona_2 = 3;

//1.  Losuję siłę ataku atakującego:

Atak = (random(Atak_1 - max_atak)+Atak_1);

//2. Losuję czy atakujący trafi

Trafienie = round(random(2));

//przy czym wynik 0 - pudło, 1 - trafienie,  2 - trafienie krytyczne

//3. Jeżeli okazuje się że trafi normalnie to sprawdzam czy atakowany się obrony, jeżeli trafi krytycznie to atakowany przyjmuje całą siłę ataku.

switch(Trafienie)
{
  case Trafienie = 1:
          {
             Obrona = (random(Obrona_2 - max_obrona)+Obrona_2);

           if (Atak < Obrona || Atak = Obrona)
             Obrażenia = 0;
           else
             Obrażenia = (Atak - Obrona);
           } break;

   case Trafienie = 2:
           Obrażenia = Atak; break;
   default:
           Obrażenia = 0;   
}

Wynik = życie - Obrażenia;

 

Mogłem się pomylić w kodzie, ale nie o to tu chodzi..

Odnośnik do komentarza
Udostępnij na innych stronach

Mam gdzieś coś takiego ! Ale gdzie ? :lol2:

 

gnysek : Już chyba prubowaliśmy :P i jak narazie wychodzi na to że musze sam robić :D Ale jak coś planujesz to powiadom mnie ;)

 

EDIT

Wstaw może takie jednostki obrażeń i obrony żeby mogły łatwo zostać odliczone od życia np.

obrona=3;
atak=6;
hp=10;

hp=hp-(atak-obrona);

Odnośnik do komentarza
Udostępnij na innych stronach

Jestem pełen podziwu...

Dla zamieszczonego kodu przez gościa nr.1 ...

Ja moge zrozumieć i zastosować tylko ten następny kod....

Hp=hp-(atak-obrona)

Jeżeli zrobiłem błąd to niech mnie gęś kopnie :jezor:

Ale to nawet działa...

To chyba najprostszy sposób...

Sam robie teraz gre RPG(a raczej próbuje robić) i mam takie same problemy...

Np... :

Jak zrobić żeby odliczał się wtedy health tylko jednego stworka, a w rzie health=0 to żeby go zabijał? :huh:

 

Bo ja zawsze jestem taki goopi i mam bzdurne pytanka :lol2: --->prosze o wybaczenie :]

Odnośnik do komentarza
Udostępnij na innych stronach

No nie lepiej , ocywiscie ze gorzej. Oj Quaztecoclcocoloc przeciez jesli ustawi if health=0 {instance destroy} To bedzie zle. Przypuscmy ze jest taka sytuacja:

 

Ludzik ma 5 energi

Stwor uderza go i zabiera mu 10 energiii

W zwiazku z tym ludzik ma -5 energii

 

i teraz sprawdzmy ktory kod jest lepszy moj czy twoj.......

if health <0,1{instance destroy} TO DZIALA!! ludzik ma mniej niz 0,1 healthu wiec znika

 

if health=0{instance destroy} Buuuu to nie dziala gdyz ludzik ma -5 healthu a nie 0 . Czyli teraz jakby wział apteczke ktora doda mu 5 health to wtedy zniknie.

Odnośnik do komentarza
Udostępnij na innych stronach

no to juz lepsze, ale jest nawet na tym forum temat w ktorym jest spor o to gdzie znak = ma byc. Ja tam wole ominąc kontrowersje i poodalem dlatego if health<0,1 . Jednak jesli health bedzie wyrazal sie tylko w lliczbach calkowitych mozna napisac prosciej if health<1

Odnośnik do komentarza
Udostępnij na innych stronach

Proponuję powrócić do głównego wątku.

 

Może ktoś z was gra w gry RPG typy Warhammer itp. (ja na przykład nie gram :( ) i zna jakis dobry sposób obliczania wyniku walki. Czekam na propozycje. Może zrobimy do spółki¹ taki przykład dla GMClan'u...

 

 

______________

1 - tzn. ktoś zapodaje algorytm a ja na przykład wykonałbym przykład, który miałby wtedy dwóch autorów. Albo inaczej - dogadamy sie. ;)

Odnośnik do komentarza
Udostępnij na innych stronach

A ja mam inny pomysł- najpier wybiera sie w którą czesc ciala sie uderza, jednak jesli probojesz uderzyc w glowe masz male szanse na trafienie. Obraazenia to atak-Obrona . W zaleznosci w jakom czesc ciala sie uderza to obrazenia sie mnozy np. cios w glowe to atak*2-obrona, a cios w plecy to atak*1.5-obrona itd

Odnośnik do komentarza
Udostępnij na innych stronach

Więc niech będzie ADeDek. Premie do ataku dzielą się na atak: wręcz i dystansowy. Na razie powiedzmy, że obie premie wynoszą 5(je też się oblicza dodając różne modyfikatory). Obrażenia zależne są od używanej broni. Szansa trafienia krytycznego również zależy od używanej broni. Załóżmy, że jest to krótki miecz - 1k6, krytyk-19-20 x2, tzn. gdy wypadnie 19 lub 20 liczba obrazeń się podwaja.

atakw=5;
atakd=5;
kpwroga=15;
maxobrazen=6;

atak=round(random(20))
if atak = 1
{krytyczne pudło} //jakiś skrypt, np. broń wypada z ręki or sth
else
{
if atak>=19 //sprawdzanie krytyka
{
atak+=atakw; //przy ataku wręcz
if atak>=kpwroga
{
hpwroga=hpwroga-2*round(random(6)) //"zdrowie" wroga maleje o 1-6 pkt obrazen
}
}
else //zwykłe trafienie
{
atak+=atakw; //przy ataku wręcz
if atak>=kpwroga
{
hpwroga=hpwroga-round(random(6)) //"zdrowie" wroga maleje o 1-6 pkt obrazen
}
}
}

Napewno się gdzieś pomyliłem. ADeDek jest tak skomplikowany, że czasem normalnie można się pogubić a co dopiero algorytm napisać. Oczywiście nie jest on zoptymalizowany i zrobiony tylko w przypadku ataku krótkim mieczem. Pominąłem też conajmniej 2 zasady:

1. W przypadku ataku wręcz do sumy obrażeń dodaje się modyfikator z siły.

2. Przy wylosowaniu liczby odpowiadającej trafieniu krytycznemu dopiero występuje szansa na takowe. Żeby trafić krytycznie trzeba uzyskać wysoki wynik także za drugim rzutem (bezsens, prawie uniemożliwiający krytyka).

Odnośnik do komentarza
Udostępnij na innych stronach

Heh, ADD jest wyjątkowo skomplikowany i graczom kojarzy się z masą rzutów kośćmi. Tam trzeba "rzucać na wszystko" :D

"Stara Droga wije się [...] obok starych dębów oraz 1k4 opuszczonych chałup"

A co Warhammera(jak to się stało, że jeszcze nigdy w niego nie grałem?) to jak dopadne podręcznik to dorzuce kolejny przykładzik.

Odnośnik do komentarza
Udostępnij na innych stronach

Ja polecam tak oczywiscie D&D system :P

 

zrob se skrypt kostek 1k6 1xk10 1k20 1k100 itp.. :D to zalezy jak chcesz ta gre robic

 

nastepnie w samej juz grze poprostu odwolywuj sie do kostek :D

 

i uzywaj prostej matematyki :D

 

naprzyklad obrazenia_twoje - klasa_pancerza_przeciwnika = ob rzeczywiste

 

:) tak samo uniki aa ta kostka co napisalem 1k100 to procety :) naprzyklad twoj bochater ma szanse 30% na unikniecie naprzyklad 1/3 ob rzucasz kostka 1k100 wydzjdzie od 1 do 30 to ob_rzeczywiste/3= (cos tam)*2 tak rozpisujaco sie bo mozna to odraazu ob_rzeczywiste - 33.3% :P

 

 

ja przynajmniej stosoje to w swojej grze oczywiscie mocniej to rozbudowane bo jest wiele wariantow :)

 

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...