Z czym wiąże się tworzenie aplikacji VR?

Zanim zacząłem swoją karierę zawodową, tworzenie projektu mogłem podsumować w trzech prostych krokach.
1. Tworzę pomysł
2. Tworzę kod
3. Sprawdzam co z tego wyszło

Robią coś w pojedynkę, bez presji – taka swoboda w tworzeniu jest bardzo wygodna i wskazana. Jednak w biznesie, podejście tego typu jest bardzo nieefektywne, a przez to kosztowne. Mając ustalony dokładny koncept rozpoczynamy tworzenie dokumentu projektowego będącego nie jako biblią dla naszego projektu. Pracując w większym zespole, dokument projektowy staje się konieczny do tego, by przekazać wizję aplikacji każdemu w taki sam sposób.

Jira – cicha bohaterka każdego projektu

Niektórzy mogą pomyśleć, że mając koncept i przygotowany dokument projektowy – możemy rozpocząć prace nad tworzeniem oprogramowania. Otóż nie. Od tworzenia oprogramowania dzieli nas jeszcze jeden ważny krok. Mianowicie… projekt musi zostać rozpisany na Jirze. Czym jest Jira? Jest to jeden z wielu rodzajów oprogramowania służących do zarządzania projektem. Można Jire lubić, albo nienawidzić. My mimo różnych sytuacji staramy się mieć z nią dobre relacje. To w niej rozpisujemy wszystkie zadania, przygotowujemy harmonogram i dzielimy projekt na poszczególne etapy. Następnie szacujemy czas oraz poziom skomplikowania każdego zadania. Finalnie, każde zadanie zostanie przypisane do konkretnej osoby, która będzie odpowiedzialna za jego realizację. Ważne jest by taski były odpowiednio rozłożone. Staramy się unikać sytuacji, gdy praca kilku deweloperów jednocześnie powoduje konflikty w projekcie.

Tworzenie oprogramowania VR/AR/XR/MR

Dopiero po wykonaniu powyższych kroków możemy zająć się faktycznym tworzeniem oprogramowania. Zaczynamy od przygotowania repozytorium pod nasz projekt. Będzie ono zawierać aktualny stan projektu oraz zapis wszystkich zmian, które zostały wprowadzone. Znacząco ułatwia to pracę, gdy trzeba przywrócić jakieś pliki lub sprawdzić co zostało zmienione. Powszechną praktyką jest także synchronizacja repozytorium z serwerem dzięki czemu co zmniejsza ryzyko utraty danych w przypadku awarii któregoś z komputerów. Następnie zajmujemy się importem systemów, które pozwolą nam zintegrować naszą aplikację z określonymi goglami. Dlatego tak ważny jest wybór odpowiednich gogli już na etapie tworzenia konceptu. Inaczej tworzy się aplikacje na przenośne Questy, a inaczej na gogle obsługujące platformę SteamVR (np. HTC Vive Pro, Steam Index czy Varjo). Kiedy uda nam się zaimportować wszystkie podstawowe komponenty – możemy sobie pogratulować, zbudowaliśmy fundamenty naszej aplikacji.
W tym momencie następuje etap, kiedy do pracy przy projekcie wkraczają graficy. Zajmują się oni między innymi: stworzeniem i oteksturowaniem modeli, przygotowaniem konceptu oraz grafik pod interfejs użytkownika, a także stworzeniem otoczenia, po którym jako przyszli użytkownicy oprogramowania, będziemy się poruszać.
Sam proces tworzenia otoczenia również jest bardziej skomplikowany niż może się to wydawać na pierwszy rzut oka. Aby otoczenie wyglądało dobrze potrzebujemy nie tylko modeli, które nadadzą mu kształt, ale także elementów otoczenia, które wypełnią przestrzeń wokół nas i sprawią, że stanie się ona bardziej „prawdziwa”. Oprócz tego dochodzi także ustawienie postprocessingu, źródeł świateł oraz tak zwane „wypalenie lightmap”. Dzięki temu komputer nie musi obliczać w czasie rzeczywistym promieni padania światła, oraz cieni rzucanych przez statyczne obiekty. A my oszczędzamy dzięki temu trochę mocy obliczeniowej.
W tworzeniu szaty graficznej ważny jest styl. Czy aplikacja będzie miała elementy sci-fi, czy może będzie ona tworzona z maksymalnym zachowaniem realizmu. Styl musi być ustalony już na etapie tworzenia dokumentu projektowego. W przeciwnym wypadku może się okazać, że poszczególne modele lub elementy rozgrywki wzajemnie nie będą do siebie pasować.
Programiści zaczynają tworzenie kodu w momencie, gdy duża część assetów jest już gotowa. Mając elementy na których można pracować – łatwiej jest przewidzieć jakie funkcjonalności będzie trzeba zaprogramować. Kod jest najważniejszą częścią każdego projektu, ponieważ łączy ze sobą pojedyncze modele, obrazy, dźwięk czy innego rodzaju pliki w jeden spójny, działający system. Oczywiście, programiści cały czas muszą pamiętać o tym, by kod utrzymywać w jak najlepszej jakości. Dzięki temu oprogramowanie jest tworzone w sposób, które umożliwia wdrażanie ewentualnych rozszerzeń i zmian.
Czy programowanie aplikacji VR jest trudne? Ciężko jednoznacznie odpowiedzieć na to pytanie, ponieważ jeśli chodzi o poziom skomplikowania to dużo zależy od danej funkcjonalności. Interakcje z przedmiotami czy elementami otoczenia nie są zbyt trudne, a wiele podstawowych funkcjonalności jest do zrealizowania w kilkanaście minut. Poziom zaawansowania rośnie, gdy przykładowo wchodzimy w fizykę i zachowanie obiektów w przestrzeni trójwymiarowej. Wyznaczanie wektorów, prędkości kątowych czy tworzenie skomplikowanych interakcji pomiędzy wieloma elementami wymaga już głębszego przemyślenia.
Warto również wspomnieć o optymalizacji. Oprócz wypalania świateł istnieje jeszcze mnóstwo innych narzędzi do optymalizacji naszego produktu. Możemy kompresować modele oraz tekstury, by zaoszczędzić używaną przez komputer pamięć. Tak zwany „Occlusion Culling” pozwoli nam ograniczyć renderowanie elementów, które aktualnie nie znajdują się w naszym polu widzenia. Natomiast profiler – zwróci nam uwagę na miejsca w aplikacji, które są szczególnie wymagające pod kątem wykorzystywanych zasobów. Proces optymalizacji jest bardzo ważny dla każdej aplikacji, zwłaszcza podczas tworzenia aplikacji na gogle mobilne, które mają dość ograniczone możliwości technologiczne.

Testy, testy i jeszcze raz testy…

Testy są nieodłączną częścią tworzenia oprogramowania. Aby można było komfortowo korzystać z aplikacji, musi zostać ona wcześniej przetestowana. Mimo, iż poszczególne mechaniki są testowane już na etapie ich tworzenia, tak zawsze istnieje ryzyko, że coś zepsuje się podczas łączenia wielu funkcjonalności ze sobą. I niestety, w przypadku każdej bardziej zaawansowanej aplikacji znajdą się błędy, które będzie trzeba poprawić.
Wyszukaniem błędów zajmują się testerzy. Korzystając z nieograniczonych pokładów swojej kreatywności, próbują zepsuć aplikację na szereg możliwych sposobów. Od wybierania nieszablonowych rozwiązań podczas przechodzenia fabuły, do szybkiego i powtarzalnego wciskania konkretnego klawisza na kontrolerze podczas skomplikowanej sekwencji zdarzeń dziejących się w aplikacji. Ostatecznie jednak naprawienie skompilowanego błędu potrafi dać dużą satysfakcję… pod warunkiem, że jego naprawa nie spowodowała powstania dziesięciu nowych problemów.
Finalnie, połączony wysiłek programistów i testerów skutkuje sprawnie działającą aplikacją, która może lecieć w dalszą podróż do użytkownika docelowego. Czasem oznacza to zamknięcie projektu, jednak zdarza się, że aplikacja staje się na tyle ważna, że daje to pole do jej dalszego rozwoju.

Podsumowanie: Tworzenie Aplikacji VR

Tworzenie aplikacji VR wiąże się z wieloma czynnikami, których nie widać na pierwszy rzut oka. Jednak mimo, iż oprogramowanie powstaje zawsze według jednego schematu – to jednak każdy projekt przedstawia zupełnie inną historię. Dzięki czemu, my jako zespół codziennie stajemy przed zupełnie innymi wyzwaniami, które niosą za sobą kolejne cenne doświadczenie.

Łukasz Rydziński, EpicVR
Podaj dalej