MediEvil w Unreal Engine 4, czyli zwieńczenie radosnej twórczości
Jednooki bohater ponownie spoczął w swej krypcie. Najpierw, gdy pokonał Zaroka, a później - razem z niebieskoskórą niewiastą, gdy stawił czoła Palethornowi. I czekał tak ów bohater, aż znowu przyjdzie mu ratować świat, ale wyglądało na to, że światu nic nie zagraża... Hę? Że co? Że MediEvil Remaster? Chwila, który mamy rok?
No i stało się. Wydarzenie, które w najmniej oczekiwanym momencie spędza sen z powiek, zaburzając nienaruszoną od lat ciszę w Gallowmerowym eterze. Wydarzenie, na które wszyscy fani czekali, choć od dawna było to raczej marzenie ściętej głowy. Ale jak widać nadzieja umiera ostatnia. Wciąż nie mogę w to uwierzyć, ale zapowiedziano MediEvil Remaster!
Wiadomość ta jest jednak jednocześnie pozytywna, ale też trochę smutna. Pozytywna z oczywistych względów - któż nie chciałby pohasać ponownie zakutym w zbroję szkieletem, siekając przy tym radośnie kolejne fale zombiaków czy innych pokrak? Tym bardziej w odświeżonej grafice na PS4. Tutaj nie ma co gdybać - brać, grać, nie dyskutować. Jednak jest w tym wszystkim druga, trochę mniej optymistyczna strona medalu. Jak już pod poprzednim blogiem napisałem - zapowiedź powrotu MediEvila automatycznie oznacza koniec mojego fanowskiego projektu. Projektu, który zakładał hobbystyczne odtwarzanie kolejnych elementów MediEvila 2 na silniku Unreal Engine 4. No i cóż - choć było jeszcze trochę planów na dalszy rozwój, tak na chwilę obecną nie ma już większego sensu tego ciągnąć. Tak więc czas na małe podsumowanie i ostateczną wersję Dan-Hand Game.
(Wielkie dzięki dla użytkownika super z sirdanielfortesque.proboards.com za przygotowanie powyższego wideo)
Poprzednie wersje mojej małej gierki pozwalały na chodzenie mini-Danem po poziomie "The Professor's Lab". Nie za wiele można tam było robić, ale nie w tym sęk. Nigdy nie chodziło o możliwość robienia czegokolwiek w tej grze. To bardziej coś w stylu prostego dema, odpowiedzi na pytanie "co by było, gdyby MediEvil dostał swój remaster". Tak więc jeśli ktoś jest zainteresowany poprzednią wersją, zapraszam do odpowiedniego bloga.
Ale Laboratorium Hamiltona Kifta to jedno. To już było i zostało opisane przeze mnie wcześniej. To, na czym chciałbym się teraz skupić, to nowości. I taką właśnie nowością jest drugi dostępny w grze poziom - Wulfum Hall. Co prawda nie cały, bo niestety nie mam aż tyle wolnego czasu - ale zewnętrzna część jest dostępna do zwiedzania ;) Tutaj chciałbym zwrócić uwagę na pewną kwestię związaną z odtwarzaniem wizualnej strony gier, które mają już swoje lata. Szczególnie tych z czasów PSX-a i wcześniej. Chodzi o to, że im gra jest starsza, tym graficzne uproszczenia z racji na technologię są większe. Oczywista sprawa. Gdy odtwarza się dany element gry, trzeba nie tylko zwiększyć mu rozdzielczość, liczbę trójkątów, ale też nanieść nowe szczegóły, których w oryginale nie było, lub były dość symbolicznie przedstawione. O ile mamy do czynienia z elementami takimi jak na przykład trawa - nie ma problemu. W końcu jak trawa wygląda każdy widzi. Ale do czego zmierzam? Otóż niektóre elementy nie są tak proste i bez dostępu do oryginalnych concept artów trudno rozszyfrować "co autor miał na myśli". Jednym z takich elementów były dla mnie gargulce na dachu budynku.
Posługując się profesjonalnym narzędziem, czyli screenshotem z emulatora wywnioskowałem, że w oryginale nie są one nawet trójwymiarowymi obiektami. Choć może to i lepiej. Widać tylko zarys pozy, w jakiej się znajdują oraz szary kolor wskazujący na to, że są one zrobione z kamienia, betonu lub innego, podobnego materiału. Mimo wszystko starałem się patrzeć na sprawę z trochę bardziej optymistycznej strony - przynajmniej margines błędu był duży, pozostawiając spore pole do popisu na własną interpretację. I tym właśnie są owe gargulce w mojej wersji MediEvila - własną interpretacją. Która mam nadzieję, jest jednocześnie wystarczająco zbliżona do oryginału.
No ale budynek jak budynek. Nowe mury, bramy, okna, roślinność i tak dalej - to wszystko jest ważne. Ale nie tylko elementy otoczenia mają swoje 5 minut w nowej wersji Dan-Hand Game. Pisałem o tym już wcześniej, ale napiszę znowu. Postanowiłem również odświeżyć model głównego bohatera - Sir Daniela Fortesque. I tak jak w przypadku otoczenia, tak i tutaj podciągnięcie rozdzielczości i zaokrąglenie krawędzi to trochę za mało. Trzeba się było przyjrzeć i zastanowić, z jakich materiałów wykonane są poszczególne elementy i jak można dodać im szczegółów zachowując jednocześnie oryginalny wygląd. Tak więc na metalowej zbroi pojawiły się różnego rodzaju zarysowana, rdza, trochę brudu oraz drobne zdobienia dodające nieco detalu. Bufiaste rękawy koszuli mają widoczną strukturę materiału, nieco zabrudzeń i przebarwień. A skórzane rękawiczki, no cóż - skórzaną powierzchnię, również trochę zabrudzeń i widoczne szwy.
Oprócz tego, miecz i tarcza też się tutaj znalazły w nieco "wyładnionej" wersji. W końcu czymś trzeba się posługiwać przy obronie Gallowmere, prawda? Muszę przyznać, że dodawanie kolejnych warstw detali do postaci, które widziało się już setki razy w niższej rozdzielczości, potrafi być bardzo fajną zabawą. Polecam każdemu, kto ma jakieś zapędy do grafiki.
MediEvil to oczywiście nie tylko Sir Daniel. Wcześniej pojawiła się już księżniczka Kiya, ale jej również udzieliło się kilka poprawek wraz z nową wersją projektu. Mamy więc kolejno: nieco lepszą teksturę twarzy (choć raczej trudno to zauważyć), nowe oczy, dodane rzęsy, trochę zmienione zdobienia na biżuterii, klejnot na brzuchu i co najważniejsze - zupełnie nowe włosy z bardziej zaawansowaną niż wcześniej fizyką. Nad tym ostatnim elementem spędziłem najwięcej czasu studiując dokładnie dokumentację UE4. Jako, że od niedawna w silniku dostępne jest wbudowane narzędzie do tworzenia symulacji ubrań, postanowiłem ten fakt wykorzystać. Więc tak - z punktu widzenia Unreal Engine włosy księżniczki Kiyi to element ubrania. Ale hej - jeśli coś jest głupie ale działa, to znaczy, że nie jest głupie. Efekt wciąż nie jest idealny, ale wydaje mi się, że mimo wszystko i tak jest dużo lepiej, niż było wcześniej. Zresztą najlepiej będzie, jeśli pokażę tutaj odpowiedniego gifa z efektem końcowym.
https://i.imgur.com/N74P9qj.mp4
Na koniec chciałbym napisać jeszcze kilka słów o roślinności. To, że taki element się w grze znajduje nie jest zapewne żadną tajemnicą. Element ten jednak był, a właściwie nadaj jest miejscami nieco problematyczny. Chodzi głównie o wydajność i optymalizację bujnej trawy, nadrzewnego listowia czy innej zieleniny. Wbrew pozorom to wcale nie jest taka prosta sprawa. Nie tylko ze względu na zagęszczenie i wynikającą z tego ilość obiektów. To akurat jest tylko wierzchołek góry lodowej i stosunkowo najprostszy do rozwiązania problem. W końcu chyba każdy gracz słyszał o systemie LOD. Bardziej problematyczny jest tzw. overdrawing, czyli nawarstwianie się na siebie kolejnych elementów z kanałem alpha. Im więcej takich przezroczystych powierzchni się na siebie nakłada, tym gorzej. Przykładowo - gdybyśmy mieli nałożone na siebie 10 kwadratowych obiektów bez przezroczystości - silnik przy wykonywaniu obliczeń zobaczy, że ten pierwszy zasłania resztę, więc na tym kalkulacje się kończą i pozostałe nie są brane pod uwagę. W przypadku, gdy na owe kwadraty nałożymy teksturę liści z kanałem alpha, zaczynają się schody. Gdy obliczany jest piksel, na którym akurat jest widoczny liść - nie ma sprawy, bo zasłania on elementy za sobą. Problem zaczyna się, gdy dochodzimy do przezroczystych obszarów. Z punktu widzenia silnika w danym miejscu znajduje się obiekt, a więc musi on go obliczyć. Dany piksel jest przezroczysty, a więc trzeba liczyć kolejny element, który znajduje się za nim. Kolejny element również jest przezroczysty, więc idziemy jeszcze dalej. I tak do momentu, gdy silnik natrafi w końcu na jakąś stałą powierzchnię, po drodze marnując zasoby na renderowanie czegoś, czego i tak nie widać. To tak w dużym uproszczeniu, bo przecież procent przezroczystości danego piksela na teksturze również może być różny, co dodatkowo komplikuje sprawę. Niestety, sam dowiedziałem się o tym fakcie stosunkowo późno, więc nie byłem już w stanie za dużo z tym fantem zrobić, bez gruntownej przebudowy trawy, czy drzew. Tak więc jeśli komuś Wulfrum Hall będzie się przycinać to niech wie, że to z powodu roślinności. Biję się w pierś z tego powodu.
Skoro już o roślinach mowa - z racji na fakt, że scena jest dość mała, pokusiłem się o trawę, która reaguje na gracza. System ten nie jest jakoś specjalnie zaawansowany. Wręcz przeciwnie - jest to chyba najprostsze możliwe rozwiązanie, które sprawa, że źdźbła trawy odchylają się od gracza reagując na jego ruchy. Nie jest to bardzo problematyczne, ponieważ w grze tak czy siak cała zielenina kołysze się na wietrze, a to właśnie na tym systemie bazuje reakcja trawy. Do bazowego kołysania się, dodawana jest informacja o pozycji Sir Daniela i w tym miejscu nakładany jest dodatkowy "wiatr" skierowany na zewnątrz. Ot, i cała filozofia. Mała rzecz, a cieszy ;) Piszę o tym dlatego, bo istnieje duża szansa, że część osób w ogóle tego nawet nie zauważy.
No i cóż, to by było chyba na tyle. Miałem co prawda jeszcze trochę pomysłów na dalszy rozwój projektu, ale z racji na zapowiedziany grudniu remaster - raczej nie ma już sensu się dalej z tym bawić. Teraz pozostaje już chyba tylko czekać z nadzieją, że to co szykuje Sony, to soczyste mięcho na miarę N. Sane Trilogy, a nie tylko prosty port zrobiony po kosztach.
Jeśli kogoś zainteresowałem swoim projektem i chciałby samemu go potestować, chodząc bez większego celu Danielem po Wulfrum Hall, poniżej zostawiam link do strony, gdzie można pobrać najnowszą wersję Dan-Hand Game. Wszystkim, którzy zechcą to pobrać - z góry dzięki, i miłego grania!
Tutaj odnośnik, do strony gry na GameJolt, skąd można ją pobrać.
Na koniec jeszcze jedno wideo, również przygotowane przez użytkownika super z wspomnianego wcześniej forum.