Zawód: programista gier. Jak zacząć pracę w branży?

Post on 29-Nov-2014

228 views 1 download

description

Jak zacząć przygodę z tworzeniem dużych produkcji? Co zrobić, żeby stać się częścią branży gier? Prezentacja pokazuje możliwe ścieżki rozwoju dla programistów, pokazując przy tym, że gry mają znacznie więcej wspólnego z "poważnym" oprogramowaniem niż się może wydawać.

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Ę

mmroz@ganymede.euwww.slideshare.net/GanymedeLtd