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ć.
2. 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
Zaawansowany
proces technologiczny
Doskonała
jakość produktów
3. 39 mln
Zarejestrowanych
użytkowników
3.1 mln
Aktywnych użytkowników
w miesiącu
70 tys.
Rejestracji dziennie
5. 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
6. 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!
7. 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!
8. Możliwe ścieżki rozwoju
Rozgrywka
AI
Analityka danych
Serwery sieciowe
Rendering
Web development, backendy
9. Co zawsze warto znać?
Algorytmy i struktury danych
Złożoność pamięciowa i czasowa
Matematyka
(w szczególności: algebra liniowa, statystyka, kombinatoryka)
Dobre praktyki i narzędzia inżynierskie
10. O czym jeszcze warto wiedzieć
Systemy
operacyjne
Architektury
komputerów
Programowanie
Sieci współbieżne
komputerowe
Systemy
rozproszone
12. Języki programowania
Kilka różnych języków 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 ...)
13. Dobre praktyki inżynierskie
• Wzorce projektowe
• Standardy kodowania
• Kontrola wersji
• Continuous integration
• Unit testing/TDD/BDD
DOKUMENTACJA
!!!
15. Nic nie zastąpi praktyki
Przygotuj się na
„10 000 godzin”
Pisz jak
najwięcej kodu
Czytaj kod
innych!
16. 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
18. 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
19. 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
%
?
20. Kończ to, co zaczynasz
• Twoim celem jest doprowadzenie projektu do końca
i dostarczenie go graczowi
• Naucz się kontrolować zakres projektów
Gry, 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
21. Technologie się zmieniają
Technologia użyta
w projekcie wynika z tego,
gdzie jest
i jaki jest nasz gracz.
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.
22. 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, ...
23. Technologie serwerowe
• 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
25. 25
Każdy może robić gry
Jak znajdziesz już swoje powołanie, po prostu podążaj za nim
Pasja 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 :)