Rzucił pracę dla banku i stworzył własną grę:”Chciałem po prostu pracować nad czymś wartościowym”

22.01.2018 AUTOR: Radek Borzym

Styg jest twórcą wyjątkowo popularnego wśród fanów cRPG-ów Underraila. W wywiadzie opisuje decyzję o porzuceniu dobrze rokującej kariery programisty bankowego software, żeby stworzyć własną izometryczną grę fabularną. Pod tym linkiem dostępna jest oryginalna angielska wersja wywiadu.


Jesteś samoukiem, który własnym wysiłkiem nauczył się programować w Basicu, C++ oraz w C#. Ile czasu zajęła Ci nauka programowania i co było w niej największym wyzwaniem?

Naukę programowania rozpocząłem mając 11, bądź 12 lat i kontynuowałem ją z przerwami do czasu aż zdobyłem pracę jako programista. Najcięższą rzeczą było dla mnie odnalezienie dyscypliny potrzebnej do zdobywania nowej wiedzy, takiej jak różnorodne techniki kodowania, jakieś nowe API lub coś innego, ponieważ zawsze jestem bardzo skupiony na tworzeniu nowych rzeczy korzystając z wiedzy, którą już posiadam. Podejście to jest zwykle właściwe, ale zależy od tego jak dobrzy już jesteśmy w swoim rzemiośle. Zostanie zatrudnionym jako programista pomogło mi w przezwyciężeniu tego przyzwyczajenia ponieważ MUSIAŁEM uczyć się nowych rzeczy, a moja pensja zależna była od tego ile się nauczyłem.

W jaki sposób zdobyłeś swoją pierwszą pracę jako programista?

Poszedłem na targi pracy i rozdałem swoje CV wśród paru firm. Jedna z nich do mnie zadzwoniła, zrobiłem dla nich demonstrację swoich programistycznych umiejętności, z których byli zadowoleni.

Jak to się stało, że z samouka programisty stałeś się kimś kto pisze software dla banków?

Chyba po prostu przez konieczność. Zwyczajnie otrzymałem taką pracę. Jednakże kod, który pisałem wspomagał działanie frameworków, na których zbudowany był software bankowy, więc na szczęście nie musiałem uczyć się niczego na temat bankowości.

grę
Underrail

Wspominałeś, że miałeś dosyć pracowania dla banków i zacząłeś tworzyć grę jako poboczny projekt, ponieważ chciałeś stworzyć coś wartościowego. To była decyzja, która długo w Tobie rosła, czy naszła Cię nagle jak objawienie?

Jedna mała uwaga: nigdy nie pracowałem bezpośrednio dla banku, tylko dla firmy, która tworzyła oprogramowanie dla banków.

Zawsze chciałem stworzyć RPG-a, dlatego też zacząłem pisać silnik, na którym przyszła gra będzie działała. Początkowo nie sądziłem, że będę w stanie mieć z tego pieniądze, chciałem po prostu pracować nad czymś wartościowym, ponieważ byłem rozczarowany moją dzienną pracą.

Praca ta, sama w sobie nie była zła. Nieźle mi płacono i czułem się komfortowo, dobrze mnie traktowano, ale nie zajmowałem się tam niczym prawdziwie ważnym, a duża część napisanego przez mnie kodu lądowała w koszu ponieważ projekty były bardzo słabo zarządzanie.

Jak długo gra stanowiła projekt poboczny zanim zdecydowałeś się rzucić pracę w banku? Jak pewny byłeś wtedy, że podjąłeś właściwą decyzję?

Rozpocząłem pracę nad silnikiem w 2008 roku. Pracę rzuciłem chyba w kwietniu 2012 roku. W tamtym czasie bardzo blisko wypuszczenia wersji alfa gry na nieistniejącej już Desura. Byłem niezłe zmęczony pracowaniem przez kilka lat w dwóch robotach naraz i chciałem w całości skupić się nad premierą wersji alfa.

Nie byłem do końca pewien, czy rzucenie dziennej pracy będzie właściwą decyzją i mocno się martwiłem. Pamiętam, że myślałem o tym całe dnie. Gdyby praca była beznadziejna, to wybór byłby prosty, ale posiadałem obiecującą karierę i myślałem, że gdybym chciał to mógłbym daleko zajść w tej firmie lub przynajmniej w branży.

Ale uznałem, że powinienem spróbować swoich sił w tworzeniu gier dopóki jeszcze byłem młody. Gdybym tego nie zrobił, całe życie zastawiałbym się, czyby mi się udało. Zwłaszcza, że byłem wtedy jeszcze całkiem młody i gdybym odniósł porażkę, to miałbym jeszcze dużo czasu, żeby nadrobić braki w rozwoju kariery zawodowej.

 

Czy uważasz, że istnieje pewien przedział czasu, kiedy dana osoba jest jeszcze młoda, po którego upłynięciu ciężko jest spróbować swoich sił w tworzeniu gier? Wielu artystów robi się gorszych wraz z wiekiem.

Możliwe, że ma to coś wspólnego z samym wiekiem. Prawdopodobnie tak. Ale bardziej miałem na myśli to, że kiedy jesteś młody możesz częściej podejmować ryzyko ponieważ masz więcej czasu na podniesienie się po porażkach i zazwyczaj nie masz innych osób uzależnionych od siebie finansowo.

Jak poziom umiejętności programowania powinna mieć osoba, która chce stworzyć turowego RPGa? Powiedźmy, że korzysta z istniejącego silnika, takiego jak Unreal, czy Unity.

Nie jestem pewien. Nigdy nie pracowałem wykorzystując któryś z nich. Zazwyczaj jednak, RPG-i robi się ciężej niż inne gatunki ponieważ zawierają więcej wzajemnie nachodzących na siebie systemów. Jeżeli jesteś nowicjuszem powinieneś spróbować czegoś prostszego, jak platformówka.

Underrail

Zupełnie samodzielnie napisałeś silnik, na którym działa Underrail. Co podczas pisania silnika zajęło Ci najwięcej czasu oraz co mogłeś osiągnąć dzięki niemu, czego nie mógłbyś korzystając z dostępnych silników?

Sądzę, że rendering zajął największą ilość czasu i jest najbardziej skomplikowaną częścią silnika. Podstawy renderowania w rzucie izometrycznym nie są wcale tak trudne, ale kiedy pracujesz nad dodatkowymi funkcjonalnościami zaczynasz natrafiać na szczególne przypadki, kiedy efekty zaczynają na siebie nachodzić i musisz się tym zająć.

Nie mam pojęcia jak mój engine wypada w porównaniu do innych ponieważ nigdy z żadnego z nich nie korzystałem. Nie stworzyłem silnika ponieważ uznałem, że istniejące rozwiązania nie są dostatecznie dobre. Stworzyłem go ponieważ chciałem stworzyć własny silnik. Ważną zaletą tego rozwiązania jest to, że posiadasz pełną kontrolę nad kodem źródłowym i możesz dowolnie go modyfikować w zależności od potrzeb.

Czy możliwość modyfikowania kodu źródłowego była dla Ciebie czymś nieodzownym do stworzenia gry, którą chciałeś stworzyć, czy może jednak napisałeś silnik jako inwestycję na przyszłość, dzięki której tworząc następne gry będziesz miał narzędzie, które już znasz dobrze i możesz swobodnie je zmodyfikować? Coś podobnego do Gamebryo od Bethesdy. Czy może po prosu uznałeś pomysł napisania własnego silnika za ekscytujący sam w sobie?

Sądzę, że odpowiedzi A i B są po części poprawne, ale najbardziej prawdziwa jest odpowiedź C. Czyli po prostu chciałem to zrobić ponieważ uznałem, że sama idea jest ciekawa. I rzeczywiście była.

Co jest łatwiejsze? Zaprogramowanie walki w systemie turowym, czy w czasie rzeczywistym? Załóżmy, że poziom złożoności samego systemu walki jest w obu przypadkach identyczny.

W pewnym sensie walka w czasie rzeczywistym jest łatwiejsza do zaprojektowania i implementacji ponieważ nie musisz wtedy rozmyślać nad tym w jaki sposób oddać w systemie turowym akcje, które w rzeczywistości zachodzą symultanicznie jednocześnie nie tworząc przy tym zbyt wielu exploitów. Jak strzelanie we stacjonarnych przeciwników takich jak wieżyczki obronne i następne chowanie się za rogiem korytarza. Nie jest tak, że tego typu nadużycia nie istnieją w walce w systemie rzeczywistym, ale nie musisz tak mocno się nimi przejmować decydując się na walkę w tym systemie. Zresztą typowe turowe RPG-i turowe są tylko podczas walki, potrzeba więc stworzenia także dla nich ograniczonego systemu w czasie rzeczywistym.

Z drugiej jednak strony, w grach w czasie rzeczywistym zachodzi większa potrzeba optymalizacji kodu, dzięki której można uniknąć spadkom wydajności i innym problemom. W niektórych wypadkach może to ograniczyć możliwości dostępne deweloperom.

To tylko kilka rzeczy, które przyszły mi teraz do głowy. Sądzę, że obojętnie który system się wybierze, to natknie się na jakieś związane z nim problemy.

 

Co według Ciebie jest trudniejsze? Zaprojektowanie systemów w grze, czy ich programowanie/implementacja?

Cóż, dużą część projektowania robię podczas implementacji. Nie tworzę dokumentacji projektowej. Kiedy mam w głowie szczegóły danej koncepcji, na tyle dokładne, że nie mogę ich już spamiętać, to zazwyczaj zaczynam implementację i wtedy właśnie zaczyna się ciężka praca. Myślenie o pewnych fajnych funkcjonalnościach w abstrakcyjny sposób od strony końcowego użytkownika w stylu : „toby dopiero było fajne”, jest łatwe. Każdy może to zrobić.

W jaki sposób zaprogramowałeś AI przeciwników w grze?

Chciałem, żeby było w miarę proste ponieważ była cała masa innych części składowych gry, nad którymi także musiałem pracować. Później w trakcie prac zdecydowałem się na przejście z systemu rzeczywistego na turowy, musiałem więc wdrożyć turowe AI, przez co każde stworzenie w grze posiada teraz dwa AI co może prowadzić do kłopotów. Jest to ten aspekt gry, który zamierzam w przyszłych projektach mocno poprawić.

Czemu większość gier posiada słabe AI przeciwników w trakcie walki? Nawet sztuczna inteligencja NPC-tów w ostatnich latach uległa pogorszeniu. Nie robi się już tak fajnych mieszkańców miast, jak ci którzy zaludniali Gothica.

Równie dobrze mógłbyś zapytać mnie, dlaczego w dzisiejszych czasach wszystko jest do niczego 🙂 Dzieje się tak ponieważ wszystko staje się w większym stopniu widowiskiem, a w mniejszym dziełem sztuki (przez co rozumiem dumne dzieło rzemiosła).

grę
Underrail

Co zarekomendowałbyś komuś kto nie potrafi programować, ale chciałby stworzyć swojego własnego turowego cRPG-a. Jakich języków i technologii powinna nauczyć się taka osoba?

Zapomnij o tym. Naucz się programowania poprzez stworzenie czegoś prostszego. Jak klona tetrisa lub arkanoida. C++ jest, jak sądzę, standardem w branży i najprawdopodobniej stanowi twój najlepszy wybór. Od dawna nie sprawdzałem jakie API są dostępne, ale radziłbym unikać wykorzystywania istniejących silników do prostych projektów 2D.

Czy były funkcjonalności w Underrailu, które zostały wcięte/ niezaimplementowane ponieważ ich zaprogramowanie było zbyt czasochłonne?

Było takich parę, a wiele, takich jak system zdrowia, zostało uproszczonych w stosunku do tego jak pierwotnie je planowałem. Jeżeli chodzi o wycięte funkcjonalności, to przykładowo usunięte zostały cybernetyczne implanty/operacje.

Jak pierwotnie miał wyglądać ten bardziej rozbudowany system zdrowia? Był podobny może do ran z Copper Dreams?

Nie wiem jak działa ich system zdrowia. I szczerze powiedziawszy nie pamiętam jak miał wyglądać mój. Przestałem o nim myśleć niemalże 10 lat temu.

Mówiłeś, że lubisz programować. Dlaczego?

Lubię rozwiązywać problemy programistyczne i jestem w nich wystarczająco dobry. Ogólnie lubię tworzyć przydatne oprogramowanie, a w szczególności gry, ponieważ czuję wtedy, że niemalże z niczego daję życie czemuś nowemu. Mówię o życiu w tym sensie, że ludzie mogą prowadzić fajne interakcje, poczuć zdumienie podczas eksploracji ponieważ nie wiedzą dokąd sięga limit twojej wyobraźni.

grę
Underrail

Artykuł powstał dzięki:

Coders Lab

Łącząc doświadczenie edukacyjne ze znajomością rynku pracy IT, Coders Lab umożliwia szybkie i efektywne zdobycie pożądanych kompetencji związanych z nowymi technologiami. Skupia się się na przekazywaniu praktycznych umiejętności, które w pierwszej kolejności są przydatne u pracodawców.

Wszystkie kursy odbywają się na bazie autorskich materiałów, takich samych niezależnie od miejsca kursu. Dzięki dbałości o jakość kursów oraz uczestnictwie w programie Career Lab, 82% z absolwentów znajduje zatrudnienie w nowym zawodzie w ciągu 3 miesięcy od zakończenia kursu.


Do góry!

Polecane artykuły

Zapisz się do naszego newslettera

Wyślij mi newsletter (Możesz się wypisać w każdej chwili).

email marketing powered by FreshMail
 

Subscribe to our newsletter

Send me your newsletter (you can unsubscribe at any time).

email marketing powered by FreshMail
 

Subscribe to our newsletter

email marketing powered by FreshMail