Czego nauczyłem się tworząc własną grę Rocky Planet
Nie wiem jak wpadłem na pomysł zrobienia tej gry. Od dziecka interesowałem się kosmosem i jestem fanem gier survivalowych. Pewnego popołudnia w lipcu 2019 roku pomyślałem, że zrobię grę dla siebie, która będzie połączeniem tego, co lubię: survivalu i kosmosu. W tej wstępnej fazie, bohatera wyobrażałem sobie jako astronautę przemierzającego bezkresy czerwonej, fioletowej, czy szarej planety. Szybko jednak zmieniłem zdanie, tak jak i w wielu innych kwestiach. Oto zbiór rad na temat tego, czego nauczyłem się tworząc własną grę.
Jakub Klementewicz. Programista-samouk, działający w branży IT samodzielnie. Koduje od 10 r.ż., od 14 wydaje apki na Androida, a od 18 gry na Steam – o tej, o której dzisiaj pisze więcej dowiesz się z tego linku. Pasjonat języka C# i nowych technologii. W wolnym czasie zajmujący się fotografią i jazdą na rowerze.
Spis treści
Zmienność i łamanie schematów
Zmian nie należy się bać, mimo że podobno najlepsze decyzje to te, których konsekwentnie się trzymamy. Bzdura! Lubię puszczać wodzę fantazji, wyłamywać się spoza schematów i innych szablonów. Ograniczenia nie są dla mnie, bo po prostu lubię eksperymentować.
Teraz każdy może zadawać sobie pytanie, dlaczego zmieniłem pomysł z kosmicznego na… No właśnie na jaki? Też na kosmiczny, ale po mojemu. Dziwne planety z dziwnymi roślinami i stworzeniami nie wszystkim się podobają, każdy ma swoje wyobrażenie kosmosu, innych planet, czegoś czego nikt tak naprawdę nie widział i gracze mogliby się czuć nieswojo.
Temat „ziemi” jest też w gatunku survival dokładnie wyczerpany. Dlatego zrobiłem kosmos po mojemu i przybrała kształt i formę niby ziemi, ale jednak trochę innej. W mojej grze biegasz po lesie, co brzmi swojsko, ale czy spodziewałbyś się, że z zza choinki czy krzaczka wybiegnie na ciebie krab, którego życiowym celem jest szczypanie Cię w kostkę?
Czy przypuszczałbyś, że wizyta na pustyni kończy się spotkaniem przesympatycznego kaktusa z wąsami i kapeluszem, który po krótkiej wymianie ciosów, rozpadnie się na części, a tłuszczu zwierzęcego użyjesz do stworzenia pochodni?
Wraz ze zmianami dot. projektu czy celu, zmieniał się także mój kod.
Po pewnym czasie pracy szablonowy przykład:
bool isAlive() { if(health > 0f) return true; else return false; }
zamieniłem na swój:
bool isAlive() { if(health > 0f) return true; return false; }
Niby słowo mniej, ale dla mnie jakoś lepiej i czyściej.
Rozpoczęcie prac
Tworzenie gry to jedna z najtrudniejszych, ale zarazem najprzyjemniejszych rzeczy z jakimi trzeba się „zmierzyć”. Programowaniem zajmuję się od 11 lat, przygodę z kodowaniem zacząłem w wieku 10 i od tamtej pory nie wyobrażam siebie w jakiejkolwiek innej pracy. Kodowanie to po prostu część mojego życia i uwielbiam to, że samodzielnie podejmuje decyzję o tym, czy muszę coś napisać lub zmienić w swoim kodzie.
Oczywiście gra to nie sam kod, są tutaj też modele, dźwięki, grafika 2D. Z uwagi na to, że pracuję samodzielnie, musiałem uczyć się wielu rzeczy z pokrewnych dziedzin. Rocky Planet zostało zrobione w 100% przeze mnie, nie korzystałem z assetów. Od rozpoczęcia prac w lipcu 2019, do wydania Early Access 14 lutego 2020, minęło 7 miesięcy. Przez ten czas oprócz zdobywania doświadczenia w kodowaniu, nauczyłem się również tworzenia grafiki low-poly w programie Blender 3D, który jest świetnym narzędziem, bardzo intuicyjnym, w pełni darmowym, pozwalającym na użytek komercyjny.
Grę natomiast stworzyłem w C# na silniku Unity 3D, aktualnie na dzień pisania artykułu ma wersję 2019.3.1.
Proces tworzenia
Samo programowanie i modelowanie to nie wszystko. Można stworzyć arcydzieło, ale jeśli nie powie się o nim nikomu, cóż po nim? Dlatego równocześnie z pracami rozpocząłem marketing za 0 zł, za pomocą własnego subreddit’a (r/RockyPlanet) oraz Discorda. Tam zebrałem w sumie prawie 3000 osób na dzień wydania gry. Reddit to świetna platforma do zgromadzenia dużej liczby osób w krótkim czasie. Ja swoją publikę zbudowałem dzięki rozsyłaniu grafiki z gry lub krótkich filmików na różnych innych subredditach związanych z grami. Czasem publikowałem również podobne materiały na serwisie Imgur i stamtąd przekierowywałem ludzi na Reddit’a.
Społeczność to fantastyczna sprawa. Tysiące ludzi, którzy czekają na nowe wiadomości o tym, co słychać w grze, to motor napędowy dla twórcy i motywacja!
Kiedy po 2-3 dniach dodałem coś do gry lub zmieniłem informowałem o tym swoich odbiorców, ludzie bardzo to doceniali. Kiedy zauważyłem, że są bardzo żywo zainteresowani grą, zacząłem tworzyć ankiety, w których wypowiadali się, co chcą w niej zobaczyć, lub co należy w niej zmienić. Dało im to realną możliwość „zrobienia” gry takiej, w jaką chcą grać.
Pracę warto też usprawniać zamiast “męczyć palce” pisząc nadmierne ilości literek np.
PostProcessEffects postProcessEffects = new PostProcessEffects();
można użyć w C#:
var postProcessEffects = new PostProcessEffects();
Testy
W styczniu 2019, po 6 miesiącach pracy, spośród tych kilku tysięcy ludzi, wybrałem 12, którzy mieli przetestować grę w czasie trwania Alpha Testów. Trwały one ponad 3 tygodnie, dzięki nim gra dostała ostatnie szlify i była gotowa na wydanie w trybie Early Access. Jestem bardzo wdzięczny tym ludziom, ponieważ poświęcili swój czas na szukanie i opisywanie błędów, zarówno samej gry, jak i jej optymalizacji.
Wydanie
W walentynki, około 1 nad ranem, kliknąłem przycisk „Opublikuj”, w tym momencie Rocky Planet ujrzało światło dzienne. To najwspanialszy moment w czasie tworzenia gry, i
jeden z najwspanialszych w życiu. Choć może się wydawać, że gra jest wydana, więc można tylko czekać na profity… jednak to dopiero początek. Tak naprawdę najważniejsza część zaczyna się teraz, kiedy gra żyje. Muszę budować społeczność, wzbogacać grę o nowy content. Pierwsza aktualizacja pojawiła się już w 16.02.2020, w której dodałem nowe elementy budowlane do tworzenia baz.
Nie poddawaj się!
Najważniejsze jest to, aby nie bać się i nie poddawać w procesie tworzenia gry. Nie ma barier nie do przejścia, czasem żeby rozwiązać problem trzeba poświęcić 3h, czasem dwie noce. Krytyka też jest częścią tej pracy. Jest wiele osób, którzy są „zawodowymi hejterami”. Staram się zawsze „wyłapać sedno”, jeśli dzięki takiej opinii mogę usprawnić coś lub zmienić, tak robię i traktuję ją jako pomoc. Jeśli ktoś jednak pisze kilka słów, które mają demotywować mnie do osiągania swojego celu, po prostu się uśmiecham i… idę dalej.
Marzenia
Teraz moim jedynym marzeniem jest to, aby gra była popularna i dotarła w najdalsze zakątki naszego globu. Dlatego robię wszystko, aby ludzie grając w grę czuli się dobrze, byli zadowoleni i chętnie do niej wracali.
Gra pochłonęła ponad 1000h pracy, a jej rozwój pochłonie jeszcze więcej. Uważam to za świetnie spędzony czas i czystą przyjemność. Kodowanie to praca dla cierpliwych i nie poddających się. Tu nie wolno się załamywać, tylko trzeba ciągle iść do przodu.