Drugi preview mojego eksperymentalnego silnika dla C64 Ultimate pokazuje przede wszystkim workflow do tworzenia animowanych teł, ale przy okazji doszło sporo nowych elementów gameplayu.
To nadal nie jest jeszcze gra, ale engine coraz wyraźniej zaczyna przypominać kompletne środowisko do jej zbudowania.
W poprzednim artykule opisywałem pierwszy publiczny pokaz mojego eksperymentalnego silnika dla C64 Ultimate. Był to bardziej ogólny proof of concept: sprawdzenie, czy pomysł na duże, bitmapowe, animowane światy na C64 Ultimate ma w ogóle sens i czy da się połączyć Oscar64, REU, Ultimate Audio oraz własny workflow do przygotowywania assetów.
Od tamtego czasu projekt poszedł krok dalej. Opublikowałem drugi film z serii, czyli kolejne preview mojego C64 Ultimate game engine. Od razu zaznaczę to samo, co na początku materiału: to nadal nie jest gra. Jeszcze nie. To kolejny proof of concept, ale tym razem dużo bardziej skupiony na uproszczeniu workflow’u.
Commodore 64 Ultimate Game Engine Preview #2
Najważniejszą częścią tego preview jest (nadal) subsystem animowanych backgroundów. Chodzi o możliwość tworzenia dowolnej liczby bitmapowych ekranów, z dowolną liczbą animowanych klatek. W praktyce oznacza to, że engine nie jest ograniczony tylko do jednej planszy czy jednego typu ekranu. Takie bitmapowe ekrany mogą być wykorzystane jako właściwe mapy gry, ale też jako ekrany tytułowe, panele, pauza, cut-scenki itp.
Od początku nie chciałem pisać jednorazowego kodu tylko pod jedno demo/POC. Ultiengine (w sumie nie wiem czy tak to się będzie oficjalnie nazywać, bo oficjalnej nazwy temu jeszcze nie nadałem ;)) ma być czymś w rodzaju środowiska do budowania gry: runtime na C64 Ultimate plus narzędzia do przygotowania map, grafik, animacji, aktorów i danych.
W drugim preview widać m.in eksperymenty z efektem przypominającym interlace oraz bitmapowe fonty. Na dole ekranu pojawia się minimalny HUD z życiem gracza i liczbą żyć. To mały element wizualnie, ale istotny od strony engine’u, bo zaczyna łączyć świat gry z interfejsem gracza. No i po kolei testuję różne rzeczy dodawane z mojej listy TO-DO.
Doszły również samplowane efekty dźwiękowe odtwarzane bezpośrednio z REU. W filmie słychać pewne opóźnienie dźwięku, ale wynika ono ze streamowania do OBS. Na prawdziwej maszynie tego laga nie ma. Aha, dla ciekawskich, przetestowałem i działa to jak na razie identycznie na Ultimate 64 od Gideona (na 48MHz). Pokażę to najkoś na filmiku następnym razem. Pokażę też jak się uda jak to działa na monitorze CRT z epoki bo wg mnie wygląda to tam dużo lepiej niż na HDMI no i tła w interlace bardzo fajnie się „blendują”.
Druga duża grupa zmian dotyczy aktorów, kolizji i gameplayu. Aktor to taka struktura w kodzie do obługi wszystkiego co się porusza. Pomysł podpatrzony w Scorpion Engine na Amidze. Każdy aktor, pocisk i projectile może mieć własny hitbox zdefiniowany dość elastycznie w GUI. Aktorzy mogą kolidować z tilesetem i mapą, a pociski potrafią odbijać się od logiki świata, na przykład znikać po trafieniu w ścianę. To już nie jest tylko pokaz grafiki, ale początek systemów, które można wykorzystać w realnej grze. Zaczyna to jakoś i działać i wyglądać.





W preview pojawia się też spawn aktorów z bloków oraz spawn aktorów przez innych aktorów. Innymi słowy: blok na mapie może stworzyć obiekt, a przeciwnik może wystrzelić pocisk albo wygenerować kolejnego aktora. Do tego dochodzi respawn po śmierci gracza oraz hitboxy gracza definiowane w edytorze. Te nowe rzeczy może nie są jakieś spektakularne, ale jak dla mnie ważne i troche mi czasu zajęły. Poza tym… były wakacje 😉
Bardzo zależało mi też na diagonal slopes, czyli ukośnych powierzchniach, po których gracz może się poruszać. Zawsze chciałem mieć je w engine, bo nie są czymś, co bardzo często widuje się w grach na C64. Kojarzę tylko chyba w Mayhem in Monsterland coś takiego było. W preview widać pierwszą działającą wersję takich skosów prowadzących w górę.
Kolejna rzecz to zmiana zachowania gracza: zeskakiwanie z platformy, kucanie, wolniejsze poruszanie się w tej pozycji oraz dynamiczna zmiana sprite’a i hitboxa. Z punktu widzenia gracza wygląda to naturalnie, ale od strony engine’u oznacza współpracę animacji, wejścia, kolizji, hitboxów i logiki postaci. Generalnie mogę mieć kilku aktorów typu player i sobie po prostu ich przełączać.
W filmie pokazuję też kilka różnych scenerii i eksperymentów z tłem. Tworzenie takich animowanych backgroundów jest czasochłonne, szczególnie w trybie C64 Multicolor, ale efekt jest wart wysiłku. Wszystkie grafiki i animacje przygotowuję w Aseprite (i w Photoshopie), a potem eksportuję je do formatu używanego przez silnik.

Pod koniec materiału pojawia się też krótki sneak peek GUI engine’u. To dla mnie jeden z najważniejszych elementów całego projektu. Sam runtime to tylko połowa historii (no, może trochę więcej niż połowa). Druga połowa to edytor i workflow, bez których tworzenie większej gry szybko zamieniłoby się w ręczne przepisywanie tabelek i danych.
Obecnie GUI pozwala pracować między innymi z tilemap editor, aktorami rozmieszczonymi na mapie, hitboxami aktorów, podglądem animacji, parametrami aktorów, symulatorem do testowania map oraz eksportem assetów do REU. To właśnie ten kierunek wydaje mi się najciekawszy: nie tylko robić efekty na C64 Ultimate, ale zbudować narzędzie, które pozwoli takie efekty produkować względnie wygodnie i powtarzalnie. Wnikliwe oko widzi co to za edytor, ale więcej o tym opowiem w kolejnych filmach.
W porównaniu z pierwszym preview ten drugi materiał jest bardziej o tym, jak z pojedynczych eksperymentów zrobić teraz system. Animowane tła, hitboxy, actors spawning actors, bloki generujące obiekty, slopes, HUD, SFX z REU i edytor zaczynają składać się w coś większego. Co mnie w sumie cieszy bo przy okazji tworzenia tego jest sporo dobrej zabawy.
To nadal nie jest jeszcze gra. Ale coraz bardziej widać maszynę i narzędzia, która ma tę grę udźwignąć.

Musisz być zalogowany, aby dodać komentarz.