Gamedev – praca i rozwój w branży gier komputerowych. Devdebata

– Dobry programista powinien umieć stworzyć prostą grę całkowicie samodzielnie – powiedział nam Dominik Majchrzak, Tech Lead, AR Digital, jeden z uczestników devdebaty o branży gamedev. Jak wygląda społeczność gamedev? Jak wejść do branży i co warto wiedzieć o grach, zanim zaaplikujesz na stanowisko? Dowiecie się tego poniżej od trzech Tech Leadów z Awaken Realms.

W devdebacie udział wzięli:

  • Dominik Majchrzak, Tech Lead w AR Digital. Programista Unity z prawie 5-letnim doświadczeniem. Przygodę z gamedevem rozpoczął w branży gier mobilnych, gdzie tworzył serię małych, ale bardzo popularnych gier. Od 2 lat pracuje w ambitnym zespole Awaken Realms Digital, gdzie jako lider techniczny odpowiada za programistyczną stronę projektu. W wolnym czasie lubi robić pizzę oraz grać w gry z gatunku roguelike.
  • Szymon Zachara, Tech Lead@Chicken Launcher. W zawodzie programisty od 2002 roku, choć przygodę z Unity rozpoczął dopiero w 2013 przy okazji kontaktu z technologią AR i pierwszymi urządzeniami VR. Stąd było już niedaleko do gamedevu, więc od 2015 roku zajmuje się wyłącznie programowaniem gier. Uczestniczył w projektach takich jak „Kursk”, „Questland”, „Project Fame” czy zestaw dodatków do popularnej „Divinity: Original Sin 2”. Stały uczestnik gamejamów i branżowych konferencji.
  • Michał Maciejczyk, Tech Lead przy projekcie Nemesis Distress. Swoją przygodę z programowaniem zaczął 10 lat temu. W branży gamedev pracuje od 2014 roku. W tym czasie pracował przy 3 grach oraz własnym silniku. Zajmował się implementacją rozwiązań w takich dziedzinach jak Multiplayer, Fizyka, Gameplay, AI, Architektura Silnika oraz Grafika. Po godzinach pracuje nad własną grą w roli programisty / technical artysty / designera. W pozostałym czasie słucha audiobooków, czyta książki oraz interesuje się technologią kosmiczną.

Praca i kariera game developera

Jak rozpoczęła się Wasza przygoda z gamedevem? Czym zajmowaliście się zanim zaczęliście pracę w pierwszej firmie z branży gamedev?

gamedev jak zacząć, jak stworzyć grę

Dominik Majchrzak, Tech Lead, AR Digital:

Będąc studentem informatyki rozważałem różne kierunki rozwoju. Postanowiłem spróbować swoich sił w gamedevie, jeszcze tak naprawdę nie wiedząc, na co się piszę. Zacząłem swoją przygodę od branży gier mobilnych, jako junior-programista. Miałem wtedy duże braki, ale nadrabiałem zaangażowaniem i uczyłem się od bardziej doświadczonych kolegów, dzięki czemu z powodzeniem zostałem w branży gier na stałe. Z biegiem czasu sam nabrałem wiedzy i doświadczenia, co staram się wykorzystywać obecnie, będąc liderem technicznym jednego z działów Awaken Realms.

tworzenie gier komputerowych - historie developerów

Szymon Zachara, Tech Lead@Chicken Launcher:

Przed wejściem do gamedevu programowałem internetowe systemy ewidencyjne dla dużych korporacji z telekomunikacyjnej w technologii JEE. Następnie miałem okazję pracować przy kilku projektach startupowych, również z dziedziny AR/VR, które otworzyły mi drzwi do świata tworzenia gier komputerowych i postanowiłem spróbować.

praca w branży gier komputerowych

Michał Maciejczyk, Tech Lead przy projekcie Nemesis Distress:

Gdy szedłem na studia (Informatyka, Uniwersytet Wrocławski), moim celem było zostać „Ekspertem ds. Bezpieczeństwa”. Jednak już po pierwszym roku wiedziałem, że to co mnie naprawdę interesuje to programowanie funkcyjne, w takich językach jak Haskell czy OCaml. Niestety, nie jest to zbyt popularna ścieżka kariery w naszym kraju, dlatego też moją pierwszą pracą było tworzenie serwisu internetowego dla biur podróży. Tam z pozycji frontend developera przeszedłem do backendu. 

Gdy po dwóch latach natrafiłem na pierwszą ofertę w gamedevie, stwierdziłem, że połączenie moich zainteresowań/nałogu do gier z pracą, sprawi, że praca stanie się przyjemnością! Teraz pracuję w gamedevie już ponad sześć lat i każdy dzień w pracy to dla mnie czysta przyjemność.

Praca w branży gier

Jaka jest specyfika tej branży? Jaki jest próg wejścia do niej?

Dominik Majchrzak, Tech Lead, AR Digital:

Uważam, że branża jest przyjazna dla wszystkich nią zainteresowanych. Jest dużo eventów branżowych, szkoleń internetowych, game jamów, narzędzi developerskich, a pracodawcy często dają szansę perspektywicznym juniorom. 

Co zrobić, żeby być perspektywicznym juniorem i pracować „w grach”? Dobrym sposobem jest zrobienie czegoś swojego. Jeśli jesteś programistą, po prostu zrób grę od zera. Nie oznacza to, że masz teraz zacząć tworzyć tytuł z najwyższej półki. Możesz zacząć od takich klasyków jak Pong, Arkanoid, Space Invaders, itd. A jeszcze lepiej jak sam masz jakiś pomysł na prostą grę, albo dodasz coś od siebie do tych wymienionych. Jeśli nie wiesz jak zacząć i jak stworzyć grę, ściągnij Unity (lub inny silnik jeśli chcesz, ale Unity jest domyślnym wyborem na start) i zacznij oglądać tutoriale, jest ich mnóstwo i dają wystarczającą wiedzę, żeby stworzyć tego typu grę. I pamiętaj, 1 skończony projekt jest warty więcej niż 10 niedokończonych!

Szymon Zachara, Tech Lead@Chicken Launcher:

Branża gier jest bardzo szeroka i z staje się coraz bardziej otwarta – coraz częściej game developerzy dzielą się wiedzą na konferencjach, jest coraz więcej grup na portalach społecznościowych pomagających zacząć.

Trochę głębiej rysują się podziały na programistów gameplay, programistów silnika, specjalistów od danych systemów (na przykład sztucznej inteligencji lub sieci) lub konkretnego silnika (prym wiodą Unity i Unreal), zwolenników tworzenia gier F2P i Premium…

Najlepszym sposobem na dostanie się do branży jest stworzenie kilku małych gier – choćby prototypów lub klonów ośmiobitowych klasyków. Pomóc może udział w game-jamach (hackathonach nastawionych na stworzenie gry w krótkim czasie) i oczywiście czym szersza wiedza z programowania, tym lepiej.

Michał Maciejczyk, Tech Lead przy projekcie Nemesis Distress:

Gamedev to przede wszystkich branża, która skupia pasjonatów gier. Każdy tutaj w coś gra, mniej lub więcej. Na spotkaniach czy konferencjach branżowych, poza wymianą wiedzy i doświadczenia, rozmawiamy o grach, w które gramy, tych które tworzymy oraz takich o jakich marzymy, by pewnego dnia stworzyć. To co jest w niej unikalne, to atmosfera, swoboda i otwartość. Zdecydowanie częściej sobie pomagamy (najczęściej przy piwie) niż ze sobą konkurujemy.

Istnieje wiele różnych dróg, by dostać się do tej branży. Jedni zaczynają na praktykach czy na stażu, inni jako moderzy, a niektórzy po prostu w wolnym czasie robią swoje gierki. Gdy przychodzi na rozmowę ktoś, kto nie ma doświadczenia komercyjnego w gamedevie, to o co mnie najbardziej interesuje, to jakie ciekawe gry robił w wolnym czasie. Fajnie jak masz się czym pochwalić i opowiedzieć na jakie problemy trafiałeś i jak je rozwiązałeś. Zacznij od czegoś prostego. Nie musisz od razu pisać swojego silnika (choć ja zachęcam spróbować) czy gry, która ma zarobić miliony. Po prostu zrób coś fajnego.

Gamedev – jak wejść do branży?

Jakie cechy, umiejętności są konieczne dla każdego, kto chce wejść do branży gamedev?

Dominik Majchrzak, Tech Lead, AR Digital:

Gamedev lubi ludzi kreatywnych, ale też rozsądnych. Trzeba być kreatywnym, żeby stworzyć ciekawą grę. Niestety bez rozsądku prawdopodobnie nigdy tej gry nie skończymy i nie wydamy. Dlatego trzeba umieć znaleźć ten trudny balans, który pozwala robić rzeczy dobrze, ale w akceptowalnych ramach czasowych.

Umiejętności adaptacji do zmian i samoorganizacji pracy pomagają odnaleźć się w świecie gamedevu, który ze względu na kreatywny aspekt jest bardzo zmiennym środowiskiem. Nie należy też zapominać o tym, że gry tworzy się w zespołach, a więc praca zespołowa i przejrzysta komunikacja są niezbędne. Poza tym może to oczywiste, ale pasja do gier jest bardzo mile widziana.

Szymon Zachara, Tech Lead@Chicken Launcher:

Umiejętność ciągłej nauki – technologia w gamedevie pędzi, książki wydane dwa-trzy lata temu często są nieaktualne, do tego nigdy nie wiadomo, kiedy coś zostanie zastąpione przez lepszy, wydajniejszy, łatwiejszy system. Dla przykładu, jestem full-time programistą gier od sześciu lat i musiałem w tym czasie opanować trzy systemy UI, a czwarty czeka w kolejce.

Dobrze jest umieć tłumaczyć zawiłości techniczne osobom nietechnicznym. Większość ludzi pracujących przy produkcji gier to nie programiści, tylko graficy i designerzy. Produkcja idzie dużo płynniej, kiedy potrafisz zrozumieć, co próbują osiągnąć i wytłumaczyć, jak mogą korzystać z dostarczonych systemów i narzędzi.

Michał Maciejczyk, Tech Lead przy projekcie Nemesis Distress:

Przede wszystkim kreatywność w rozwiązywaniu problemów. Jest to niezbędna umiejętność, by móc spełnić wymagania designu, który sam w sobie jest bardzo kreatywny. Każda gra potrzebuje mieć jakieś unikalne elementy. Każdy twórca i projektant gier marzy o tym, by móc zrobić coś czego nie zrobił jeszcze nikt inny. To sprawia, że problemy nad jakimi pracujemy są dosyć unikalne i ciężko znaleźć na nie gotowe rozwiązania. Nie raz wszystko odbywa się pod presją czasu, co powoduje, że nie ma czasu na dogłębny research. Dlatego też, umiejętność znajdowania nieoczywistych rozwiązań jest tutaj kluczowa.

Możliwości rozwoju game developera

Jakie możliwości rozwoju ma programista pracujący w branży gamedev?

Dominik Majchrzak, Tech Lead, AR Digital:

Podobnie jak w innych branżach są różne specjalizacje, do których można dążyć. Specjaliści są mocno poszukiwani i cenieni przez pracodawców. Mam na myśli takie specjalizacje jak m.in. grafika, multiplayer/networking, sztuczna inteligencja, optymalizacje, czy narzędzia. Jednocześnie należy pamiętać, że w gamedevie bardzo ważne jest posiadanie chociaż minimalnej wiedzy z każdej dziedziny. Dobry programista powinien umieć stworzyć prostą grę całkowicie samodzielnie. Poza specjalizacjami, jeśli masz umiejętności przywódcze i dużą techniczną wiedzę, możesz zostać liderem zespołu programistycznego.

Szymon Zachara, Tech Lead@Chicken Launcher:

Tak jak popularne szczeble junior-mid-senior zostały przeszczepione z branży IT tak mamy całkiem odmienne specjalizacje – są programiści silnika, renderera, którzy zazwyczaj posiadają niesamowitą wiedzę w temacie programowania niskopoziomowego. Z drugiej strony mamy programistów gameplayu i narzędzi – częściej korzystający z wysokopoziomowych języków. Są też programiści zajmujący się sztuczną inteligencją, kodem sieciowym, interfejsem użytkownika – jest masa specjalizacji. W małych studiach zazwyczaj programista jest w stanie zająć się kilkoma z nich, w większych specjalizacje są bardziej widoczne.

Michał Maciejczyk, Tech Lead przy projekcie Nemesis Distress:

Tutaj dla każdego znajdzie się coś interesującego. Dla fanatyków optymalizacji i programowania niskopoziomowego, polecam pracę przy silnikach. Jeśli chcesz szybko cieszyć się rezultatem swojej pracy (czyli po prostu w to pograć), to pozycja programisty gameplay’u to coś dla Ciebie. Imponuje Ci piękna grafika i efekty wizualne? Pisanie shaderów czy systemów cząsteczkowych przypadnie Ci do gustu. A jeśli lubisz czuć się jak generał na polu bitwy, sztuczna inteligencja to dziedzina, w której to Ty wydajesz rozkazy swoim żołnierzom.

Na czym polega Wasza praca? Czym zajmujecie się na co dzień?

Dominik Majchrzak, Tech Lead, AR Digital:

Jako techniczny lider mam wiele obowiązków poza programowaniem. Między innymi dużo rozmawiam z innymi działami, opiniuję ich zadania i pomysły od technicznej strony. Wyceniam, ile zajmie wdrożenie nowych systemów. Wbrew pozorom, nie jest to w żaden sposób związane z jakąś biurokracją, czy niepotrzebną papierologią. Wszystkie te rzeczy pozwalają podejmować lepsze decyzje i zaoszczędzić znacznie więcej czasu.

Poza tymi obowiązkami jestem również cały czas programistą i realizuje kolejne, zaplanowane przez nas zadania. Każdy programista zaczyna swoje zadanie od rozpoznania terenu, poznając kod, w którym będzie dokonywał zmian. Następnie planuje/projektuje w jaki sposób te zmiany przeprowadzić, a na końcu robi to, o co się głównie programistów podejrzewa, czyli klepie kod. Następnie test, czy wprowadzone zmiany działają oraz Code Review, czyli sprawdzenie napisanego kodu przez innego programistę. Jest tego na tyle dużo i zadania są tak różnorodne, że ciężko o nudny dzień.

Szymon Zachara, Tech Lead@Chicken Launcher:

Przede wszystkim zajmuję się implementacją systemów w aktualnie rozwijanym projekcie. Zazwyczaj otrzymuję opis jak dana funkcjonalność ma działać, często z referencjami z innych gier i na tej podstawie tworzę implementację wraz z jakimś prostym scenariuszem jej przetestowania i możliwością sparametryzowania dla designerów. Poza tym wspieram komunikację w zespole i doradzam jakich rozwiązań można by użyć, aby ułatwić pracę. Odrobinę czasu poświęcam na code review.

Michał Maciejczyk, Tech Lead przy projekcie Nemesis Distress:

Zanim zostałem Tech Leadem, moja praca polegała głównie na implementacji funkcjonalności zgodnie z designem. Taki proces jest zawsze mocno związany z ciągłym komunikowaniem się pomiędzy programistą a designerem, jak również sporo się różni w zależności od tego czy robimy prototyp tej funkcjonalności czy jego wersję finalną. Faza prototypowania jest bardzo kreatywna. Wymieniamy się pomysłami i dyskutujemy nad powstającymi problemami. Staramy się wiele razy iterować funkcjonalność, by dostać efekt który daje “fun”. Po zamknięciu prototypu, przystępuję do implementacji (na czysto), w której zwracam szczególną uwagę na wydajność, skalowalność oraz łatwość w konfigurowaniu parametrów.

Na koniec, we współpracy z testerem naprawiam bugi. Ta ostatnia faza mocno się różni od tego jak to wygląda w innych branżach IT, ponieważ czasami trafiamy na dość komiczne bugi (przeciwnik tańczący na głowie, czy śmiercionośne kury) i jest przy tym sporo śmiechu, zamiast stresu.

Po objęciu stanowiska Tech Leada, do moich codzienny zadań doszło również prowadzenie spotkań z programistami, pomaganie im w rozwiązywaniu problemów oraz doradzanie w ocenie nowych funkcjonalności, pod kątem technologicznym.

Gamedev od środka

O czym mało mówi się w kontekście branży gamedev? O czym raczej nie wiedzą osoby spoza branży?

Dominik Majchrzak, Tech Lead, AR Digital:

Sam proces powstawania gry, jest czymś, co często zaskakuje nowych w branży. Wiele ludzi myśli, że wystarczy mieć dobry pomysł, a następnie go zrealizować i gra jest gotowa. O ile faktycznie wypada zacząć od ciekawego pomysłu, to następne kroki są trochę bardziej skomplikowane. Sami często powtarzamy, że tworzenie gier to proces iteracyjny. Normą w branży jest wielokrotne podchodzenie do tego samego tematu na różne sposoby, realizowanie i odrzucanie jednego pomysłu za drugim, tak długo aż znajdziemy ten właściwy.

Czasami trzeba zmienić plan i zweryfikować już wcześniej istniejące części systemu. Wiele topowych gier w historii było we wstępnych założeniach zupełnie innymi projektami, które prawdopodobnie nigdy nie osiągnąłby sukcesu, gdyby nie późniejsze zmiany. Ciągła walidacja stanu projektu i adaptacja do napotkanych przeszkód są niezbędne w procesie tworzenia gry. Należy jednak pamiętać, że jeśli coś zrobiliśmy, a następnie zostanie to odrzucone, to nie oznacza, że ten czas zmarnowaliśmy. Każda taka sytuacja uczy czegoś cały zespół i pozwala podejmować lepsze decyzje w przyszłości.

Szymon Zachara, Tech Lead@Chicken Launcher:

Jest kilka mniej lub bardziej popularnych mitów o gamedevie, które wypada sprostować. Przede wszystkim zarobki już od jakiegoś czasu dorównują zarobkom w branży IT. Po drugie – crunch nadal się pojawia, ale coraz rzadziej i większość firm mocno dba o to, by pracownicy utrzymywali zdrowy work-life balance. I po trzecie – nie trzeba być zapalonym graczem spędzającym przed konsolą po kilka godzin dziennie. Jasne, znajomość gier bardzo pomaga i kilka tytułów oraz mechanik warto znać, ale te kilka zazwyczaj wystarcza.

Ciężko sobie wyobrazić jak gry powstają i ile wymagają pracy póki samemu nie próbuje się takiej stworzyć. Scena wchodzenia po drabinie, jeśli ma realistycznie wyglądać może zająć animatorowi dwa tygodnie pracy, mimo że w grze trwa siedem sekund. Teoretycznie proste dodanie odbijających się od patelni pocisków rewolwerowych wydłużyło kiedyś proces produkcji pewnej gry o pełny miesiąc, a w grze jest tylko ciekawym smaczkiem. 

Inne rzeczy są zaskakująco tanie, pierwsza część Diablo była pisana jako gra turowa i zrobienie z niej gry rozgrywanej w czasie rzeczywistym zajęło jeden dzień. Tego typu przykłady można mnożyć i często są zaskoczeniem dla początkujących. Warto czasem grając w ulubioną grę zastanowić się jak uzyskano dany efekt, żeby w pełni docenić ile pracy zostało w nią włożone.

Michał Maciejczyk, Tech Lead przy projekcie Nemesis Distress

Pracę w gamedev większość kojarzy się z rozrywką. Słusznie, bo w końcu robimy gry, a gry to rozrywka. Jednak nie każdy zdaje sobie sprawę z tego jak ciężka i wymagająca jest to praca, nie raz wymagająca wielu poświęceń.

Gier na rynku jest coraz więcej i aby się wybić, należy zrobić coś naprawdę dobrego. Gracze są coraz bardziej wymagający i prędzej czy później wytkną nam każdy błąd jaki pozostał nie naprawiony. Ponieważ chcemy, aby gry, które robimy były jak najlepsze, bardzo często dorzucamy kolejne super funkcjonalności które by stały się rzeczywistością, poświęcamy na nie dodatkowy czas, narzucając sobie presję czasową. Nasza pasja powoduje, że nie chcemy odpuścić i zarywamy kolejne nadgodziny, by dowieść grę, o której razem dyskutujemy i marzymy. Tworzenie gier można porównać do biegu na 1000 metrów. Różnica jest taka, że po drodze dorzucamy sobie kolejne kilogramy na plecy i to zakładając, że czas na przebiegnięcie tego dystansu się nie zmieni.

Jednak pomimo tego wysiłku jaki trzeba włożyć by zrobić fajną gre, to moment, w którym wydajesz ją i widzisz graczy przeżywających historie opracowane przez Twój zespół, jest powodem, dla którego następnego dnia chcesz wrócić do pracy i zacząć pracować nad kolejnym tytułem.

Zapraszamy do dyskusji

Patronujemy

 
 
More Stories
Jak za pomocą OpenCV przetwarzać grafiki w React Native