Zawód: programista gier. Jak zacząć pracę w branży?
-
Upload
ganymede-ltd -
Category
Technology
-
view
228 -
download
1
description
Transcript of Zawód: programista gier. Jak zacząć pracę w branży?
Maciej MrózCTO
Zawód: programista gier Jak zacząć pracę w branży?
Największy developer gier społecznościowych
w Polsce
Ponad 60 pracowników
Od 10 lat na rynku globalnym
Ponad 30 wydanych gier na całym świecie
Zaawansowanyproces technologiczny
Doskonała jakość produktów
39 mlnZarejestrowanych
użytkowników
3.1 mlnAktywnych użytkowników
w miesiącu
70 tys.Rejestracji dziennie
Gry muszą zarabiać
Gry muszą zarabiać
• Branża gier to jest biznes• „Indie" to tylko metoda marketingu• Czas spędzony "po godzinach" też kosztuje• Zysk z gry nie zawsze musi być finansowy– nauka– tworzenie technologii– budowa portfolio
Praca w branży
• Czasy pisania gier samemu się skończyły
• Duże, długotrwałe, złożone projekty, tworzone przez zespoły ludzi
• Wymaga to odpowiedniego podejścia i narzędzi
• Programowanie to tylko część układanki!
Specjalizacja jest konieczna
Tym bardziej im większy jest projekt
Różne problemy, podejścia do ich rozwiązywania, technologie
Więcej możliwości rozwoju :)
Nauka nie ma końca!
Rozgrywka
AI
Analityka danych
Serwery sieciowe
Rendering
Web development, backendy
Możliwe ścieżki rozwoju
Algorytmy i struktury danychZłożoność pamięciowa i czasowa
Matematyka(w szczególności: algebra liniowa, statystyka, kombinatoryka)
Dobre praktyki i narzędzia inżynierskie
Co zawsze warto znać?
Systemy operacyjne
Architekturykomputerów
Programowanie współbieżneSieci
komputerowe
Systemy rozproszone
O czym jeszcze warto wiedzieć
Jak nauczyć się programować
Nie ma drogi na skróty!!!
Języki programowania
"A language that doesn't affect the way you think about programming, is not worth knowing„
Absolutne minimum to po jednym z każdej grupy:• Niskopoziomowy (ręczne zarządzanie pamięcią,
kompilowany do kodu natywnego) - C, C++, asembler• Wysokopoziomowy (garbage collector, refleksja i emisja
kodu, dynamiczne typowanie lub duck typing) - Python, Ruby, Java, C#
• Funkcyjny (Haskell, Scala, Clojure, Erlang ...)
Kilka różnych języków programowania
Dobre praktyki inżynierskie
• Wzorce projektowe• Standardy kodowania• Kontrola wersji• Continuous integration• Unit testing/TDD/BDD
DOKUMENTACJA!!!
Jeśli programowanie nie jest Twoją pasją, zajmij się czymś innym
Nic nie zastąpi praktyki
Przygotuj się na „10 000 godzin”
Pisz jak najwięcej kodu
Czytaj kod innych!
Wprawki programistyczne
• Różne algorytmy i struktury danych– Szukaj tego co jest dla Ciebie trudne, wyjdź poza
strefę komfortu! – Project Euler (https://projecteuler.net/), TopCoder
(http://www.topcoder.com/), wiele innych!– SICP (Structure and Interpretation of Computer
Programs) - przy okazji można poznać Scheme :)• Game jamy - online i w realu
Tworzenie oprogramowania to aktywność zespołowa
Wymiana doświadczeń jest bezcenna
Komunikacja
Załóż konto na GitHub albo podobnym
serwisie
Znajdź jakiś projekt open
source w którym chcesz działać
Albo zrób własny
Komunikacja
Nie pisz kodu do szuflady
Próbuj różnych rzeczy
• Różne rodzaje gier– Arcade 2D, Logiczne,
Przygodowe, Ekonomiczne, 3D
• Różne platformy– mobilne, desktop, web, VR -
całkiem inne problemy
• Zadania "wokół gier"– System do budowy zasobów
graficznych– Własny kompilator języka
skryptowego
2d
+3d
?
%
Kończ to, co zaczynasz
• Twoim celem jest doprowadzenie projektu do końcai dostarczenie go graczowi
• Naucz się kontrolować zakres projektówGry, jak każde oprogramowanie, są podatne na "feature creep"
• Programowanie to w dużym stopniu rutyna• Nie można być ekspertem od wszystkiego, ale warto mieć
przynajmniej pojęcie jak wszystko działa
Technologia użyta w projekcie wynika z tego,
gdzie jest i jaki jest nasz gracz.
Technologie się zmieniają
Technologie rodzą sięi umierają każdego dnia.
Dyktuje to sprzęt, oprogramowanie,
zmiany rynku
Nie należy wiązać swojego życia z jednym narzędziem czy też ich ekosystemem.
Wszystko umiera.
Języki programowania mają długi cykl życia,
ale to też tylko narzędzie.
Technologie klienckie
• Gra "AAA" na konsole/PC: z reguły C++ (ale narzędzia mogą być pisane np. w C#, Javie, Pythonie ...)
• Gra webowa: HTML5 albo Flash• Gra mobilna: Java, Objective-C, Unity, ...
• Dzisiaj prawie każda gra zawiera mniejszy lub większy element online
• Proste usługi HTTP to Python, Ruby, node.js, Java• Serwery TCP/UDP, usługi backendowe to Java, C++, Go, Scala,
node.js ...• Analiza danych: SQL, Hive/Pig, Python, R ...• Technologie towarzyszące: Ansible, Nagios, Docker, Amazon
Web Services
Technologie serwerowe
Każdy może robić gry!
24
25
Każdy może robić gry
Jak znajdziesz już swoje powołanie, po prostu podążaj za nimPasja jest w którymś momencie konieczna do dalszej nauki
Niezależnie od tego, co zdecydujesz się robić, możesz pracować w branży gier
Może kiedyś u nas :)
Skoncentruj się na tym żeby być dobrym programistą/programistką!
Nieważne, do której firmy trafisz (czy założysz własną) – będziesz się uczyć przez całe życie :)
DZIĘKUJĘZA UWAGĘ
[email protected]/GanymedeLtd