W ciągu ostatnich miesięcy byłem zajęty programowaniem 2D JRPG (japońskiego stylu RPG) w C ++ przy użyciu biblioteki SDL. Tryb eksploracji jest mniej więcej gotowy. Teraz zajmuję się trybem bitwy.
Nie udało mi się znaleźć żadnych zasobów na temat struktury klasycznego turowego systemu bitewnego JRPG. Wszystko, co znajduję, to dyskusje na temat formuły obrażeń. Próbowałem google, przeszukiwania forum gamedev.net i przeszukiwania pytań związanych z C ++ tutaj na Stack Exchange. Próbowałem też czytać kod źródłowy istniejących gier RPG typu open source, ale bez jakiegoś przewodnika to tak, jakby próbować znaleźć igłę w stogu siana.
Nie szukam zestawu zasad takich jak D&D czy coś podobnego. Mówię wyłącznie o kodzie i projektowaniu struktury obiektów. System bitwy prosi gracza o dane wejściowe za pomocą menu. Następnie tura bitwy jest wykonywana, gdy bohaterowie i wrogowie wykonują swoje akcje.
Czy ktoś może skierować mnie we właściwym kierunku? Z góry dziękuję.
Odpowiedzi:
Nigdy nie widziałem zbyt wielu zasobów na ten temat, ale najlepszy, jaki znalazłem, to prawdopodobnie:
Zapewnia wgląd w AI przeciwnika, takie jak to:
Dzięki temu możesz zobaczyć, że twoi wrogowie prawdopodobnie będą potrzebować maszyny stanów do zarządzania różnymi stanami, w których mogą się znajdować, a każdy stan będzie miał własne zachowanie do wykonania każdej tury, albo zakodowane we wrogu, albo sterowane danymi przez skrypty język.
Istnieje wiele różnic nawet między turowymi JRPG, więc nie ma zestawu reguł dla wszystkich z nich. Na przykład możesz wydać wszystkie polecenia drużyny, zanim którekolwiek z nich się wydarzy, lub mogą one nastąpić natychmiast po dokonaniu wyboru. Kolejność ataku może być losowa lub częściej określana na podstawie statystyki Prędkości.
Ale na przykład załóżmy, że masz system bitwy oparty wyłącznie na turach, w którym najpierw wydajesz wszystkie polecenia drużyny, a następnie cała akcja dzieje się na końcu tury. Możesz podejść do tego w następujący sposób:
Mechanika Bitwa FAQ ma również wiele przydatnych informacji, w szczególności na temat zarządzania czasem w walkach. Ale niestety ten system (znany również jako ATB lub Active Time Battle) jest opatentowany, więc nie możesz zrobić czegoś podobnego.
EDYCJA Ostatnio znalazłem też tę stronę internetową, która zawiera wiele technicznych informacji na temat implementacji FF7. Niestety sekcje modułu bitewnego nie wydają się jeszcze w pełni napisane.
źródło