Zastanawiasz się co musisz wiedzieć, aby zwiększyć swoje szanse na otrzymanie pracy jako programista gier, szczególnie przy obecnym kryzysie na rynku IT 💥? Oto 7 najważniejszych umiejętności, które zidentyfikowałem na podstawie przeanalizowanych wielu ofert pracy 7️⃣. Jeżeli interesuje Cię temat, serdecznie zapraszam i dowiedz się gdzie musisz się podszkolić 🙂.
PRZEDSTAWIAM 7 NAJWAŻNIEJSZYCH UMIEJĘTNOŚCI PROGRAMISTY GIER!
Przedstawione wnioski pochodzą z analizy wielu ofert pracy m.in. takich serwisów, jak znany Skillshot ℹ️. Obserwując ich częste występowanie uznaję je za tak istotne, że bez nich Twoje szanse na otrzymanie zatrudnienia są znikome 🚫. Postarałem się pisać konkretnie i na temat, dodając od siebie komentarz pod każdym z punktów 😉.
CO TRZEBA UMIEĆ, ABY ZOSTAĆ PROGRAMISTĄ GIER?
Aby w dzisiejszych czasach zostać programistą gier, należy spełnić 7 poniższych warunków 👇:
- bardzo dobra znajomość języka angielskiego,
- biegła znajomość języka programowania wspieranego przez interesujące Cię narzędzie,
- umiejętność tworzenia tzw. "shaderów" (programów modyfikujących wygląd pojedynczych pikseli do tworzenia efektów specjalnych),
- znajomość wzorców projektowych (gotowych "przepisów" na rozwiązanego konkretnego problemu projektowego),
- umiejętność obsługi dowolnego systemu kontroli wersji np. Git,
- wiedza o portowaniu i/lub optymalizacji pod różne platformy inne, niż PC (głównie smartfony i konsole),
- znajomość metodyk zwinnych (jak postępować podczas pracy w zespole).
Zaczynam poszerzać każdy z podanych punktów 🚀!
OPANUJ JĘZYK ANGIELSKI NA ZNAKOMITYM POZIOMIE
Chyba nie ma na twarzy zdziwienia 🙂. Język angielski jest absolutnym fundamentem jaki musisz posiadać w sekcji umiejętności i to się tyczy nie tylko stanowiska programisty gier, lecz ogólnie calutkiej branży IT 🔥.
JAKI POZIOM ZNAJOMOŚCI JĘZYKA ANGIELSKIEGO JEST MINIMALNY NA PROGRAMISTĘ?
Moim zdaniem, na bycie programistą najlepiej opanować język angielski na poziomie co najmniej B2, czyli "Upper-Intermediate" 🎯.
W ofertach pracy często waha się pomiędzy B1, a C1 ℹ️. Nie spotkałem się jeszcze z obowiązkową znajomością na poziomie "near-native speaker" (C2) 😅. Według moich analiz, największy odsetek ofert celuje w poziom B2 i stąd według mnie taki najlepiej mieć opanowany, a jeszcze lepiej z potwierdzonym certyfikatem np. Cambridge (przy czym nie gwarantuję, że to ma jakikolwiek wpływ na ocenę) ✅.
Są oferty, w których oczekuje się jedynie poziomu B1, aczkolwiek są trochę rzadziej spotykane, stąd najlepiej sobie wyrobić B2 i tym samym zwiększyć siłę argumentu 😄. A im wyżej, tym lepiej dla Ciebie 👍. Często możesz natrafić na sytuację, w której oczekiwany stopień biegłości jest o jedno "oczko" wyższe w sekcji "Mile widziane", niż w wymaganiach obowiązkowych np. oczekują od Ciebie B1 jako minimum, a B2+ jest już "tylko" mile widziane. Można patrzeć w ten sposób na wszystkie oferty, co daje podstawę twierdzić, że to może tylko zwiększyć Twoje szanse 🙂.
Zdarza się, że nie można wywnioskować jednoznacznie jakiego poziomu oczekują pracodawcy i jest napisane formalnie w stylu: biegłość w mowie i piśmie, znajomość na poziomie komunikatywnym itp. Wtedy sugeruję to interpretować jako B1/B2.
Chyba nic już nie trzeba dodawać 🙂. Ucz się angielskiego, zrób sobie certyfikat potwierdzający Twoje umiejętności i jeżeli nie masz wygórowanych ambicji, to poziom B2 jest minimalnym progiem w mojej ocenie, który trzeba osiągnąć 🎯.
NAUCZ SIĘ POSŁUGIWANIA SIĘ WYMAGANYM JĘZYKIEM PROGRAMOWANIA
To też rozumie się samo przez się 😄. Jeżeli startujesz na rynek pracy, spodziewaj się korzystania wyłącznie z zaawansowanych i rozbudowanych narzędzi, w których pisanie kodu w jakimś języku programowania jest nieuniknione 💪.
JAKIE JĘZYKI PROGRAMOWANIA WARTO ZNAĆ JAKO PROGRAMISTA GIER?
Zależy od stanowiska jakie Cię interesuje 🧠. Jeżeli chcesz startować na programistę "Unity", to powinieneś/powinnaś skierować swoje oczy na język C# 👀. Jeżeli Twoim punktem zainteresowania jest "Unreal Engine", to wtedy C++ powinien być pierwszym językiem, jaki musi zostać przez Ciebie doskonale opanowany 🚀.
Jeżeli jednak mam być szczery, to najlepiej umieć i jeden, i drugi 😏. Stanowisko ma tu tak naprawdę drugorzędne znaczenie i powinno wpływać tylko na kolejność języków do opanowania, a nie w ten sposób, że jednego się nauczymy, a drugiego nie ❌. Dużo lepiej być otwartym na kilka ścieżek, a nie upierać się przy jednej ⚠️!
Poza C# i C++, doradziłbym też opanować Lua i JavaScript (albo TypeScript), bo z tych języków korzystają inne narzędzia także występujące w sektorze komercyjnym, tylko w o wiele mniejszej częstotliwości. Takie narzędzia, jak "Defold", "Phaser" i "PixiJS" również są widziane w ofertach pracy bądź zleceniach 😲. Dlatego uważam, że warto również być otwartym i na te 2 języki 👍.
Czasami pojawiają się oferty dotyczące programowania w silniku "Godot" (w końcu doczekał się po latach) i wtedy pomocna okaże się znajomość języka GDScript (składnią zbliżony do Pythona). Natomiast to już zostawiam Tobie do rozstrzygnięcia ✔️.
Także podsumowując, na programistę gier radziłbym znać następujące języki programowania (bez względu na wszystko) 👇:
- C# ("Unity"),
- C++ ("Unreal Engine"),
- Lua ("Defold"),
- JavaScript/TypeScript ("Phaser", "PixiJS").
Wtedy efektywnie zmaksymalizujesz swoje szanse i jak nie uda się w tę stronę, to możesz próbować w inną 😁!
ZAINTERESUJ SIĘ TWORZENIEM "SHADERÓW"
"Shader" to program wpływający na wygląd pojedynczych pikseli i wierzchołków nadając obrazowi zupełnie nowy wygląd ℹ️. Jest to stosowane do efektów specjalnych nakładanych na obraz gry w czasie rzeczywistym 🎥. Takie efekty, jak odbicia od tafli wody czy czarna obwódka wokół postaci znana z kreskówek i komiksów (efekt nazywany "toon shading" lub "cel shading"), są możliwe do uzyskania tylko przez "shader" ✅.
Podejście do znajomości tworzenia "shaderów" jest inaczej interpretowane zależnie od stanowiska i narzędzia, bo każde narzędzie wymagać będzie innego podejścia 😐. W "Unity" możesz pisać kod w języku HLSL (High-Level Shading Language) albo skorzystać z edytora do "podpinania" węzłów (Shader Graph), zatem masz 2 sposoby (i pracodawcy mogą wymagać któregoś z nich 🙃) 2️⃣. W przypadku "Unreal Engine", do dyspozycji masz jedynie kodowanie w HLSL. Wszystko zależy od interesującego Cię narzędzia 🧠.
Polecam do nauki stronkę "Shadertoy" 🌟. Jest to miejsce do trenowania pisania własnych "shaderów" w języku GLSL (OpenGL Shading Language), który ponadto posiada bardzo wiele przykładów gotowych programów, co jeszcze bardziej ułatwia zaznajamianie się z programowaniem "shaderów" 🤩! Drugą pozycją wartą uwagi jest "The Book of Shaders", w której możesz poczytać bardzo wiele ciekawych informacji o "shaderach" od strony teoretycznej 🚀!
Niezależnie od tego, jakiej metody będziesz musiał(a) się nauczyć, spodziewaj się bardzo często takiego wymagania, które patrząc na częstotliwość występowania, uznaję za konieczność 💥!
POZNAJ NAJWAŻNIEJSZE WZORCE PROJEKTOWE
Absolutna konieczność 🫵! Ten wymóg jest jednym z najczęściej widzianych w ofertach pracy na programistę gier 😳!
Wzorzec projektowy (ang. design pattern) to prostymi słowy szablon czy przepis na taki zapis kodu źródłowego, który rozwiązuje jakiś konkretny problem znany ludzkości od dawna 📜. Jeżeli zatem istnieją całe gotowe patenty na pewne problemy, które dotykają wiele projektów od dekad, nie ma co się dziwić, że ich znajomość jest na wagę złota (zwłaszcza na rynku pracy) 💵! Stąd też to według mnie jedna z 7 najważniejszych umiejętności programisty gier ⭐!
Jeżeli chodzi o pozyskanie wiedzy w tym zakresie, na piedestale jest książka "Game Programming Patterns", która doczekała się polskiej wersji ("Programowanie gier. Wzorce") ❤️. Bardzo dobre źródło, jeśli chodzi o poznanie wzorców projektowych pod kątem tworzenia gier 👍!
NAUCZ SIĘ BIEGŁEGO KORZYSTANIA Z SYSTEMU KONTROLI WERSJI
Tego też spodziewaj się bardzo często w ofertach pracy 😏.
System kontroli wersji ma za zadanie monitorowanie zmian dokonanych w projekcie na całej przestrzeni czasowej pracowania nad nim 📓. Określa się to wtedy pojęciem "repozytorium" ℹ️. Stosowanie takiego systemu daje nam 3 duże korzyści 👇:
- rejestruje całą historię zmian wszystkich plików projektu, co pozwala na "powrót" do poprzedniego stanu u każdego z nich (przydatne zwłaszcza, gdy jakaś nowa funkcjonalność się posypie i okaże się tak duża, że nie będzie możliwe samodzielne odtworzenie wersji sprzed modyfikacji 👍),
- umożliwia tworzenie tzw. "gałęzi" (ang. branches) od gałęzi głównej, która przechowuje cały projekt w bieżącym stanie, co jest znaną praktyką dodawania nowych funkcjonalności i "wgrywania" ich jako w pełni przetestowanych do gałęzi głównej, bez ryzyka utraty ostatniej działającej wersji,
- pozwala przechowywać całe repozytorium w chmurze (online), dzięki czemu nad jednym projektem może pracować wiele osób, co jest nieuniknione w dzisiejszej branży gier, a także zapobiega utracie całego projektu spowodowanego awarią sprzętu, który posiadał ten projekt lokalnie.
Najczęściej w ofertach pojawia się Git, popularny darmowy system kontroli wersji i jeżeli dopiero zaczynasz przygodę z posługiwaniem się systemem kontroli wersji, najlepiej zacząć od niego 😄.
Kiedy już opanujesz podstawy, koniecznie wstaw publicznie dostępne repozytorium w postaci własnych projektów gier 💥! To jeden z najmocniejszych "dowodów" Twoich kompetencji - w pełni grywalny projekt 🤩! To najlepsza droga do zaprezentowania swoich umiejętności jako "żywy" produkt portfolio 😎! Oczywiście pod warunkiem, że projekt jest wyśmienicie zrobiony i w pełni ukończony ✅. Umieszczając link do repozytorium w swoim CV, potwierdzasz "na dzień dobry" posługiwanie się systemem kontroli wersji 👍. A skoro już wiesz, że jest między innymi stosowany po to, aby nad jednym projektem mogło pracować wiele osób, to chyba sam(a) rozumiesz 😁.
Moim zdaniem, najlepiej stworzyć po 2 repozytoria na dane narzędzie. Dobierz projekty tak, aby jak najbardziej różniły się od siebie (kontrast) pod względem grafiki czy gatunku 🔥. Mając 2 skończone projekty w danym narzędziu, pokazujesz, że jesteś w stanie pracować przy różnych scenariuszach i zmniejszysz ryzyko sytuacji, w której ktoś pazerny stwierdzi, że jeden projekt to za mało i że to nie wystarczy (a różni się trafiają) 😏.
NAUCZ SIĘ PORTOWANIA/OPTYMALIZOWANIA POD RÓŻNE PLATFORMY
Wpierw trzeba wyjaśnić sobie oba pojęcia: "portowanie" i "optymalizowanie" 🧠.
CZYM JEST PORTOWANIE GRY?
Chodzi o udane przeniesienie gry z jednej platformy do drugiej np. z PC na Androida 💡. Wbrew pozorom, to widnieje bardzo często w ofertach, jako że jest to pożądana umiejętność u pracowników 🎯. Jest wiele firm, które portuje gry albo na zlecenie, albo dla siebie jako swój własny produkt, aby podnieść znaczenie tytułu na rynku ✊. Nie każdy zna ten temat od podszewki, więc jest to mocno pożądany w ofertach czynnik znajdujący się albo w wymaganiach, albo jako "tylko mile widziane".
Przy kilku platformach trzeba wykazać się naprawdę anielską cierpliwością i głęboką wiedzą techniczną, aby prawidłowo wykonać port gry na inną platformę 😳. Pomyśl choćby o porównaniu sterowania na komputerze i smartfonie 😐. Tam masz klawiaturę, a tu...ekran dotykowy 😅. Na ekranie nie masz klawiszy, czyli musisz stworzyć cały odrębny system obsługi sterowania postacią z użyciem "wirtualnego dżojstika" 😱!
To nie wszystko! Aby móc powiedzieć o porcie gry, że jest "udany", musi działać bez zarzutu mimo ograniczeń narzucanych przez platformę tzn. szybko, płynnie i wygodnie ✅. I ten dylemat dotyczy drugiego hasła: "optymalizowanie" 💡.
CZYM JEST OPTYMALIZOWANIE GRY POD INNĄ PLATFORMĘ?
Optymalizowanie gry pod inną platformę dotyczy parametryzowania ustawień grafiki w taki sposób, aby zachować płynność przez cały czas działania gry i stracić przy tym jak najmniej detali ℹ️.
Dla przykładu, Nintendo Switch nie utrzyma równie stabilnej liczby klatek na sekundę przy wymagających scenach, jak komputer stacjonarny 🔥. Wtedy do akcji wkracza programista, który "ogarnia" architekturę Nintendo Switch 😄 i wie jak temu zaradzić tak, aby gra straciła przy tym jak najmniej 👍. Wtedy praca programisty skupia się na operowaniu wieloma "pokrętłami" na scenie i testowaniu na bieżąco aktualnego stanu 👀.
W jednych ofertach będzie widniało słowo "portowanie", w innych "optymalizowanie". W niektórych pojawi się jedno i drugie. Dlatego najlepiej nabrać nieco doświadczenia i w jednym, i w drugim 😉. Zakładając, że nie miałeś(-aś) szans pracowania przy jakimś projekcie komercyjnym, pozostaje Ci jedynie spróbować swoich sił na własnym projekcie i wykonać choć jeden port na dowolną platformę 💡. To będzie duży wysiłek, natomiast przy rozmowach będziesz mieć dodatkowy argument i działający "dowód", że już wiesz na czym polega portowanie 😊!
KTÓRE PLATFORMY SĄ NAJCZĘŚCIEJ WIDZIANE W OFERTACH PRACY DO PORTOWANIA GIER?
Najczęstsze platformy jakie widziałem w ofertach na programistę gier, w których padał temat znajomości portowania, to 👇:
- Xbox,
- Android/iOS,
- PlayStation 4/5,
- Nintendo Switch.
Najlepiej mieć w swoim portfolio wykonanie porządnego portu na którąkolwiek z tych platform ✅. Najłatwiej na Androida, ponieważ wydawanie aplikacji na iOS wiąże się z ogromnymi kosztami, a konsole wymagają osobnych licencji od producentów na ich narzędzia deweloperskie 😬.
POZNAJ METODYKI ZWINNE (AGILE)
Ostatnia z 7 najważniejszych umiejętności programisty gier 🙂! Dotyczy ona postępowania podczas pracy w zespole 💥. Poznaj termin "metodyki zwinne" 😲!
CZYM SĄ METODYKI ZWINNE?
Metodyki zwinne (Agile) dotyczą bardzo ważnej dziedziny określonej jako "zarządzanie projektami" 😳. Chodzi o stosowanie się do pewnych opracowanych reguł w celu zapewnienia szybkiej adaptacji do zmieniających się postanowień w związku z wytwarzanym produktem 📈. Charakteryzują się szybkim dostarczaniem nowych wersji programu (iterowaniem) co krótki odstęp czasowy np. tygodniowy lub miesięczny ℹ️.
Jest to dosyć uproszczone wyjaśnienie po co one w ogóle są, stąd proponuję zacząć przyswajać temat zaczynając od tzw. "SCRUM" 💡. SCRUM to ramy postępowania, które składają się tylko z ogólnych zasad ("ram") postępowania podczas pracy nad projektem i można je swobodnie dostosowywać zarówno do zespołu, jak i do samego projektu 👍. Jeżeli interesuje Cię temat w szczegółach, "SCRUM Guides" jest oficjalną stroną poświęconą popularnym ramom postępowania 🔍! Tam możesz pobrać "SCRUM Guide" jako PDF z dokładnymi informacjami jak stosować się do tych ram ❤️
Nie myl metodyk zwinnych ze SCRUMem - SCRUM jest częścią metodyk zwinnych, a sam Agile (powszechnie stosowana nazwa metodyk zwinnych ℹ️) jest o wiele szerszym podzbiorem, w skład którego wchodzą inne metodyki np. "extreme programming" ⚠️.
Oferty pracy różnie to definiują. Mogą oczekiwać znajomości SCRUMa, znajomości metodyk Agile "ogólnie" lub jakichś innych ściśle określonych np. Kanban. Natomiast rozpoczęcie od SCRUMa będzie dobrym punktem startowym do zrozumienia czym w ogóle są metodyki zwinne i dlaczego są istotne dla efektywnego zarządzania zespołem ⏩. Potem możesz zainteresować się poznaniem metodyki Kanban, w której ideą jest przedstawienie całego projektu w formie tabeli i podział na kilka różnych kolumn 🔥.
Ta umiejętność wymaga dużo praktyki i najlepiej to ćwiczyć jak najprędzej, gdyż to jest wiedza na temat tego, jak należy się zachowywać podczas pracy z innymi osobami w zespole ⚠️. Możesz spróbować skorzystać z tych technik podczas tworzenia gry ze swoimi znajomymi 😉!
![]() |
Oto 7 najważniejszych umiejętności programisty gier, jakie musi posiadać w branży!
Oto 7 najważniejszych umiejętności programisty gier, jakie uważam za fundamentalne, aby mieć jakiekolwiek realne szanse na zdobycie pracy na tym stanowisku 🫵. Bądź jednak świadomy(-a), że wciąż mogą nie zapewniać Tobie sukcesu z powodu kryzysu jaki obecnie występuje w branży IT, nie tylko w branży "game dev" 😥. Ja mimo tego życzę powodzenia i wiary w siebie, że któregoś dnia ktoś doceni Twoje wysiłki i uda Ci się zdobyć zatrudnienie 🏆!
