autor:
Mr Knife
Dlaczego powstaje tak mało bijatyk
klikowych?
No właśnie, w Polsce ten rodzaj gier jest wręcz niespotykany. Tak
naprawdę nie jest w stanie wymienić chociażby jednej takiej gry z
prawdziwego zdarzenia. Żadnej... na pewno tak się dzieje z kilku
ważnych powodów, bo przecież z jednym dałoby się uporać.
No to rozłóżmy grę na czynniki pierwsze: grafika,
silnik gry, AI. To kluczowe elementy gry tego typu. Co do
wykonania grafiki to nie mam wątpliwości (dużo klatek animacji = dużo
pracy). O ile z drugim elementem nie jest jeszcze tak źle, to ostatni
stanowi kolejną barierę. Pomyślmy przez chwilę: wypadałoby dla
każdej postaci dać odpowiedni zestaw kombosów, weźmy tylko 8 postaci i
znowu kolejny wysoki mur do przebycia. Mówię tu oczywiście o grze z
prawdziwego zdarzenia, prosta bijatyka to nie problem, przynajmniej w
teorii. Wracając do tej inteligencji trzeba wspomnieć o masie zdarzeń do
ustalenia, każdą postacią trzeba zająć się z osobna, na nowo
zaprogramować kombos. Bez dobrego planu, chaos w kodzie pewny.
Dodatkowo jeszcze będą potrzebne skrypty odpowiedzialne za dane
zachowanie. Kiedy blok, kiedy unik, kiedy kopniak... można tak długo
wymieniać. Podsumujmy, aby to wykonać trzeba być niezłym w te klocki,
przyda się również dobra orientacja w terenie tzn. w zdarzeniach i jeszcze
ta grafika. Ale czy na pewno bijatyka to taki duży problem? Otóż NIE.
No to zaczynamy - czyli ogólnie o tym co będzie potrzebne, czego
wymagamy od gry itp.
W tym akapicie (zresztą i w całym tekście) ominę resztę elementów
tzn. dźwięki, muzykę, fabułę, menu, a skupię się na 3 wspomnianych wyżej
elementach z dużym naciskiem na ten ostatni. Zaczynamy od początku,
czyli od 1 elementu jakim jest grafika. Nie będę ukrywał czy też
kłamał, że to moja dziedzina, więc zaznaczam od razu. GRAFIK ZE MNIE
MARNY, ale dzięki temu znam parę sztuczek, które może się komuś przydadzą.
Po pierwsze robimy prawdziwą bijatykę (podkreślam), więc postacie
nie mogą być takie tyci tyci. Niestety musimy się trochę pomęczyć,
ale naprawdę warto. Gdzie nie ma konkurencji, szanse na sukces rosną.
Wspominałem o jakiś trikach, tak naprawdę to znam tylko jeden. Mugen +
Mugen Character Maker, choć wystarczy tylko to drugie i postacie, które
można ściągnąć oddzielnie. Program jest o tyle fajny, że możemy dokładnie
prześledzić wszystkie klatki postaci występujące w grze. Piękna sprawa
podczas robienia animacji.
Przejdźmy do sedna sprawy, a więc zajmijmy się AI.
Wiem wiem, silnik był drugi, ale do niego wrócimy na końcu
. Skomplikowane AI ogólnie kojarzy się z
zdarzeniami ciągnącymi się kilometrami, czas to zmienić. Nie warto
zaśmiecać kodu dokładnym programowaniem każdego kombosu, każdej
reakcji, mozolnego wklepywania kolejnych bardzo podobnych linijek zdarzeń.
Szkoda czasu i cennego miejsca. Tak, w porównaniu do zwykłego .txt
zdarzenia są o wiele bardziej miejscożerne. Ale co z tym mają wspólnego
pliki tekstowe? Otóż dużo. Jeśli komuś się wydaje, że grzebanie w kodzie i
"mieć wtedy nad wszystkim pełną kontrolę" wystarczy by łatwo AI
zrobić, jest w błędzie. Powtórka, czy jak wolicie replay - na tym
oprzemy naszą inteligencję. Poszukajcie w necie jakiś przykład, lub
najzwyczajniej zróbcie go sami. Ok, macie. Doróbcie jeszcze ruch i czas
zacząć nagrywanie, biegajcie, róbcie uniki, podskakujcie. Teraz przełóż to
samo na zdarzenia tzn. zaprogramuj je tylko w TGF'ie. Prawda, że
męczące i uciążliwe. Jak to proste doświadczenie wykorzystać przy robieniu
naszej bijatyki? Oczywiście w taki sam sposób wykonać kombosy.
Mamy na to kilka sposobów, bo samo odgrywanie z danej pozycji nie
wystarczy (przecież nie znamy aktualnej pozycji zawodnika, a zapisanie
wszystkich możliwości mija się z celem), dlatego zaraz opiszę dwie, według
mnie najlepsze metody na silnik czytający kombosy.
a) czytnik znakowy - sama nazwa wskazuje, że kombos jest
zapisany w jakimś ciągu liter. Po przygotowaniu odpowiedniej palety liter
możemy zaczynać np. p - kilka kroków w prawo, j - podskok itd. Teraz
wszystkie te zachowania wykonujemy w TGF'ie. Po prostu robimy
podskok, programujemy kilka różnych odmian ciosów. Gdy już z tym się
uporamy, układamy kombosy, tak samo jak puzzle. Możliwości mamy
bardzo dużo i jeśli kod jest dobrze przemyślany (np. x - biegnij w prawo
zanim nie będziesz w odpowiedniej odległości od gracza) zrobisz bardzo
skomplikowane i efektowne kombosy. Co prawda będą do siebie trochę
podobne, w końcu to z tych samych klocków się składają, ale większość
powinny zadowolić.
b) czytnik pozycyjny - patrz wyżej z tą różnicą, że zamiast ciągu
różnych znaków, zapisujemy zmieniającą się pozycję zawodnika tzn. pozycja
x + 2 itd. i dane animacje. Tworzeni kombosów o wiele trudniejsze,
ale niezwykle duża swoboda podczas rekompensuje ten drobny szczegół. Bez
znaków specjalnych się nie obejdzie, ale będą one w o wiele mniejszych
ilościach niż w poprzednim silniku.
Wracając do silnika
Nie będę opisywał zdarzeń, bo to nie kurs, w którym prowadzę
czytelnika za rączkę. W końcu chcecie się czegoś nauczyć. Jeśli siedzisz w
klikach od dawna możesz ominąć ten akapit. Silnik oczywiście będzie
opierać się na plikach tekstowych, czyli najwygodniej ini. Do tego
dochodzi jeszcze String Parser przy czytaniu kombosów. Jako,
że nazwałem ten akapit SILNIK, a jak na razie pisze tylko o AI...
po prostu przy robieniu go, wykorzystaj to samo co przy inteligencji.
Kombosy gracza, można również zapisać w plikach tekstowych i w
odpowiednich momentach puszczać. Odpowiednich momentach tzn. po
wprowadzeniu danej kombinacji klawiszy. Najlepiej przechwytuj klawisze
przy pomocy Edit Object i porównuj ciosy według wprowadzanego
tekstu. Jak odpowiednio za to się zabierzesz to spokojnie ci się uda.
Pamiętaj liczy się plan, nawet przy tak durnej rzeczy jak "pobieranie
liter z klawiatury". Robimy przecież prawdziwą bijatykę (znów podkreślam)
i wszystko ma pięknie działać, a więc trzeba na to trochę czasu poświęcić.
Aha nie wspomniałem o jeszcze jednej ważnej rzeczy. Same animacje, bez
odpowiednich skryptów będą bezużyteczne. W samym TGF należy
opracować zdarzenia odpowiedzialne za "kontrolowanie sytuacji" i w
danym momencie puszczać daną reakcję zawodnika. Jego rozum można, zastąpić
losowością, ale nie należy z tym przesadzać. Najlepiej przygotować
kilka sytuacji i dać do tego kilka różnych rozwiązań, wybieranych losowo.
Efekt złudzenia, iż komputer zachowuje się jak prawdziwy gracz powinien
(przynajmniej trochę) udać się, a więc nasz cel osiągnięty.
Na zakończenie...
Na pewno nie opisałem tutaj wszystkich ważnych rzeczy, problemów
związanych z tworzeniem bijatyki, ale moim celem było tylko przyjrzenie
się tej tematyce. Mam nadzieję, że najważniejszym elementem zająłem się
wystarczająco dokładnie. Jakby coś było niejasne, pisać, postaram się
pomóc. Na zdarzenia nie macie jednak co liczyć. To wasza bijatyka i wasz
problem .
PS. Wszystkie te uwagi tyczą się tylko bijatyki 1 vs 1, czyli nie
popularnie zwanej "chodzonej" typu Litle Fighter, a "arenowej" pokroju Mortal Combat. Raczej silniczek ten, nie poradziłby sobie wyświetlaniem
wielu fighterów naraz.
|