Autor Wątek: Questy w grach  (Przeczytany 3483 razy)

Offline kafor7

  • Użytkownik

# Lipiec 14, 2008, 01:13:46
Cześć pisząc moją platformówkę wpadłem na kolejny problem. Mianowicie nic mi nie przychodzi do głowy jak stworzyć proste misje w grze. Tzn wyznaczyć pewien cel na każdej mapie, albo w grze typu rpg ( bo to mój kolejny projekt będzie chyba ) wybierać sobie questy od NPC :)
Wy w jaki sposób to realizujecie??

Liczy się każda podpowiedź:)

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline yarpen

  • Użytkownik

# Lipiec 14, 2008, 01:40:14

Offline kafor7

  • Użytkownik

# Lipiec 14, 2008, 01:54:13
a coś po polsku by się znalazło??:)

Trochę jeszcze pogogluje:)

P.S programuję tylko w C++:)

Offline SiMet

  • Użytkownik

# Lipiec 14, 2008, 09:29:21
Yarpen, ja wiem ze masz takiego wiedzminowego nicka, ale gosc pyta raczej o uniwersalne rozwiazanie a nie jak stworzyc questa w wiedzminie. Wiec albo pojachales po najmniejszej linii oporu googlajac i dajac 1 wynik, albo to jest jakis zart z Twojej strony.

Ja z mojej strony nie powiem nic konstruktywnego. Nie myslalem w ogole nad zadnym RPG narazie, ale pewnie quest bylby to jakas klasa, ktora mialaby poszczegolne etapy (pewnie tez jakies osobne klasy). I jakies checkpointy, czyli kolejne etapy tego questu by byly sprawdzane czy zostaly wykonane. Cos takiego... ale to jest bardzo luzny koncept

Offline yomyn

  • Użytkownik
    • yomyn::dev

# Lipiec 14, 2008, 09:37:43
#SiMet
Looknij co ma pod awatarem :P

#kafor
Skrypty :)

Offline SiMet

  • Użytkownik

# Lipiec 14, 2008, 11:00:02
Hmm.... hm... CDPR co to moze znaczyc... CDProjekt? Hmmm...

Offline Riddlemaster

  • Użytkownik
    • Moja strona domowa

# Lipiec 14, 2008, 11:02:08
Zresztą uwaga Yarpena wcale nie jest taka zła. Na podstawie tego jak to jest zrobione w Wiedźminie (co można trochę rozszyfrować właśnie na podstawie edytora), czy NWN dużo łatwiej jest opracować swój system questów.

Offline yarpen

  • Użytkownik

# Lipiec 14, 2008, 11:34:07
Yarpen, ja wiem ze masz takiego wiedzminowego nicka, ale gosc pyta raczej o uniwersalne rozwiazanie a nie jak stworzyc questa w wiedzminie. Wiec albo pojachales po najmniejszej linii oporu googlajac i dajac 1 wynik, albo to jest jakis zart z Twojej strony.
Pytanie brzmialo "jak wy to realizujecie". Sa dostepne publicznie opisy naszego systemu, wiec do takiego sie odwolalem. Rozwiazanie jest wystarczajaco uniwersalne. W skrocie: kazdy quest ma liste podquestow (ktore znowu moga miec podquesty itd) + predefiniowane warunki spelnienia. W "kluczowych" momentach (zabicie stwora, otrzymanie przedmiotu itd itp) sprawdzamy czy ktorys z questow sie sprogresowal. Najbardziej skomplikowane w calym systemie bylo powiazanie tego z systemem dialogow, a to u Ciebie pewnie odpadnie.

Offline kafor7

  • Użytkownik

# Lipiec 14, 2008, 13:53:10
Czyli jak ?? Musiałbym stworzyć sobie oddzielną klasę główną np Questy potem bym tylko dodawał odpowiednie klasy z Questami np zabij potwora itd.. I w grze w głównej pętli sprawdzać w każdym obiegu aktualny quest czy nie został wykonany??  (potem będę zastanawiał się jak to zaimplementować :)) Czy takie rozwiązanie mogło by być?? Czy może ma ktoś inny pomysł jeszcze??

taki pseudo kod mniej więcej jak ja to widze :

int licznik=0;
bool SprawdzQuest()
{
   if(licznik==0)
   {
      if(smok.zycie<=0)
      return true;
   }

   if(licznik==1)
   {
      if(aniol.zycie<=0)
      return true;
   }
//itd..

return false;
}

for(;;;)
{
   ...(tu rysuje całą grę i zdarzenia na klawisze eweuntualnie tu bym mógł sprawdzać te questy)

   if(SprawdzQuest()==true)
      ++licznik;
}
oczywiście wszystko bym opakował w klasy itd..

     
« Ostatnia zmiana: Lipiec 14, 2008, 14:03:04 wysłana przez kafor7 »

Offline really

  • Użytkownik

# Lipiec 14, 2008, 14:12:15
Pakowanie wszystkiego do kodu to chyba nie jest najlepszy pomysł
#kafor
Skrypty :)
To jest metoda.


Offline kafor7

  • Użytkownik

# Lipiec 14, 2008, 14:19:34
Skrypty?? nie bardzo rozumie :D Tzn że musiałbym nauczyć jakiegoś języka skryptowego?? :D

Offline BTM

  • Użytkownik

# Lipiec 14, 2008, 14:23:57
Nie no, nie przesadzajmy - wszystko zależy od rozmiaru gry / ilości questów. We Wiedźminie / NWN to rozumie, że może być do tego LUA czy inne rozwiązanie skryptowe, ale możesz to przecież zrobić mniej więcej tak jak piszesz - "na sztywno".

Np. zaczynasz quest, zapisujesz sobie to w pamięci. Próbujesz "zdać" quest - nie da rady, bo flaga completed != true. Jakaś konkretna akcja (np. "zabicie smoka") zmienia te flagę, w Twoim "dzienniku" masz napisane "wykonane" i idziesz jeszcze raz zdać quest - teraz completed = true i tyle.

Tak jest np. w Diablo 2 zrobione - nie potrzeba aż tak byczego systemu questów, bo masz aż 6 na akt, czyli w całej grze (6 * 4 + 3) 27 questów. W NWN tyle jest w pierwszym mieście jak nie więcej ;-)

Offline k_b

  • Użytkownik
    • Blog

# Lipiec 14, 2008, 14:47:31
Np. zaczynasz quest, zapisujesz sobie to w pamięci. Próbujesz "zdać" quest - nie da rady, bo flaga completed != true. Jakaś konkretna akcja (np. "zabicie smoka") zmienia te flagę, w Twoim "dzienniku" masz napisane "wykonane" i idziesz jeszcze raz zdać quest - teraz completed = true i tyle.

Niektóre questy to nie tylko zabicie smoka - mogą być też te złożone, składające się z wielu różnych czynności.

Offline SiMet

  • Użytkownik

# Lipiec 14, 2008, 14:50:58
Np. zaczynasz quest, zapisujesz sobie to w pamięci. Próbujesz "zdać" quest - nie da rady, bo flaga completed != true. Jakaś konkretna akcja (np. "zabicie smoka") zmienia te flagę, w Twoim "dzienniku" masz napisane "wykonane" i idziesz jeszcze raz zdać quest - teraz completed = true i tyle.

Niektóre questy to nie tylko zabicie smoka - mogą być też te złożone, składające się z wielu różnych czynności.

Dlatego najlepiej jakby klasa CQuest posiadala np tablice (vector) lub jakas liste ktore beda wskazywac na etapy danego questu

Offline BTM

  • Użytkownik

# Lipiec 14, 2008, 15:08:55
Np. zaczynasz quest, zapisujesz sobie to w pamięci. Próbujesz "zdać" quest - nie da rady, bo flaga completed != true. Jakaś konkretna akcja (np. "zabicie smoka") zmienia te flagę, w Twoim "dzienniku" masz napisane "wykonane" i idziesz jeszcze raz zdać quest - teraz completed = true i tyle.

Niektóre questy to nie tylko zabicie smoka - mogą być też te złożone, składające się z wielu różnych czynności.
A przeczytałeś li mój post od początku, czy tylko to jedno konkretne zdanie? Pozwól, że zacytuję Ci pierwsze zdanie "uno mas":

Cytuj
Nie no, nie przesadzajmy - wszystko zależy od rozmiaru gry / ilości questów.