LOREM IPSUM – DZIENNIK DEWELOPERA CZ. 9 – EFEKTY CZĄSTECZKOWE I OŚWIETLENIE
Silnik „Unity” na którym tworzyliśmy naszą grę jest profesjonalnym środowiskiem powszechnie wykorzystywanym przy kreowaniu wielu pełnoprawnych tytułów. Posiada on ogrom narzędzi i funkcjonalności, które można zaimplementować w swojej produkcji. Trzeba jednak pamiętać, iż ich złożoność i mnogość sprawia, że nauka wykorzystania chociaż kilku z nich w podstawowej formie zajmuje naprawdę dużo czasu. Dzięki odpowiedniemu rozplanowaniu kolejnych etapów naszej pracy i uwzględnieniu możliwych komplikacji technicznych, których niestety nie da się uniknąć w tego typu projektach udało nam się znaleźć czas, by spróbować swoich sił w bardziej zaawansowanych funkcjach „Unity”. Naszym specjalistą od efektów specjalnych został Jasiek, który całymi dniami (i nocami) dodawał blasku i dynamiki do etapów projektowanych przez Daniela.
Każde nowe narzędzie warte jest tyle, ile zdolności i pomysłowość osoby, która ich używa. Ta sama funkcja, w zupełnie różnych grach może być wykorzystywana, przez dwa niezależne zespoły na zupełnie różne i zaskakujące sposoby. Jednym z ciekawszych narzędzi udostępnionych we wspomnianym środowisku jest „generator cząsteczek” (ang. particles generator). Umożliwia on utworzenie w świecie gry źródła, które będzie emitować w zadany sposób niewielkie obiekty. Od nas zależy jak ma ono wyglądać – czy będzie mieć charakter punktowy, czy liniowy. Jak będą wyglądać wygenerowane cząstki, oraz jaką rolę będą pełnić w grze jest w całości uzależnione od kreatywności i pomysłowości twórców gry. Generator możemy ukryć w animacji ogniska, a obiektom nadać teksturę płomyków lub iskier, które będą z niego strzelać, wydobywając się z jednego punktu. Nic nie stoi na przeszkodzie by umieścić w swojej produkcji ogromny wodospad, a u jego podnóża zlokalizować źródło rozciągnięte liniowo na całą jego szerokość. Każdy obiekt może mieć grafikę fragmentu mgły, która będzie unosić się do góry, imitując efekt roztrzaskującej się o taflę wody. To my decydujemy jak mają zachować się dane cząsteczki, ile ma ich być, jak długo mają istnieć i po jakiej ścieżce powinny się poruszać. W „Lorem Ipsum” korzystamy z tego narzędzia w wielu, często dość zaskakujących miejscach.
Nasze eksperymenty z generatorem cząstek były dość skromne i polegały na utworzeniu radialnych obszarów, z których wydobywały się obiekty oklejone wybraną przez nas teksturą. Jasiek dzielnie zagłębiał się w tajniki tego narzędzia, starając się zrealizować pomysł, który pojawił się w czasie wstępnych projektów E-booczka. Chcąc nadać mu futurystyczny charakter, spodobał nam się koncept błękitnych pikseli unoszących się w jego pobliżu. Dla nieobeznanych z elektroniką poetów wyglądałyby jak „dziwne świetliki”. W czasie ruchu nasz mały protagonista mógłby zostawiać za sobą smugę takich świecących cząsteczek, która przypominałaby ogon jaki zostawia za sobą kometa… albo magiczny pyłek rodem ze świata Piotrusia Pana. Ich sposób zachowania, miejsce, rozrzut i intensywność z jaką wydostają się ze źródła też wymagały optymalizacji, gdyż w początkowych fazach prac za bardzo przypominały one proces… wydalania. Nie zapomnijmy o fakcie, iż generator musiał być cały czas w ruchu i pokrywać się z lokalizacją E-booczka. Na szczęście w tamtym momencie mieliśmy już dopracowany algorytm śledzenia gracza przez naszego małego mola książkowego.
Otrzymanie obrażeń przez naszą postać powoduje przypalenie się zakładki wystającej z książki w lewym górnym rogu. By wzmocnić efekt dodaliśmy do całego procesu malutki generator z którego wydobywają się iskry na końcu spalanej wstążki. W czasie leczenia się naszej postaci, wspomniany pasek odbudowuje się. Zastosowaliśmy tutaj odwrotny mechanizm w którym cząsteczki w formie plusików są przez niego wchłaniane. Przeciwnicy występujący w grze także są „nosicielami” takich źródeł cząstek. Pokonanie każdego z nich skutkuje wyrzuceniem przez nich kropelek atramentu. Od tego już niedaleka droga do pozostawiania przez nich innych losowych przedmiotów, które mogą wspomóc nas w przygodzie.
Czymże byłaby Kraina Pisarzy i świat utworu literackiego stworzony z atramentu, gdyby nie było w nich liter. Gdy odblokujemy „Strzał Robaka”, a nasza postać uzyska zdolność przywoływania atramentowej strzelby, to w momencie wystrzału będziemy mogli zaobserwować kolejne zastosowania opisywanego mechanizmu tworzenia losowych cząsteczek. W tym wypadku za lecącą kroplą, będącą swoistym pociskiem pojawia się ogon z losowych liter. Tak jakby to z nich składała się atramentowa kula, która delikatnie rozpada się w locie. Mieliśmy też pomysły, aby dosłownie ze słów uczynić broń, a nasza postać mogła nimi strzelać lub atakować, by w zabawny sposób zmaterializować swego rodzaju metaforę, iż słowa mogą ranić, podobnie jak to, że pióro to prawdziwie niebezpieczny oręż. Gdy zaś natrafimy na piedestał zapisu, aktywowaniu go towarzyszy istne, alfabetowe konfetti.
Efekty cząsteczkowe zostały wplecione także w sam świat gry, by nadać mu odrobinę więcej autentyczności. Nasz mroczny las zyskuje na aurze tajemniczości, gdy dodamy do niego małe świetliki (tym razem te prawdziwe). Powolutku generują się w losowych miejscach i dryfują po planszy po jakimś czasie znikając. W tym wypadku całość została sprzężona z systemem oświetlenia, o czym za chwilę powiemy więcej. Dzięki temu każdy z nich jest dynamicznie zmieniającym położenie, malutkim źródłem światła. Dosyć podobny mechanizm wykorzystaliśmy przy generatorach… liści. By jednak zachować w naszym zwariowanym świecie skażonym zapomnieniem odrobinę logiki, odpowiednie źródła generowania liści umieściliśmy tylko w drzewach liściastych. Stonowaliśmy ich ilość, aby nie tworzyć mylnego wrażenia wichury, a także zadbaliśmy o właściwą trajektorię ich lotu. Każda cząstka z danego źródła może poruszać się po zadanej ścieżce wyznaczonej przez odpowiednią krzywą. Może to być dowolna fala, sinusoida, czy łuk, lub kilka wzorców ruchu naraz. Postanowiliśmy jak najlepiej oddać efekt delikatnego unoszenia ich przez wiatr, przez co w połowie opadania na chwilkę ich droga wypłaszcza się równolegle do ziemi. Wcześniej nasza postać mogła „odbijać głową” spadające listki, jednakże sprawiało to niezbyt dobre wrażenie jednowymiarowości. Gdy wyłączyliśmy system kolizji tylko z naszym bohaterem, całość etapu zyskała na poczuciu głębi.
Największe jednak wrażenie chcieliśmy zrobić na graczu, gdy wejdzie na cmentarz. Początkowo cichy, spokojny, oświetlony ciepłym blaskiem świec i zniczy. Gdy jednak wkroczymy w głąb rozpoczyna się burza, stopniowo zmieniająca się w istną ulewę. Bardzo zależało nam, by stworzyć dynamicznie zmieniającą się pogodę, co jak okazało się w trakcie prac wcale nie było takie oczywiste. Znienacka pojawiające się oberwanie chmury wydawałoby się bardzo sztuczne, więc postanowiliśmy stopniowo zwiększać ilość opadających kropel. Także i tutaj zastosowaliśmy generator cząsteczek, jednakże spodziewany efekt nijak miał się do zaprogramowanych wartości. W pewnym momencie na ekranie powinno znajdować się ponad 500 obiektów kropel, a naoczna obserwacja utwierdzała nas w przekonaniu, że faktycznie jest ich kilka razy mniej. Po dłuższym czasie okazało się, że Jasiek umieścił naszą „konewkę” całkowicie nad sekcją z cmentarzem, rozciągając ją na całą jego szerokość, a więc zdecydowana większość generowanego deszczu opadała daleko poza widzianą przez nas w danym momencie częścią. Gdy wpadliśmy na pomysł „przyczepienia” jej do Mickiewicza, to okazało się, że biegnąc w drugą stronę, odwracamy też kierunek w którym spadają krople. Zadziałał dopiero sposób z zamontowaniem wirtualnej konewki nad księgą wskazująca nasze statystyki, dzięki czemu deszcz pada tylko nad naszą postacią, a my widzimy w kadrze wszystkie stworzone krople.
Innym narzędziem w arsenale „Unity”, które w fantastyczny sposób upiększa nasz świat jest dynamiczne oświetlenie, które nie tylko stanowi element dekoracyjny, lecz w wybranych miejscach jest istotnym elementem samego mechanizmu rozgrywki. Chociażby na wspomnianym cmentarzu w losowych odstępach czasu słyszymy grzmot, a ekran przecina jedna z kilku losowo generowanych animacji pioruna. Oczywiście na ten krótki ułamek sekundy cały ekran rozświetla jasny błysk, co w przypadku tej części etapu, która w większości spowita jest nieprzeniknioną ciemnością potrafi stanowić pewne ułatwienie.
Gdy przemierzamy nasz tajemniczy i mroczny las w tle widzimy ogromny, wręcz hipnotyzujący księżyc. By dodać autentyczności całej scenerii wpadliśmy na pomysł, aby spróbować stworzyć promienie światła, które przedzierają się przez gałęzie i padają wprost pod nogi gracza. Przyciemniony etap mocno tracił na soczystości kolorów, przez co całość wydawała się nijaka. Patent z promieniami księżyca pozwala wydobyć z elementów graficznych ich prawdziwe nasycenie barw. Schodząc do jaskini tracimy naturalne źródło światła, które jest dostępne na powierzchni, dlatego po całej ich lokacji rozsialiśmy pochodnie oraz wiszące lampy. Ich poświata pozwala orientować się w ciemnych i wąskich przestrzeniach, co nie zawsze jest łatwe. Może niektórzy zauważą, że zwisające z sufitu lampiony nie tylko można rozkołysać uderzając w nie, lecz kilkukrotne ich uderzenie sprawia, iż wybrane ogniowo łańcucha urywa się, a lampa upadając nagle gaśnie. Staraliśmy się zadbać o to, aby wspomniany smaczek nie przeszkadzał w rozgrywce, to znaczy, aby zgaszenie lampy nie sprawiło, że postać pogrąży się w całkowitych ciemnościach, co uniemożliwi dalszą progresję w grze. Kapitalny efekt udało zaś się uzyskać w wybranych częściach jaskiń, gdzie możemy natrafić na ogromne, zjawiskowe kryształy. Każdy z nich w zależności od koloru emituje delikatną poświatę o innym zabarwieniu przez co całość nabiera wręcz magicznej atmosfery.
Jeden z bardziej pomysłowych patentów zaimplementowaliśmy jednak przy wejściu na cmentarz. Bardzo często twórcy sztucznie ograniczają dalszy postęp w grze poprzez umieszczenie niewidzialnej ściany, lub drzwi, których dziwnym sposobem nagle w żaden sposób nie można sforsować. Takie metody na dłuższą metę trąca sztucznością, więc uznaliśmy, że spróbujemy sił z bardziej ambitnym podejściem. Gdy spotykamy Józia i Rózię przed cmentarzem, po rozmowie z nimi nic nie blokuje nam wejścia do niego. Jednakże ilość żalu i gniewu jakie generują zagubione w tamtym miejscu duchy sprawia, iż cała lokacja pogrążyła się w nieprzeniknionym mroku. Gdy zbyt wcześnie tam wkroczymy, nie tylko nie będziemy w stanie zobaczyć którą ścieżką powinniśmy dalej się kierować, lecz niewidoczne będą dla nas także i duchy, których nie sposób będzie uniknąć. To oznacza, iż w krótkim czasie z pewnością poniesiemy porażkę, próbując po omacku przedzierać się dalej między nagrobkami. Jednakże, gdy zdobędziemy ziarnka gorczycy, o które proszą duchy lekkie, to w zamian otrzymamy „anielski promyk” potrzebny do zakupienia umiejętności „gdzie wzrok nie sięga”. Dzięki niej wokół naszej postaci pojawi się niewielkie źródło światła, które umożliwi ograniczoną orientacje w terenie.
To tylko wybrane z pomysłów, które pojawiły się w czasie tworzenia naszej gry. Wiecznie goniący nas czas i duża złożoność w nauce obsługi kolejnych funkcjonalności pozwoliły nam zaimplementować jedynie wybrane z nich, jednakże pragnęliśmy, aby każda kolejna funkcja wnosiła do naszego świata coś niepowtarzalnego i unikatowego. Dzięki temu pomimo wiszących nad nami limitów mogliśmy uniknąć powielania tych samych pomysłów, mogąc wykorzystywać dostępne narzędzie na zupełnie odmienne sposoby.
Zapraszamy już za tydzień do ostatniego dziennika dewelopera, w którym wyjawimy tajemnice procesu projektowania i optymalizowania poziomów w grze, zdradzimy czym jest grywalizacja, a także powspominamy ostatnia fazę produkcji naszego projektu, czyli testowanie i debugowanie.
Adrian Zając