Pierwszy kamień milowy gry Meonlawel prawie osiągniętyDrukuj stronę
2020-08-23
Czas letni z pewnością nie nie pomaga moim bieżącym projektom - to na pewno. Dodatkowo, w połowie czerwca natknąłem się na konkurs Reset64 4K 'Craptastic' Game Compo, któremu po prostu nie mogłem się oprzeć... więc teraz, kiedy czekam na wyniki (czy Bring back my bones 4k dobrze się spisze?), mogę wreszcie się skupić nad moim wiecznym projektem, Meonlawel. Naszedł najwyższy czas - wrzesień jest tuż za rogiem. W tym roku zdecydowałem osiągnąć pierwszy kamień milowy tego projektu, który rozpocząłem w 2007 roku. Minęło już 13 lat, dodatkowo w 2011 roku zakres projektu eksplodował dramatycznie, gdy zacząłem przepisywać grę z BASICa pod assembler. Wtedy właśnie asemblera zacząłem się uczyć. W tym wpisie, chciałbym podzielić się z Wami postępem nad tym projektem, i zapewnić, że takich eksplozji więcej już w przyszłości nie będzie, jako, że projekt się ustabilizował.
Zapewne nie wiecie o tym, że od pięciu lat jeżdżę na deskorolce, przynajmniej dwa razy w tygodniu. Ale w okresie letnim, wiadomo, jeżdżę prawie codziennie. Zbalansowanie (sic!) czasu pomiędzy tym a pracą nad projektami gier nie jest łatwe, szczególnie gdy chcesz utrzymać dobre tempo dla obu tych hobby. Ale bez wątpliwości, deskorolka pomaga mi utrzymać balans w życiu i cieszyć się samym pisaniem gier.
Jako, że Meonlawel to długotrwały projekt hobby, który zacząłem przepisywać spod BASIC-a w 2011 roku, nigdy nie miałem oczekiwań w stosunku do tego, jak szybko mogę ten projekt ukończyć. I nadal nie mam. Nie będę ukrywał, że lubię pracować nad nim tylko wtedy, gdy naprawdę mam ochotę zrealizować jakiś dobry pomysł, który mogę zakodować lub narysować. Mimo wszystko, po tylu latach myślenia o tym projekcie, chciałem w końcu uchwycić główną ideę w zwartej formie. Ale by skupić się na budowaniu rozległych krain które nadały by całemu projektowi charakter, potrzebny jest solidny techniczny fundament, system gry. Tak podjąłem też decyzję by zdefiniować pierwszy kamień milowy tego projektu: stworzenie grywalnego prototypu i zapowiedzi tego, jak gra będzie się prezentować od strony wizualnej. Mam nadzieję, że prototyp ten Was wciągnie.
Pierwszy kamień milowy zawiera praktycznie wszystkie aspekty gry: odkrywanie, walki i interakcje ze światem, w różnych porach dnia i nocy. Obecnie, całość jest skompilowana w kartrydż o pojemności 128K, ale już pierwsze rezultaty wskazują na to, że ciężko będzie zmieścić całość w kartrydżu o pojemności 512K. Po 13-stu latach rozłożonych w czasie prac nad tym projektem, udało mi się połączyć wszystkie te klocki w jedną całość. Oto lista rzeczy, które już w grze działają:
- możliwość ładowania lokacji świata takich jak wioski, miasta, budynki i ich wnętrza, wszystkie skonstruowane z „kafelków” o rozmiarze 16x16 pikseli w postaci bitmapy w rozdzielczości hi-res
- schemat kolorów świata ulega zmianie w zależności od pory dnia (poranek, dzień, wieczór, noc)
- eksperymenty z efektem deszczu - pierwsze rezultaty naprawdę mi się podobają
- całkiem unikalny i wydajny parser do interakcji z obiektami znajdującymi się w świecie
- kilka środowiskowych animacji takich jak np. otwieranie drzwi czy animacja wody
- okna dialogowe ze specjalnie zaprojektowaną czcionką użyte do wyświetlania tekstu z lub bez ikonki postaci
- pierwsza wersja walk turowych, gdzie możliwa jest walka przeciwko dwóm typom wrogów posiadających własne statystyki postaci
- podstawowego system inwentarza używany w walkach
- edytor lokacji zawierająca także definiowanie „kafelków”, nie jest jeszcze idealny ale sprawdza się, i napisany został dla C64 w asemblerze, dzięki czemu możliwe jest tworzenie grafiki na prawdziwym sprzęcie
- proste zbalansowanie systemu walk poprzez symulację walk turowych, jako, że chciałbym uniknąć sytuacji nadmiernego „grindingu”, tj. żmudnej harówki nad doskonaleniem statystyk bohatera poprzez wycinanie hordy przeciwników - dobry początek w temacie balansowania gry
Ostatnia zaplanowana rzecz do osiągnięcia pierwszego kamienia milowego, nad którą obecnie jestem skupiony, to proceduralne generowanie lokacji z tzw. ziarna (z ang. seed) za pomocą którego chcę wygenerować lasy, podziemia, moczary, cmentarze itp. Po ukończeniu wszystkich tych aspektów technicznych, ostatnim krokiem będzie przygotowanie wersji demo z kilkoma małymi lokacjami otoczonymi lasem.
Planuję wydać to demo tylko na kartrydżu nie tylko dlatego, że planuję utworzyć potężny świat, ale ze względu na specyfikację techniczną. Sama grafika zajmie sporo miejsca - zapisana w rozdzielczości hi-res w postaci bitmapy - ze sporą ilością detali. Także przeciwnicy wyświetlani w walkach są całkiem potężni. W niespakowanej formie, ich rozmiary dochodzą nawet do około 72x48 pikseli, które przekładają się na około 430 bajtów dla bitmapy plus dodatkowe 50 bajtów dla kolorów ekranu, dla każdej postaci. Przed przystąpieniem do drugiego kamienia milowego, będę musiał się zorientować na ile będę mieć pełnej swobody do tworzenia różnych typów przeciwników i całego świata.
Co zawierać więc będzie drugi kamień milowy? I ile tych kamieni jeszcze przede mną?
W drugiej iteracji planuję zacząć budować historię i wątki poboczne. Będzie to także doskonały moment na obserwację, które części projektu można poddać dalszej optymalizacji. Nie jest mi jeszcze znany zakres, i ile kamieni milowych przede mną, ale napewno chcę przenieść się do świata Meonlawel. Zapewne będzie to dobry start by myśleć o balansie w grze, dodaniu magii i wątków powiązanych z wampiryzmem.
Pisanie tego projektu w asemblerze jest naprawdę satysfakcjonujące. A doświadczenie związane z uruchomieniem go na Commodore 64 jest wspaniałe. Prace więc trwają, mam zamiar wydać w tym roku pierwsze demo, pierwszy kamienień milowy. Mam nadzieję, że wyciągnę z tego dobrą lekcję, jeśli chodzi o opinie i ogólny odbiór. Do zobaczenia już za niedługo.
Nocą, gdy wampiry wybierają się na poszukiwanie dusz
Okno dialogowe w akcji
Turowa walka z niedokończonymi jeszcze graficznie postaciami
Pierwsza wersja robocza lasu, z różnymi wariantami
W chatce
Bitmapowy edytor plansz nazwany Bite Mapper