[2K3] Porada jak sterować przeciwnikami z typowych zdarzeń

Jeśli chcesz podzielić się swoimi materiałami z innymi użytkownikami forum.

Moderatorzy: GameBoy, Dragon Kamillo

ODPOWIEDZ
Awatar użytkownika
X-Tech

Golden Forki 2009 - Pełne Wersje (miejsce 3)
Posty: 3268
Rejestracja: 22 lut 2008, 14:15

[2K3] Porada jak sterować przeciwnikami z typowych zdarzeń

Post autor: X-Tech »

Wpadłem na pewien genialny pomysł i postanowiłem się nim podzielić. Pomysł zadziała i w rpgmakerze 2000 jak i w rpgmakerze 2003.

Pewnie wiele razy zastanawialiście się jak zrobić przeciwników w swoich grach tak, aby ich ruchy ustawiać z zdarzeń typowych, a nie z poziomu mapy. Kiedy tworzycie mózgi naszych przeciwników na mapie musicie na każdej mapie edytować z osobna każdego wroga tego samego typu żeby zmienić sposób poruszania się tego typu przeciwnika w całej grze. Postanowiłem się podzielić moim sposobem, na który wpadłem wczoraj w trakcie projektowania inteligencji mojemu przeciwnikowi testowemu do mojej gry. Ta metoda sprawi że edycją tylko jednego skryptu będziecie mogli zmieniać sposób poruszania się wszystkich przeciwników tego samego typu w całej grze (!!) To zaoszczędzi godziny mozolnego kopiowania tego samego skryptu na wiele map gdy będziecie chcieli zmienić sposób poruszania się wroga danego typu !

Zacznijmy od tego, że ustawiacie wroga jako zdarzenie równoległe na mapie (!!!)
Kolejną rzeczą jest wstawić dwie zmienne X i Y mają ciągle pobierać jego położenie na mapie.
Teraz najważniejsze tworzycie kolejną zmienna ruch wroga.

Teraz tworzymy pierwszy warunek dokładnie w tym samym zdarzeniu równoległym przeciwnika pod pobraniem jego położenia przez zmienne X i Y.

Jeśli ruch wroga =1 (if)
ustaw ruch postaci w lewo.
Jeśli inaczej (else)
Jeśli ruch wroga=2 (if)
ustaw ruch postaci w prawo
Jeśli inaczej (else)
Jesli ruch wroga=3 (if)
ustaw ruch postaci w górę
Jeśli inaczej (else)
Jeśli ruch wroga=4 (if)
ustaw ruch postaci w dół

Wystarczy ! Jeśli to skończyliście teraz przejdźmy do zdarzeń typowych (common event)
Stwórzmy nowe zdarzenie o nazwie "Pilot" XD Będzie to zdarzenie o właściwościach: równoległe. (Pararell Process)

Pilot będzie sterował naszym przeciwnikiem. W jaki sposób ? Będzie odpowiednio podawał wartość dla zmiennej ruch wroga. Zależnie jaką będzie mięć wartość w taki ruch będzie wykonywał nasz przeciwnik. W moim przykładzie wróg będzie poruszał się w lewo dla zmiennej ruch wroga =1, a w prawo dla zmiennej ruch wroga=2, a w górę dla zmiennej ruch wroga=3 w dół natomiast dla zmiennej ruch wroga=4. Podałem 4 warianty ruchów naszego przeciwnika czyli ruchy w 4 kierunkach. Jak możemy sterować naszym przeciwnikiem zależy już od potrzeb gry.

Ta metoda ma tylko zobrazować jak sterować wrogiem na odległość z poziomu zdarzeń typowych i jest to bardzo prosty przykład w waszej gestii leży go rozbudować zależnie od tego jakich ruchów od przeciwników wymagacie w swoich grach. Dzięki temu przykładowi skończy się kopiowanie wiele razy tego samego np: w grach zręcznościowych, ale także w strategicznych i turowych celem zedytowania/dodania nowych możliwości dla przeciwnika, na które wpadniecie później kiedy na wielu mapach będzie już masa przeciwników tego typu. Po co edytować je wszystkie z osobna ? Wystarczy typowe zdarzenie i mój pomysł na "pilota". Pamiętajcie jednak o prędkości poruszania się wrogów warto zastosować w zdarzeniu "pilot" opóźnienia trwające tyle ile zajmuje jeden krok naszego przeciwnika. To by było na tyle "enjoy"
Ostatnio zmieniony 18 gru 2010, 22:22 przez X-Tech, łącznie zmieniany 1 raz.
Awatar użytkownika
ŻbiXs

Golden Forki Special - Dema (zwycięstwo)
Posty: 319
Rejestracja: 19 lis 2007, 11:37
Lokalizacja: Totu-totam

Re: [2K3] Porada jak sterować przeciwnikami z typowych zdarz

Post autor: ŻbiXs »

Ok, tylko teraz zrób (standard) z 4-6 potworaków, badanie w kółko dla każdego kolejno x i y, x2 i y2, etc. + dowal 4-6 pararell process każdego pilota. Dorzuć jeszcze do tego jakieś zwyczajowe zdarzenia globalne na dzień/noc, obliczanie czasu gry, badanie x i y dla bohatera (do pominięcia jeśli potwory będą aktywować dobijanie przy "zwykłym dotknięciu") i ew. dla jaj generowanie pocisku/cięcia mieczem przed bohaterem oraz zdarzenie pararell process od sprawdzania x i y pocisku/cięcia na styknięcie z którymś z potworów (atak na nacisk potwora jest zbyt chaotyczny by trzymał klasę grywalnego ABSa). I dorzuć jeszcze zmienianie 4-6 zmiennych "ruch wroga n" pilotów zależnie od czegośtam.

Na sprzęcie 1-1,5 GHz i 256-512 RAM taki projekt RM2k(3) będzie z pewnością szałowo działał. (A trzeba brać pod uwagę, że większość ludu jeszcze z różnych przyczyn na takim siedzi...) :wink:
Ostatnio zmieniony 18 gru 2010, 19:57 przez ŻbiXs, łącznie zmieniany 1 raz.
Awatar użytkownika
Rave

Golden Forki 2010 - Dema (miejsce 2)
Posty: 2041
Rejestracja: 15 kwie 2009, 21:33
Lokalizacja: '; DROP TABLE 'Messages'

Re: [2K3] Porada jak sterować przeciwnikami z typowych zdarz

Post autor: Rave »

Buahahahahahaha.

ŻbiX, ty siebie lepiej przeczytaj. RM2k3 był robiony w czasach win98, ew. ME kiedy mało kto miał 256MB RAM-u i procka 1 GHz. Dlatego takie coś będzie działać z wystarczającą szybkością (20-40fps).
Awatar użytkownika
ŻbiXs

Golden Forki Special - Dema (zwycięstwo)
Posty: 319
Rejestracja: 19 lis 2007, 11:37
Lokalizacja: Totu-totam

Re: [2K3] Porada jak sterować przeciwnikami z typowych zdarz

Post autor: ŻbiXs »

Hmmm... o dziwo działa to wszystko w miarę płynnie w przeciwieństwie do testowego ABS, którego z pół roku temu dla jaj na podobny sposób próbowałem zrobić (koordynaty x i y dla większości zdarzeń)...
Albo to wina tych 512 RAM które miesiąc temu dowaliłem maszynie, albo lepiej czaję skrypcenie pętli i par.procesów, albo (co jest najbardziej prawdopodobne) RM2k stał się zuy i zwyczajnie przestał mnie lubić. :-(

No ale skoro już skleciłem tego mini ABSa z tymi "pilotami" obliczającego sobie gdzieś tam czas gry, no i skoro pasuje to do tematu, no to zarzucę. :wink:

http://www.zshare.net/download/8406961358cdae5a/
(Zrobiłem wszystko co wypisano tutaj http://tsukuru.pl/index.php?link=FAQ/norm + użyłem dodatkowo RMToola, więc powinno chodzić 101% bez RM2k i jego RTP)

Może ktoś kiedyś tą tak czy siakną biedę obczai... :lol:

@RAVE: Domyślałem się kiedy powstały 2k i 2k(3) już długi czas temu. A teraz po prostu miałem wątpliwości co do obecności dużej ilości generalnie potrzebnych pętli, i nadal poniekąd mam co do użyteczności stosowania tych pilotów...
Awatar użytkownika
X-Tech

Golden Forki 2009 - Pełne Wersje (miejsce 3)
Posty: 3268
Rejestracja: 22 lut 2008, 14:15

Re: [2K3] Porada jak sterować przeciwnikami z typowych zdarz

Post autor: X-Tech »

Żbix, ale ja robie horror na takim złomie i mi to szałowo działa :D projekt ma inteligentnych wrogów w tle lecą jeszcze inne zdarzenia koordynat, sprawdzania mapy itp. równoległych zdarzeń leci z 10 wszystko zależy nie ile na raz jest równoległych włączonych, ale bardziej od tego ile pracy one wykonują, bo można jednym równoległym mocno zamulić grę jeśli się ten event po prostu źle zbuduje. Zawsze bardziej wydajne są komendy, które są w typowych niż te które leżą na mapach !

Należy pamiętać o tym, że można w czymś takim nałożyć warunek, że póki dany wróg żyje będzie się to nasze zdarzenie pilota wykonywało (np: przełącznik if "istnieje"), a jak nie to nie zadziała dzięki temu pracować będzie tylko nad eventem, który istnieje, a jeśli go nie będzie na mapie lub będzie martwy wtedy ten proces będzie wyłączony (należy pamiętać o przełączeniu "istnieje" na off przy zniszczeniu wroga). Gwarantuję, że to będzie działać lepiej niż jakieś tam absy na masę eventów niepotrzebnych porozstawianych na mapach :D Ja to sam na bieżąco przerabiam i nad tym pracuję na prawdziwym złomie więc wiem co mówię to jest super wygodne i sprawdza się zawsze to nawet docenicie robiąc menu do gry, bo nie będziecie się musieli zastanawiać jak robić zamrożenie gry przy menu :P Genialnie ? A jak. Ja uważam, że to powinna być obowiązkowa metoda robienia komend ruchów na mapach w grach rpgmaker ! A jeśli mało zalet to pomyślcie o tym, że zaoszczędzi to wiele godzin pracy jeśli będziecie chcieli przerobić jednego przeciwnika na całą grę ! Świta wam ? To jest jak programowanie obiektowe ! Możecie zrobić absolutnie wszystko z wrogami bardzo małym wysiłkiem !
Awatar użytkownika
Foxer

Golden Forki 2008 - Dema (miejsce 2); TA Sprite Contest 3 (miejsce 3); Liga Mapperów Sezon II (miejsce 1); Liga Mapperów Sezon III (miejsce 2); TA Code-Off Edycja V (zwycięstwo)
Posty: 492
Rejestracja: 16 mar 2008, 13:23
Lokalizacja: Poznań

Re: [2K3] Porada jak sterować przeciwnikami z typowych zdarz

Post autor: Foxer »

ZbiX, kluczem jest tu napisanie dobrych skryptów. Mniej linijek, ten sam efekt, wszystko trzeba robić jak najszybszą drogą. No i trzeba właściwie zastosować komendę WAIT, nawet ustawienie jej na 0.0 sekund robi dużą różnicę.
Awatar użytkownika
X-Tech

Golden Forki 2009 - Pełne Wersje (miejsce 3)
Posty: 3268
Rejestracja: 22 lut 2008, 14:15

[2K3] Porada jak sterować przeciwnikami z typowych zdarzeń 2

Post autor: X-Tech »

Witam. Tym razem chciałem rozwinąć poprzednią poradę. Jak wiecie poprzednia służyła do możliwości sterowania danym typem przeciwnika w całej grze i łatwości jego edycji, ale teraz postanowiłem dokładniej pokazać jak zrobić nasz typ przeciwnika.

Tworzymy zmienną typ1. Ta zmienna będzie mówić jakiego typu przeciwnikiem będzie nasz przeciwnik numer 1. Pamiętacie zdarzenie typowe "pilot". Jeśli macie już przeciwnika na mapie zrobionego tak jak w poprzedniej części wejdźcie do zdarzenia pilot i wstawcie warunkek:

jeśli (if) typ1=1 :

W spełniony wpisujecie zestaw komend ustawiających naszego przeciwnika tak jak chcemy.

jeśli (if) typ2=2 :

Tutaj mamy również wpisać zestaw komend ustawiających naszego przeciwnika, ale będą to komendy dla wroga typu drugiego czyli np: dla innego gatunku potwora.

Jak zrobić żeby nasza gra rozpoznała jakiego typu potwór jest na mapie ? No bardzo prosto !
Wystarczy dodać do pararell process (równoległego zdarzenia przeciwnika) bezpośrednio pod sprawdzaniem położenia na mapie tego wroga ustawianie zmiennej typ1 na właściwą danemu przeciwnikowi. To zależy głównie od tego jaką grafikę wybraliśmy dla charsetu wroga. Jeśli będzie to np: wilk to dla typ1 wpiszemy w "pilota" komendy ruchu dla wilka pod warunkiem zmiennej typ1=1, oraz ustawimy zmienną typ1 bezpośrednio w zdarzeniu wilk na 1. Jeśli np: chcemy żeby pod dwójką było zombie zmienną typ1 ustawimy w zdarzeniu wroga na 2. Grafikę przeciwnika na zombie, a w zdarzenie pilota dodajemy warunek jeśli typ1=2 i wpisujemy komendy ruchu dla zombie. Tak to właśnie działa.

Mam nadzieję, że kolejna porada rozjaśniła wam trochę bardziej jak korzystać z mojego genialnego - patentu gwarantuje, że nie ma lepszego sposobu na projektowanie wrogów w grach rpgmaker na mapach !!! Niech scena 2k3 rośnie w siłę !!!

Jeśli masz poradę, która jest rozwinięciem poprzedniej to nie zakładaj nowego tematu.
ODPOWIEDZ