Tworzenie bijatyki w klikach

Klikipedia - klikowa encyklopedia
Skocz do: nawigacji, wyszukiwarki
Slimaczek.jpg
Pierwotna wersja tego artykułu pochodzi z 3. numeru Ślimaczka (zobacz oryginalny artykuł).


Autor.jpg
Autorem tego artykułu jest
Mr Knife

Artykuł ten porusza teoretyczne zagadnienia tworzenia gier typu bijatyka.

Wprowadzenie

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.

Zaczynamy

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.

Sztuczna inteligencja

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.

  1. 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ć.
  2. 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.

Zdarzenia

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 2 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.

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.