GameDev

Jak zacząć programować gry?

Branża szeroko pojętnego gamingu przeżywa obecnie rozkwit. Pandemia spowodowała wzrost sprzedaży na rynku komputerów, a co za tym idzie, więcej ludzi sięga po gry. W 2020 roku rynek gier mobilnych przerósł rynek gier PC i konsolowych… łącznie! Mało kto jest świadomym tego, że w Polsce jest aż 16 mln graczy. Co ciekawe duża część z nich sama siebie tak nie określa, nie będąc świadomym tego, że granie w autobusie podczas podróży również sprawia, że stają się graczami.

Taki wzrost rynku powoduje duże zapotrzebowanie na programistów GameDev. Praca programisty gier jest bardzo satysfakcjonująca. Programowanie gier daje poczucie instant gratification, te dwie linijki kodu, które napisałeś dają dużo zmianę w tym, co się dzieje na ekranie. – mówi Szymon Sirocki z BOOMBIT. To wszystko sprawia, że GameDev staje się modnym i bardzo przyszłościowym kierunkiem w IT.

Jak zatem zacząć programować gry? O tym opowiedzieli nam Szymon Sirocki i Anna Bufan z BOOMBIT – jednego z największych producentów gier mobilnych na świecie.

Czym zajmuje się Game Developer?

Game developer to przede wszystkim programista. Jednak to pojęcie nie w pełni oddaje, czym konkretnie się zajmuje. Jak powiedział Szymon, Game developer może zajmować się bardzo wieloma rzeczami na różnych etapach tworzenia gry. Programista GameDev może zajmować się mechaniką gry (systemami walki, systemami do zadań), interfejsem użytkownika (wyświetlanie ekwipunku), efektami specjalnymi (systemem cząsteczek, programowaniem grafiki, animacjami), tworzeniem narzędzi (zadania w grze, edytory map), silnikiem gry, multiplayerem czy sztuczną inteligencją.

Gra Norman’s Island stworzona z wykorzystaniem silnika Unity
Gra Norman’s Island stworzona z wykorzystaniem silnika Unity

To dokładnie czym zajmuje się Game developer, czy jedną wyspecjalizowaną dziedziną, czy może musi opanować więcej kwestii związanych z pisaniem gry, w dużej mierze zależy od wielkości projektu, w jakim pracuje. Im większy projekt, tym specjalizacja jest węższa, bardziej nakierowana na zajmowanie się jedną, konkretną rzeczą. Czy zatem w erze wielkich projektów, osamotniony programista może napisać grę, która osiągnie sukces? Oczywiście. Takim przykładem jest, chociażby Minecraft, który osiągnął spektakularny sukces, a został napisany przez jednego developera. Najpopularniejsze obecnie gry mobilne tzw. Hyper-casual game, są to najczęściej projekty jedno lub dwuosobowe.

Jak podkreśla Szymon, jako początkujący programista gier nie musimy wybierać tego, co chcemy robić już na starcie swojej kariery. Ścieżka wykrystalizuje się sama, podczas jej trwania i będziemy mogli zdecydować, czy pójść w kierunku specjalizacji, czy może zechcemy być człowiekiem orkiestrą ogarniającym więcej kwestii. 

Co musi umieć Game developer?

Game developer przede wszystkim musi umieć programować. Nie istnieje jeden, uniwersalny język programowania, który służy do pisania gier. Język jest tylko narzędziem, który służy do wykonania zadania. To czy musimy znać jeden, czy wiele języków, zależy od zadań, jakie zadania przed nami stoją. Jeśli będziemy pisać własny silnik gry taki jak np. RED Engine wykorzystywany do gry Cyberpunk przez CD Project to będziemy używać języka C++. Z kolei przy używaniu silnika Unity będziemy używać C#, a tworząc gry na iOS języka Swift. To jakim językiem programowania będziemy się posługiwać, jako programista gier zależy od tego, co chcemy zrobić.

Kolejną rzeczą, jaką musi umieć programista gier to matematyka. Nie chodzi tu o matematykę znaną ze szkoły, czyli wykuwanie wzorów na pamięć. Nikt GameDevie nie musi znać wzorów na pamięć. Używamy Google do tego – Mowi Szymon Sirocki z BOOMBIT. Jak zaznacza Szymon, bardziej chodzi o świadomość istnienia pewnych wzorów i umiejętności ich wykorzystania. Przykładem może być wzór na ruch po okręgu, który wykorzystuje się np. do wyrzucania przedmiotów ze skrzynki. Nie należy się bać tej matematyki. Nie jest to też matematyka, którą uczą na studiach. Głównie jest to geometria. Im więcej jej znamy, tym łatwiej będzie nam się pracować.

Ważną rzeczą w pracy programisty gier jest także umiejętność przekładania języka ludzkiego na język komputera. Programista niejako tłumaczy zamysł projektantów gier, na ten zrozumiały dla komputera. Niezależnie od tego, w jakiej branży pracuje programista, to nieodłącznym elementem pracy jest rozwiązywanie problemów. Na szczęście większość problemów programisty jest już rozwiązana, a wyjaśnienie czeka w internecie. Ważne jest, aby programista umiał szybko i sprawnie dotrzeć do tych rozwiązań.

Znajomość języka angielskiego również jest niezbędna. Z uwagi na dostępne tutoriale i dokumentacje, które są dostępne właśnie w tym języku. Bez znajomości angielskiego będzie nam bardzo ciężko skorzystać z dostępnej wiedzy w internecie.

Zestaw umiejętności, jakie musi mieć programista gier w dużej mierze pokrywa się z tym co musi umieć programista aplikacji webowych. To, co odróżnia prace Game developera od pracy programisty np. stron internetowych jest to większa ilość matematyki, którą musimy używać w swojej pracy. 

Tworzenie gry Golf Club: Wasteland, przez Demagog Studio w Unity
Tworzenie gry Golf Club: Wasteland, przez Demagog Studio w Unity

Wiedza o tym jak działa komputer, w tym procesor czy pamięć ram to jest to, co programiście gier pozwala wejść na wyższy poziom. Jeśli pracujemy przy projektach gier w których występują setki, a nawet tysiące jednostek, to wiedza o tym jak działa komputer, przyda się do zrobienia lepszej optymalizacji gry. Znajomość zasad renderingu i tego jak działa karta graficzna sprawi, że będziemy w stanie uzyskać lepsze efekty graficzne – mówi Szymon Sirocki. Kreatywność i pomysłowość to kolejne cechy, jakie sprawiają, że stajemy się lepszymi programistami. Szczególnie te w rozwiązywaniu napotkanych problemów. Znajomość game desingu oraz obsługi programów graficznych, ułatwi nam pracę i wpłynie na lepszy efekt końcowy naszej gry.

Czym się różni Game developer, od programisty aplikacji

To, co na pewno jest sporą różnicą, to fakt, że pracując jako programista gier, musisz być przyzwyczajony do tego, że pracujesz z mniejszą ilością specyfikacji. Jako programista aplikacji biznesowych jesteś przyzwyczajony do tego, że masz jasno wyspecyfikowane to, co masz zrobić. W GameDevie programiści w dużej mierze muszą sami wykazywać się inicjatywą i kreatywnością w rozwiązywaniu problemów. Sama praca jest bardziej iteracyjna. Programista gier wie, jaki jest pomysł na grę i co ma się w niej dziać, ale nie ma sprecyzowane, jak to ma działać od strony kodu. 

Jeśli chodzi stricte o metodykę pracy, to rzadziej się spotyka TDD (test drivent development) czy extreme programming, bardziej popuarlne w GameDevie jest Kanban i w większych projektach Scrum.  To, co na pewno przemawia za Game developmentem to bugi, które są zdecydowanie bardziej zabawne niż w programowaniu aplikacji biznesowych 🙂

Jak uczyć się programowania gier?

Jeśli nie wiesz, czy tworzenie gier jest dla Ciebie to dobrym sposobem na sprawdzenie jest skorzystanie z programów do programowania wizualnego takich jak Game Maker Studio lub Conscruct. Jeśli na 100% jesteście przekonani o tym, że chcecie tworzyć gry, to możecie rozpocząć naukę od razu od uczenia się konkretnego języka programowania.

Możecie skorzystać z 3 ścieżek nauki programowania gier, o których Szymon mówi w swojej prezentacji:

Ścieżka nr 1: Uczymy się języka programowania, a następnie biblioteki graficznej

Zdecydowanie najdłuższa i najtrudniejsza ścieżka, jaką można obrać przy nauce programowania gier, ale też dająca nam największą wiedzę o tym jak działa komputer i jak to się później przekłada na programowanie. W pierwszej kolejności uczymy się programowania na niskim poziomie w C++, następnie opanowujemy bibliotekę graficzną i w konsekwencji jesteśmy w stanie napisać własny silnik graficzny. Takie rozwiązanie daje nam dużą swobodę oraz wiedzę do tworzenia zaawansowanych efektów oraz późniejszej optymalizacji. Jak podkreśla Szymon, minie sporo czasu, zanim wyświetlimy pierwszy trójkąt na ekranie, dlatego jest to ścieżka dla osób, które mają sporo wolnego czasu i dużą determinację do nauki. Z taką wiedzą możemy pracować przy silnikach gier np. w CD Projekt przy ich silniku RED Engine. Przykładowy skillset: C++, Open GL i Lumberyard 

Ścieżka nr 2: Uczymy się języka programowania, a następnie silnika

Zdecydowanie szybsza ścieżka do nauki programowania gier. Dobra dla osób, które chcą w pierwszej kolejności nauczyć się programowania, a dopiero potem móc tę wiedzę wykorzystać do tworzenia gier.  Przykładowo możemy nauczyć się C++ i zacząć tworzyć gry przy pomocy Unreal Engine lub C# i tworzyć gry w Unity. Taki zestaw umiejętności pozwoli nam tworzyć gry mobilne lub gry na konsole dużo szybciej niż w przypadku ścieżki nr 1. Silnik, który wykorzystujemy do tworzenia gier, pozwoli nam szybciej wyświetlić coś na ekranie, dzięki czemu nasza nauka będzie dużo bardziej przyjemna. Przy tym podejściu jesteśmy ograniczeni do możliwości silnika, ale daje nam to też spory wybór platform, na jakie możemy tworzyć gry.

BattleScar by Nico Casavecchia and Martin Allai – Unity
BattleScar by Nico Casavecchia and Martin Allai – Unity

Ścieżka nr 3: Uczymy się silnika wraz z językiem progrmaowania

Podejście, które polega na nauce języka programowania i silnika jednocześnie. Uczymy się np. C# poprzez korzystanie z silnika Unity. Na rynku dostępnych jest wiele kursów, które uczą takiego właśnie podejścia. To podejście jest bardzo dobre dla osób, które chcą szybko zobaczyć efekty swojej nauki w postaci prostych animacji. Silnik umożliwia nam programowanie gry i daje dostęp do widocznych rezultatów. Wadą tego rozwiązania jest mniejsza elastyczność niż w przypadku 2 poprzednich podejść oraz to, że początkujący mogą mieć problem z odróżnieniem co jest właściwością samego C#, a co jest konceptem dostarczanym bezpośrednio przez silnik Unity.

Gra Osiris new Dawn stworzona przy pomocy silnika Unity

Tutoriale czy bootcamp, co wybrać?

Prawie zawsze padają pytania o to, jaka metoda jest najskuteczniejsza do nauki programowania. Nie dotyczy to tylko programowania gier, ale każdego innego rodzaju kodowania. Wszystko zależy od tego, czy chcesz uczyć się w grupie, czy samemu. Bootcamp daje Ci możliwość pracy w grupie, która jest zbliżona do tego, co spotkasz w zespołach projektowych w profesjonalnej pracy. Każdy tworzony w infoShare Academy przez nas bootcamp opracowywany jest przy współpracy z praktykami i jest odpowiedzią na zapotrzebowanie rynku. Musisz odpowiedzieć sobie na pytanie, czy wolisz samemu dochodzić co i jak działa, rozwiązując napotkane problemy? Czy może jednak chcesz, aby to trener Ci tłumaczył krok po kroku zagadnienia związane z programowaniem. Jak wspomina Szymon, dużo wartościowych materiałów o GameDevie znajdziesz na zamkniętych grupach, discordach, ale także na reddit, na którym jest wiele subredditów poświęconych tematyce GameDevu. 

Błędy podczas nauki programowania gier

W GameDevie jest bardzo dużo pasjonatów, którzy zaczynali swoją przygodę z grami właśnie od grania. Zaczynając naukę programowania, bardzo często motywuje ich marzenie o własnej grze. I takim częstym przykładem jest próba stworzenia MMORPG lub gry multiplayer. Jest to zdecydowanie zbyt duży, skomplikowany i zbyt zaawansowany projekt na początek przygody z programowaniem. Zbyt wiele problemów czeka do rozwiązania podczas takiego projektu, którego w konsekwencji nigdy nie będziesz w stanie ukończyć na zadowalającym poziomie. Na fali popularności VR spora część początkujących programistów chce zacząć tworzyć gry z wykorzystaniem rozszerzonej rzeczywistości. To również nie jest najlepszy pomysł, gdyż wymaga to specjalistycznego sprzętu oraz sporej wiedzy o grafice przestrzennej. Jak podkreśla Szymon: nie musisz mieć najnowszego sprzętu, by tworzyć gry. Ten, którym obecnie dysponujesz, na początek w zupełności wystarczy. To, co ważne, jeśli zaczynasz uczyć się tworzenia gier, to nie musisz jej na końcu wydać. Oczywiście, skończenie i wypuszczenie gry na rynek daje ogromną satysfakcję, jednak początkowo dużo ważniejsza jest sama nauka. Jeśli czujesz, że już więcej nic się nie nauczysz przy tworzeniu danej gry, to nie musisz jej kończyć. Zacznij nowy projekt, aby uczyć się kolejnych, fascynujących rzeczy.

Komu będzie najłatwiej się przebranżowić?

Silniki takie jak Unity pozwalają na wejście do branży praktycznie każdej osobie. Unity doskonale nadaje się do tego, aby sprawdzić, czy programowanie gier jest dla Ciebie. Zdecydowanie łatwiej będzie przebranżowić się osobie, która już programuje w jakimś języku lub ma kontakt np. z programowaniem przy tworzeniu gier. Testerzy oprogramowania, testerzy gier lub graficy też będą na uprzywilejowanej pozycji, ale ludzie na co dzień związani z Excelem i liczbami także będą mieli łatwiej na starcie. 


Sprawdź nasz bootcamp z trenerem na żywo:

Back to top button