Fallout Krypta 13 na Unity 5 to próba pokazania jak dziś wyglądałaby gra komputerowa sprzed blisko 20 lat.

Fallout to legendarna, fabularna gra komputerowa z 1997 roku osadzona w klimatach post-apokaliptycznych. Moim celem było odwzorowanie fragmentu oryginalnej gry przy użyciu współczesnych narzędzi i technologii z zakresu grafiki komputerowej. Projekt jest zrealizowany w zintegrowanym środowisku programistycznym Unity 5.


Geneza projektu:

Fallout zawsze był dla mnie grą absolutnie kultową. Niezwykły klimat, ciekawy świat, intrygujące postacie - to wszystko sprawiło, że od 2006 roku, kiedy to po raz pierwszy zetknąłem się z tą produkcją, aż po dziś dzień jest ona dla mnie niekończącą się inspiracją.

Dla niewtajemniczonych: fabuła tej gry polega na tym, że świat w pewnym momencie ulega nuklearnej zagładzie. Część ludzi jednak przetrwała w specjalnych schronach zwanych kryptami. Każda z nich była oznaczona numerem. Po określonym czasie krypty te miały się otworzyć, a ich mieszkańcy na nowo osiedlić zniszczoną planetę. W grze wcielamy się w mieszkańca Krypty 13, który dostaje wyjątkowo niebezpieczne zadanie, od którego zależy przetrwanie całego schronu...

Pewnego razu mój dobry znajomy, który tak jak ja jest ogromnym fanem całej serii Fallout, zainspirował mnie do zrobienia czegoś dla tej gry. Postanowiłem, że w podzięce za te wszystkie lata, przy których tak świetnie się bawiłem grając w Fallouta, stworzę replikę Krypty 13 ale przy wykorzystaniu współczesnych rozwiązań graficznych. Bardzo byłem ciekaw jak wyglądałby Fallout dziś. Korzystając z moich umiejętności postanowiłem się przekonać.

Rezultat:

Po ponad 2 tygodniach prac efekt był następujący:

Dla porównania oryginał z 1997 roku:

Poza odświeżonym wyglądem dodałem całemu kompleksowi odrobinę funkcjonalności. Główny właz Krypty oddzielający ją od świata zewnętrznego można otwierać a światła oraz syreny alarmowe w głównym korytarzu reagują w zależności od całej animacji czego nie było w oryginalnej grze. Drzwi wewnątrz schronu też działają. Do każdej animacji dorobiony jest dźwięk. Poza tym ekrany na terminalach wyświetlają zakłócenia a ich pulpity migają tak jak w oryginale.

Opis prac:

Wykorzystałem następujące narzędzia:

  • Unity 5.3 (integracja całego projektu)
    • Playmaker (skryptowanie)
    • Shader Forge (przygotowanie shaderów)
  • Blender 2.77 (modelowanie całego poziomu)
  • Gimp 2.8.11 (przygotowanie tekstur)
  • Makehuman 1.1.0 (modelowanie postaci)
  • Audacity 2.1.2 (przygotowanie i miksowanie dźwięku)

Zacząłem od stworzenia głównego wejścia do schronu, czyli masywnego włazu. Wykorzystałem do tego celu program Blender 3D, w którym wykonałem wszystkie trójwymiarowe modele obiektów użytych w projekcie.

Proces teksturowania wykonałem w programie Gimp, gdzie nakładałem różnego rodzaju obrazy metalicznych powierzchni na wyeksportowaną mapę UV. Zależało mi na możliwie realistycznym odwzorowaniu wizualnym materiału, dlatego zdecydowałem się na zastosowanie liniowego modelu świetlnego i tzw. PBS czyli użycia fizycznie dokładnych shaderów (shadery to instrukcje dla kart graficznych tłumaczące jak wyświetlać dany materiał użyty na obiekcie). Unity 5 posiada tzw. Standard Shader, którego użyłem w produkcji.

Pierwszy etap prac zakładał stworzenie jaskini wraz z głównym włazem i animacją otwarcia i zamknięcia. Animację przygotowałem w Blenderze, zaś skryptowanie wykonałem przy użyciu narzędzia do programowania wizualnego Playmaker. Playmaker wykorzystuje automaty skończone i przy moim sposobie pracy, pozwala mi szybko i efektownie wprawić cały projekt w ruch.

Tak od strony programowania wygląda proces otwierania i zamykania głównego włazu krypty:

Co ciekawe postanowiłem wykorzystać możliwości nowego systemu globalnej iluminacji jakie oferuje Unity 5 i dorobiłem opcję zmiany pory dnia i nocy. Widać to właśnie w jaskini, gdzie światło z zewnątrz po naciśnięciu odpowiedniego klawisza zmienia jasność i kolor a wraz z tym zmienia się całe oświetlenie wewnątrz jaskini.

Kolejnym i zarazem głównym etapem prac było stworzenie właściwego kompleksu jaki krył się za masywnym włazem. Zacząłem od przygotowania głównego zarysu ścian schronu:

Po czym stworzyłem podłogę i na wszystko nałożyłem odpowiednie tekstury. W Unity 5 rozstawiłem oświetlenie. Warto dodać, że świetlówki w korytarzu prowadzącym do włazu rozgrzewają się za każdym razem inaczej, zupełnie jak w rzeczywistości.

Następnie postanowiłem w miarę dokładnie odwzorować każdy element wystroju wnętrza. Zajęło mi to tydzień, ale było warto. Zrobiłem nawet kursor!

Terminale wymagały osobnego shadera, by móc pokazać różnego rodzaju zakłócenia na ekranach. Do tego celu wykorzystałem genialne narzędzie jakim jest Shader Forge. To wizualny edytor shaderów, pozwalający na tworzenie złożonych efektów graficznych. Po paru próbach udało mi się uzyskać taki efekt, o jaki mi chodziło, czyli szklisty materiał emitujący zakłócenia i jasną falę odświeżającą ekran w określonych odstępach czasu. Oto jak wygląda to od strony technicznej:

 Dzięki temu cały kompleks choć bezludny, zaczął żyć swoim elektronicznym życiem:

W międzyczasie pracowałem nad interfejsem użytkownika. Jest bardzo prosty, oparty głównie o informacje tekstowe, zaś cała interakcja z Kryptą odbywa się za pomocą myszy lub klawiatury. Kliknięcie na interaktywny obiekt taki jak drzwi lub terminal dostępowy, wywołuje odpowiedni event - wydarzenie, które raz zarejestrowane wykonuje szereg ustalonych poleceń zmierzających do osiągnięcia konkretnego efektu. Przykładowo kliknięcie na drzwi powoduje sprawdzenie ich stanu (otwarte/zamknięte) i podjęcie odpowiednich działań prowadzących do uruchomienia właściwej animacji i dźwięku.

Kiedy krypta była już gotowa postanowiłem ją zaludnić, by całość tętniła życiem. Do tego celu posłużyłem się programem o dość dosłownej nazwie Makehuman. To narzędzie pozwalające na generowanie gotowych modeli postaci w oparciu o określone parametry. Jest to o tyle wygodne rozwiązanie, że modele te posiadają poprawne proporcje. Osiągnięcie tego samego tradycyjnymi metodami mogłoby zająć dużo czasu.

Tak przygotowane postacie przeniosłem do Blendera, gdzie trochę je poprawiłem, nałożyłem całkiem proste tekstury i origowałem całość. Przydała się tu moja wiedza zdobyta w trakcie prac nad Projektem ITA.

Gdy modele były już gotowe, przeniosłem je do Unity, by tam je zintegrować z całym poziomem i przypisać animacje. Jeśli o nich mowa, to użyłem gotowych paczek z Unity Asset Store. Przygotowanie własnych animacji nie było w tym przypadku potrzebne.

Ostatnim krokiem było sprawienie, aby mieszkańcy krypty mówili. Uznałem, że bardzo klimatycznym rozwiązaniem będzie zastosowanie unoszących się nad ich głowami tekstów - zupełnie tak jak to miało miejsce w oryginalnej grze. Ten sam dobry znajomy, który zainspirował mnie do stworzenia tej krypty, napisał potrzebne dialogi i muszę przyznać, że wyszło mu to rewelacyjnie! Wystarczyło je wrzucić do prostego skryptu...

...by móc cieszyć się nimi w grze. Rezultat przekroczył nawet moje wyobrażenia:

Cały proces tworzenia tego projektu zajął mi łącznie nie licząc przerw około 3 tygodni. Z obecnie wykonanych rzeczy na pewno warto byłoby uwydatnić parę detali, dorobić jakieś kable, dodatkowe rury i dekoracje, choć i tak na tym etapie całość wygląda naprawdę ciekawie.

 

Autor:

Łukasz Wawrowski (aka inferno8)