Jak trudne jest stworzenie gry od podstaw?
W dzisiejszym felietonie opiszemy pokrótce, jak trudne jest stworzenie gry od podstaw w jednym ze znanych środowisk graficznych. Przyjrzymy się nieco bardziej temu, co można wypracować w Unity czy Unreal Engine 4, jakie to będą koszty i jak wiele czasu i pracy musimy włożyć, by nasza gra pojawiła się na rynku.
Każdy, kto chciałby zostać dzisiaj developerem i przygotować własną grę, ma bardzo ułatwione zadanie. W sieci znajdziemy tysiące darmowych poradników, jak zacząć i na co zwracać szczególną uwagę. Próg wejścia jest dość niski (finansowo darmowy), wystarczy jedynie dużo motywacji, ambicji, determinacji, kilku godzin wolnego czasu dziennie i chęci do nauki. W internecie znajdziemy też mnóstwo darmowych webinarów, które wprowadzą nas do świata IT. Jednym z takich paneli zajmuje się firma Software Development Academy, inną jest Codelab, a jeszcze inne możemy znaleźć w sieci na każdym kroku. Statystyki w Polsce dość jasno mówią, że brakuje ok. 50 tysięcy programistów. To trudny zawód, ale bardzo perspektywiczny, rozwojowy i dający, w skali innych branż, rewelacyjne zarobki.
Chciałbym dzisiaj spojrzeć na początkującego twórcę gier, przyszłego programistę C# lub C++, kodującego w środowiskach graficznych Unity lub Unreal Engine 4. To dwie najpopularniejsze dzisiaj platformy dla deweloperów, które do pewnego momentu pozostają bezpłatne z praktycznie nieograniczonym zakresem możliwości. Wystarczy jedynie wejść na oficjalne strony, pobrać stosownego klienta i poczekać, aż wszystko się zaktualizuje. W jednym i drugim przypadku możemy pobrać przygotowane wcześniej, gotowe i darmowe gry, które pomogą nam zobaczyć, jak to jest zrobione i jakimi drogami możemy dotrzeć do sterowania, skryptów, założeń i mechanik zależnych od siebie. W środowisku Unity możecie ściągnąć "3D Game Kit" (jest też wersja 2D), w Unreal Engine 4 skorzystajcie z "Unreal Engine Hour of Code". Do jednego i drugiego elementu znajdziecie bardzo rozbudowane poradniki na YouTube czy dedykowanej na Unity stronie internetowej.
Zacznijmy od Unity - prosto, łatwo i przyjemnie dla każdego
Najpierw może garść praktycznych informacji. Unity jest darmowe dla wszystkich do pewnego momentu. Po osiągnięciu sprzedaży gry na poziomie 100 tysięcy dolarów, musimy zapłacić za pełną licencję na jedno stanowisko, której koszt wynosi dzisiaj 1800$. Wydaje się, że to sporo, ale w końcu wypracowaliśmy niezły zarobek, więc żaden kłopot, żeby opłacić takie zobowiązanie. Wskoczyć do tego świata jest dość łatwo. Sam rozpocząłem prace nad bardzo prostą platformówką polegającą na sterowaniu kulą po banalnie wyglądających poziomach. Napisanie takiej gry zajęło mi 4 dni robocze, posiłkowałem się oczywiście poradnikami znalezionymi w sieci. Każdy chętny może pobrać moją grę z tego miejsca (wystarczy kliknąć zielony przycisk "pobierz plik") i sprawdzić na swoim komputerze.
Menu stworzyłem na bazie przygotowanych wcześniej obiektów, dzięki czemu jest dość proste i intuicyjne. Wystarczy kliknąć myszą w level pierwszy lub drugi. Mam niestety pewne problemy z detekcją kolizji na dolnej, ruchomej platformie w drugim poziomie, co z pewnością muszę dopracować. Głównym celem jest zebranie wszystkich znalezionych na mapie, zielonych kryształów. Tekstury tworzyłem w Photoshopie, następnie dodawałem je do Unity. Model kryształu, platform, kolców i przeszkód stworzyłem samodzielnie w Blenderze. Działa to bardzo wygodnie, bo wystarczy jedynie zaprojektować jakiś przedmiot i można go automatycznie zaimportować do środowiska graficznego Unity, a potem trzeba jedynie oteksturować i dołączyć podstawowe parametry, jak choćby osadzenie w samym świecie względem trzech osi w przestrzeni (polecam domyślnie wszystko równać do 0). Fizykę i detekcję kolizji zaaplikujemy za pomocą tylko jednego przełącznika, ponieważ całość przeliczana jest przez Unity. To bardzo wygodne rozwiązanie.
Sterowanie to kwestia prostego skryptu, który wykrywa naciśnięcie strzałki kierunkowej na klawiaturze. Zebranie kryształu, za sprawą innego kawałka kodu, informuje grę, ile takich elementów zostało jeszcze na mapie. Gdy zdołamy zgromadzić wszystkie, wtedy automatycznie lądujemy w głównym menu, a nad nazwą poziomu pojawia zielona strzałka informująca o jego ukończeniu. Zachowanie kuli uzależniłem od siły przyciągania grawitacji i "szorstkości" powierzchni po której się porusza. Uważajcie, żeby nie dotknąć kolców, bo automatycznie zresetuje to poziom do samego początku. Muzyka jest absolutnie randomowa, dodałem ją tylko dlatego, że akurat taki utwór miałem na pulpicie. Tło tworzy bardzo proste zdjęcie nieba, podłączone do kamery w takiej formie, by wyświetlało się zawsze w ten sam sposób. Żeby wyjść do pulpitu z Przygód Kuli, trzeba najpierw wcisnąć "esc" czym dostaniemy się do głównego menu i wtedy nacisnąć "esc" raz jeszcze.
Skompilowanie takiej "gry" i utworzenie pliku wykonawczego odbywa się automatycznie. Wystarczy jedynie dodać odpowiednią kolejkę poziomów w rozwijalnej liście, a potem utworzyć gotowy plik. Jeżeli w samych skryptach wystąpi jakiś błąd, dostaniemy odpowiedni komunikat w logach środowiska Unity. Konstrukcja skryptów w C# nie należy do szczególnie trudnych. Ten język programowania studiowałem przez prawie dwa lata na informatyce w Społecznej Akademii Nauk, zaczynając od napisania prostego kalkulatora. Podstawy są intuicyjne i nie bez powodu wielu specjalistów ocenia, że początkujący twórcy gier powinni zaczynać właśnie od Unity. Tutaj dużo łatwiej stworzyć choćby zręcznościówkę 2D, która jest o wiele mniej wymagająca w swojej konstrukcji od rozbudowanego tytułu 3D.
Jakiś czas temu miałem przyjemność odwiedzić warszawskie studio Creepy Jar i porozmawiać nieco z twórcami na temat konsolowego Green Hell. Polskiej produkcji z gatunku symulacji przetrwania osadzonej w amazońskiej dżungli. Pełną relację z tego wydarzenia znajdziecie w najnowszym, 286 numerze PSX Extreme. Cała gra powstała właśnie w środowisku Unity, wyróżniając się piękną grafiką i mnóstwem szczegółów. To nieco obala "mit" głoszący, że ten silnik graficzny nadaje się tylko do prostych platformówek w 2D lub 2,5D. Unity ma przyjazny próg wejścia, ma także bardzo dużo dodatkowych assetów i pluginów dostępnych w oficjalnym sklepie. Korzystał z nich m.in. David Wehle tworząc w pojedynkę swoją przebojową produkcje The First Tree o czym więcej napisałem tutaj. Założyciele Creepy Jar wychodzą z założenia, że jemu się po prostu udało, ale konkurencja jest dzisiaj ogromna i trudno zwrócić na siebie uwagę.
źródło: medium.com
Zaczynając pracę z Unity, warto zainteresować się rewelacyjnym rozszerzeniem o nazwie PlayMaker, które zastępuje kodowanie w C# za pomocą prostego interfejsu graficznego. Tym samym zdecydowaną większość komend wykonamy banalną metodą "przeciągnij i upuść", znacznie przyspieszając działania. To właśnie temu pluginowi Dawid, twórca The First Tree, przypisuje większość zasług. To człowiek, który ma ogromny problem z nauką kodowania. Jest żywym przykładem, że wcale nie trzeba być stereotypowym programistą i grzebać w kodzie, by stworzyć dużą produkcję. Chociaż ta wiedza niewątpliwie może się przydać, szczególnie gdy chcemy wprowadzić do naszej gry o wiele więcej nietypowych mechanik i rozwiązań.
Pamiętajmy o kilku ważnych kwestiach - lepiej zacząć od gry w 2D lub 2,5D
Założyciele Creepy Jar zwracają uwagę na kilka elementów o których w pierwszej kolejności nie myślimy w taki sposób. Ustalmy, że chcielibyśmy stworzyć grę akcji TPP osadzoną we współczesnych czasach, coś na wzór Uncharted czy Perfect Darka tylko z minimalnym budżetem i z wykorzystaniem gotowych assetów ze sklepu Unity. Widzimy dla przykładu piękną palmę, którą wystarczy jedynie kupić i już można implementować do gry. Niestety dochodzą do tego kwestie optymalizacyjne, często takie drzewo ma znacznie więcej detali niż powinno, należy je przerabiać od podstaw, co daje kolejne godziny przepalane na poprawianie projektów, które powinny być gotowe od zaraz. Twórcy Creepy Jar przytoczyli jeden z takich przykładów - chcieli szybko stworzyć piękną, bogatą i gęstą dżunglę, ale po sprawdzeniu większości płatnych assetów okazało się, że ani jeden z nich nie spełnia oczekiwań studia i deweloperów. Dlatego całość musieli wymodelować i zakodować samodzielnie.
Oczywiście w przypadku waszej gry może być kompletnie inaczej, ale optymalizacja to bardzo ważny element składowy każdego tytułu i rzecz o której musicie pomyśleć już od samego początku projektowania. Podobnie wygląda sytuacja ze stworzeniem określonych mechanik. Warto pamiętać, że w przypadku dodania jednego konkretnego przedmiotu, musimy uzasadnić jego obecność w grze, co często nie jest takie proste. Gdy wymyślimy sobie stworzenie drabiny, to dobrze, gdyby ona prowadziła w konkretne miejsca, jej użyteczność była wystarczająco wysoka, a działanie intuicyjne. Podobnie jest z dowolną bronią czy możliwościami. Twórcy Green Hell założyli sobie, że większość przedmiotów zawartych w grze powinna mieć jakąś wartość. Czasem trudno nam wpaść na mechaniki, które graczom przyjdą do głowy w pierwszej kolejności, dlatego rozbudowany zestaw testów wersji alpha może mieć szczególne znaczenie dla rozwoju produkcji.
Jak dużo czasu potrzeba, żeby stworzyć taką grę w środowisku Unity? Najważniejszy jest dokładny research. Żeby zaistnieć na rynku i zyskać rozpoznawalność, trzeba będzie przygotować szereg dokumentacji. Jakie tytuły powstały już w gatunku, który nas interesuje? Jakie mają mechaniki? Jaką mają grafikę i na jakich platformach są dostępne? Jaka jest ich sprzedaż i oceny? To wszystko ma niebagatelny wpływ na podejmowaną decyzję. Możemy wykombinować najlepszą na świecie wyścigówkę, ale każdego miesiąca powstaje kilka tysięcy gier, więc ryzyko skopiowania czyjegoś pomysłu jest bardzo wysokie. To stwarza duży kłopot przy planowaniu działań marketingowych, bo przecież trzeba czymś konkretnym zachęcić potencjalnego gracza (dziś, paradoksalnie, bardzo wybrednego). Chociaż podczas tworzenia gry często zmieniamy koncepcję, a wielokrotnie wpadamy na pomysły, których nie braliśmy pod uwagę na początku, to szkielet w postaci określenia gatunku i podstawowych założeń powinien pozostać niezmienny.
Musimy też odpowiedzieć sobie na bardzo podstawowe pytanie. Jaki będzie nasz główny cel? Po co ktoś ma w to zagrać? Co jest kluczem do ukończenia takiego tytułu? Jakie drogi będą do tego prowadzić i jakie przeszkody postawimy na autostradzie do wielkiego finału? Jeśli tworzymy platformówkę, to konieczne będzie zaprojektowanie ciekawych poziomów, mechanik walki, przeciwników i bossów. Sterowanie również odegra znaczącą rolę, włącznie z implementacją podwójnego skoku, przyciągania, bujania na linie albo wspinania się po ścianach. Do takich rzeczy stworzono co prawda gotowe assety dostępne w sklepach, ale wiele z tych mechanik trzeba będzie zakodować indywidualne. Programowanie przy tworzeniu gry jest obecne w zasadzie od początku do końca, bo nawet gdy stworzymy jakiś określony przedmiot w Blenderze to potem należy go dodać do gry, podpiąć fizykę, animacje, dobrać wielkość, położenie, oteksturować i uczynić zależnym od pozostałych elementów, chyba, że będzie pełnił rolę ozdobnika lub części jakiegoś środowiska.
Unreal Engine 4 daje większe możliwości, ale jest trudniejszy
Blisko miesiąc temu ściągnąłem środowisko graficzne Unreal Engine 4. Chciałem się przekonać, jak trudne jest ogarnięcie C++. Jak wiele z tego, czego nauczyłem się przy Unity, będę musiał tutaj odrzucić. Jak pokazała rzeczywistość, nie było tak źle. Unreal Engine 4 pod względem samego interfejsu jest dość podobny, ale powiedziałbym nawet, że bardziej intuicyjny. W przypadku projektowania dość "prostych" gier nie potrzebujemy w ogóle wiedzieć, jak pisać kod w C++, bo mamy coś takiego jak "Blueprints", czyli interfejs graficzny pozwalający na łączenie komend i elementów wykonawczych za pomocą prostej mechaniki "przeciągnij i upuść". Zachęcam do obejrzenia szczegółowego poradnika, cóż to dokładnie jest, na oficjalnym kanale Unreal Engine na YouTube.
Warto wiedzieć, że UE4 od Epic Games ma nieco innego założenia przy opłaceniu licencji wydawcy od Unity. Tutaj odpalimy twórcom silnika 5% od zarobków dopiero po przekroczeniu 1 miliona dolarów przychodu, co daje kwotę 50 tysięcy dolarów. To dużo, ale z drugiej strony dalej zostaje nam w kieszeni aż 950 tysięcy dolarów. Unreal Engine 4 daje nieporównywalnie większe możliwości w rozwoju graficznym naszej produkcji (i optymalizacji), ma też łatwiejszy dostęp do niektórych podstawowych mechanik (np. sterowania dla wybranych gatunków), ale w ostateczności zrobimy na nim bardzo podobne rzeczy, co na Unity, czego dobrym przykładem będzie ten film. Założyciele Creepy Jar podczas spotkania wspominali, że przy kolejnej swojej grze przeskakują na środowisko Unreal Engine. Niekoniecznie dlatego, że oferuje większe możliwości, ale w Polsce gromadzi po prostu większą liczbę specjalistów i doświadczonych deweloperów na których im zależy.
Do Unity przylgnęło jednak, że tworzy się na nim przede wszystkim produkcje mobilne oraz mało skomplikowane platformówki 2D, co najwyżej 2,5D. Jak pokazują wybrane przykłady, to kompletna bzdura. Unity także pozwoli na więcej, a dla niektórych będzie nawet podstawowym wyborem. Faktem jest, że w internecie znajdziemy o wiele więcej poradników i assetów dla środowiska Unity, bo globalnie jest dalej pierwszym wyborem dla początkujących deweloperów. Unreal Engine z kolei zaoferuje już na starcie o wiele większą bazę gotowych rozwiązań, szczególnie pod względem graficznym, ale także z zakresu obsługi technologii motion capture, HDR, wysokiej jakości tekstur, efektów cząsteczkowych czy fizyki postaci oraz materiałów. Czy łatwiej zrobić na nim rozbudowaną produkcję AAA? Podobno tak, ale rzeczywistość pokazuje, że w Unity z jakiegoś powodu powstały takie produkcje jak Escape From Tarkov, Doom na Switcha, The Forest (na którym wzorowali się twórcy Green Hell), Rust czy Wasteland 3. Czyli jednak można, wbrew obiegowej opinii.
Jak sami widzicie, ja swoją bardzo podstawową, absolutnie amatorską produkcję stworzyłem w 4 dni, posiłkując się zawartymi w sieci poradnikami. Miałem co prawda wcześniej trochę doświadczenia z Blenderem, a Photoshop to jedno z moich codziennych narzędzi pracy, ale nie potrzeba wiele czasu, żeby stworzyć cokolwiek, co działa i co można przejść od początku do końca. Oczywiście, gdybym chciał wydać moje "Przygody Kuli" i zarabiać na tym jakiekolwiek pieniądze, musiałbym spędzić o wiele, wiele więcej czasu, dopracować kilkadziesiąt poziomów, wyeliminować błędy i wykreować więcej ciekawych mechanik. Do tego także znajdziemy szczegółowe poradniki w internecie. Pytanie zatem czy warto? Tak, jeśli tylko mamy odpowiednio duży zapał, determinację i ciekawy pomysł. Dzisiaj sprzedaż gry na poziomie 5, może nawet 10 tysięcy egzemplarzy nie stanowi większego problemu, szczególnie w przypadku projektu wersji mobilnej, gdzie ponoć zawsze znajdzie się nisza, która kupi to, co tam wrzucimy.
Green Hell powstawał blisko półtora roku, zanim trafił do wczesnego dostępu na Steam. The First Tree, jak wspomina Dawid, ukończył w 18 miesięcy. Średnio potrzeba ok. roku, żeby stworzyć coś, co można pokazać światu, a następnie wydać i cokolwiek na tym zarobić. Przeciętny budżet na produkcję jednego tytułu "Indie Premium" czyli nieco bardziej dopasionej gry stworzonej przez małą firmę, oscyluje w granicach dwóch, może trzech milionów złotych. Tyle, dla przykładu, wyniósł koszt pierwszego Snajpera od City Interactive. The First Tree kosztowało (z muzyką) ponad 2800$, a stworzenie pierwszego Wiedźmina zamknęło się w kwocie 28 milionów złotych. Największe gry z gatunku AAA, jak choćby GTA V to już olbrzymie pieniądze - tutaj potrzebne było aż 265 milionów dolarów, wliczając w to koszty ogromnego marketingu. Cyberpunk 2077 pochłonął jeszcze więcej środków - ponad 316 milionów dolarów. Nie są znane dokładne kwoty wyprodukowania i wypromowania Red Dead Redemption 2, ale według szacunków wyniosły ponad 400 milionów dolarów. Stworzenie Maxa Payne'a 3 kosztowało 105 milionów dolarów (bez marketingu), a budżet takiego Half Life'a 2 zamknął się w kwocie 40 milionów dolarów.
Są to olbrzymie pieniądze i nie sposób wyłożyć tyle z własnej kieszeni, do tego potrzebne będzie ogromne zaplecze korporacyjne i gigantyczne wpływy z wielu źródeł. A wiecie jak dużo jest projektów, które przepaliły dziesiątki milionów dolarów i nigdy nie zostały wydane? O tym jednak mógłbym napisać odrębny artykuł w przyszłości. Jeśli chcecie zostać deweloperami, nigdy nie było łatwiej wejść do tego barwnego świata. Na koniec wrzucę świetną radę, którą usłyszałem od założycieli Creepy Jar. Nawet jeżeli macie ogromny talent, świetne portfolio i wystarczająco dużą determinację, spróbujcie odbyć praktyki w jakimś studiu lub przepracujcie na etacie dwa, może trzy lata w tym środowisku. Wtedy zmieniają się przekonania, przyzwyczajenia, a człowiek nabiera ogromnego doświadczenia, które bardzo procentuje w przyszłości. O taką ofertę pracy nie jest zresztą trudno, brakuje na rynku specjalistów, dlatego powstają studia, które chcą sobie "wyszkolić" przyszłych pracowników.
Przeczytaj również
Komentarze (21)
SORTUJ OD: Najnowszych / Najstarszych / Popularnych