Heroic Hero #1: Przed wyruszeniem w drogę...
Pojawiłem się w połowie tego roku, pisałem tutaj zawsze, kiedy chciałem i mogłem. Ostatnio wpisy pojawiały się rzadko. Ale wracam i zapowiadam nową serię devlogów z tworzenia mojej nowej gry Heroic Hero (czy też The Tale of a Heroic Hero)! Chciałbym, by te devlogi były interesujące zarówno dla znających tajniki gamedevu, jak i ciekawe dla śmiertelnych zjadaczy chleba. Będą one poniekąd publiczną dokumentacją mojego procesu tworzenia i nie dbam o to, kto czyta czy nie (chociaż, nie owijajmy w bawełnę, nie jestem obojętny dobrym słowem lub dobrej, konstruktywnej krytyki). Tyle słowem wstępu!
Zanim pojawił się Heroic Hero...
Nie chcę powiedzieć, że nic nie robiłem przez cały ten czas. Dlatego też chciałbym opowiedzieć o którtkich epizodach które odbiegały od tego, czym zajmowałem się dotychczas. Oczywiście Czytelnik, który chce od razu przejść do mięsa tego devloga - ma możliwość przejścia do następnego nagłówka tekstu!
Tuż po walce z grawitacją i sterowaniem w Flip 'n' Shift (dla zainteresowanych i niewtajemniczonych zostawiam link do tekstu) i w międzyczasie eksperymentowania z problemem trzech ciał, zainstalowałem IntelliJ IDEA (po ludzku IDE to środowisko programistyczne, czyli program do programowania), dla którego musiałem zwolnić miejsce na dysku. Ale do czego miało mi się przydać IDE od JetBrains? Skoro natywnie działa z Javą, a Minecraft: Java Edition powstał w Javie, potrzebowałem IDE które pozwoli mi na łatwą i wygodną pracę przy modowaniu Minecrafta. Wpadłem - chyba po raz pierwszy w życiu (dziwne że tak późno) - w największą i najczęstszą pułapkę początkującego programisty, zwaną Tutorial Hell. Czyli oglądanie w kółko samouczków o czymś i nic w praktyce nie robić. Ostatecznie udało mi się stworzyć własny przedmiot (do niczego nie służący) i zrozumiałem kilka rzeczy. Pierwsze primo: nie wpadaj w Tutorial Hell, nawet, jeśli łatwiej powiedzieć, niż zrobić. Drugie primo: chociaż słowo "dokumentacja" brzmi ciężko, to często jest ona napisana prostym językiem i jest to twoja najlepsza przyjaciółka. Trzecie primo: zanim sięgniesz po trudniejsze języki programowania, najpierw ucz się łatwiejszych. Początkowo uczyłęm się C#, ale ten język był zbyt przytłaczający i nic z niego nie zapamiętałem (poza najważniejszymi podstawami). Odkąd programuję już rok w JavaScript, tworzenie moda w Javie nie było aż tak skomplikowane (chociaż nie zrobiłem nic oszałamiającego).
Chyba za bardzo się rozwodniłem, przejdźmy do epizodu II, czyli GameMaker. Nie oglądałem żadnych samouczków i próbowałem samodzielnie odnaleźć się w sytuacji. I nie było to zaskakująco trudne, jeśli nawet na co dzień tworzę gry w dobrze wyglądającym silniku ct.js (inne programy, takie jak GameMaker, Unity czy Godot mają - według mojej opinii - bardzo surowy wygląd). Programowanie opiera się na podobnych, jak nie takich samych eventach co w ct.js, a składnia niewiele różni się od JavaScriptu. Największą różnicę - jak pewnie w każdym innym silniku - okazało się używanie klawiatury. Ale i to nie było trudne, była to tylko inna filozofia programowania. Mogę wyciągnąć naukę i stąd: wiedza programistyczna jest uniwersalna dla wielu narzędzi.
Pierwsze kroki w Heroic Hero
Przepraszam. Rozpisałem się. Chyba znowu...
Skąd tytuł? Heroic Hero ma być grą przygodową top-down w klimacie baśniowym z lekką fabułą, której bohaterem jest Bohater, który zapomniał, kim jest, skąd idzie i dokąd zmierza. Na ten klimat nakierował mnie assetpack Pixel Frog z Itch.io, którego używam. Na ten moment sam nie wiem, do jakiej gry ją porównać - więc i ja nie wiem, dokąd zmierzam.
Jednak Heroic Hero nie jest jedynie moim planowanym projektem! Wróciłem do korzeni ct.js. Na moment pisania tego devloga posiadam już - chociaż to (bardzo) niewiele - działającą postać gracza. Ale zabrało mi to więcej czasu, niż przewidywałem. Dlaczego? Bo nienawidzę maszyny stanów (o czym opowiadałem tutaj). Zaimplementowanie tego systemu wymagało ode mnie kilka godzin główkowania nad zależnościami, poprawnym wyświetlaniu odpowiedniej animacji i zabezpieczania systemu przed błędami, których doznałem. Aby rozwiązać jeden z problemów, musiałem odpalić program graficzny i zmodyfikować spritesheet (grafikę z poszczególnymi klatkami animacji). Najwięcej największych kłopotów przysporzyła mi animacja ataku, a to nawet nie przez używanie dwóch (to było proste). Za to napisanie kodu odpowiadającego za ruch gracza było proste, chociaż niekoniecznie dopracowane w 100% jak maszyna stanów i animacji. Wynikiem tej pracy jest płynne przyspieszanie oraz spowalnianie gracza zamiast jego stałej prędkości. Na ruch gracza wpływa również atak, który go spowalnia. Obecnym mankamentem jest większa szybkość gracza po skosie niż po pionie i poziomie, co jest częstą wadą gier top-down na wczesnym etapie tworzenia.
.png)
[To miał być GIF, ale cóż...]
Na zakończenie
Dla zainteresowanych dalszym rozwojem gry mam dobrą wiadomość: devlogi będą pojawiać się w środy co tydzień, w wyjątkowych przypadkach co dwa. Równolegle jak na PPE będą dostępne na Substacku. Kiedy tylko w grze będzie coś więcej, pojawi się na moim Itch.io. Dziękuję za przeczytanie i zapraszam do ankiety, ponieważ nie umiem zdecydować się na tytuł gry.