Blok obieralny Programowanie Gier
W ramach bloku obieralnego Programowanie przekazywana jest wiedza dotycząca tworzenia gier, z nastawieniem na gry 2D i urządzenia mobilne. Uczymy podstaw i praktyk, bez których zrobienie dobrych gier jest dużo bardziej skomplikowane. Technologie z których korzystamy są dostosowane głównie do programowania na Windows 10, Xbox One oraz na systemy mobilne iOS i Android na przykładzie frameworków DirectX Toolkit, MonoGame, SDL i Phaser, ale zdobyta wiedza będzie miała zastosowanie niezależnie od systemu operacyjnego lub wykorzystywanych narzędzi.
Na zajęciach omówione zostaną wszystkie podstawowe zagadnienia, których znajomość jest potrzebna do własnoręcznego pisania gier, takie jak: pętla gry, wyświetlanie i animowanie obiektów 2D, logika i wykrywanie kolizji, projektowanie poziomów, efekty dźwiękowe i muzyka, a także efekty graficzne z wykorzystaniem shaderów. W ramach bloku poruszane są również zagadnienia związane z dostosowaniem interfejsu użytkownika do potrzeb urządzeń mobilnych, mikrotransakcjami i przygotowaniem aplikacji do sprzedaży na platformach Apple App Store, Microsoft Store i Google Play.
W skład bloku wchodzą cztery przedmioty:
Programowanie Gier 2D
Podstawowym celem tego przedmiotu jest zaznajomienie Studentów z podstawami tworzenia wieloplatformowych gier 2D.
W ramach przedmiotu poruszone zostaną następujące zagadnienia:
- Technologie ułatwiające tworzenie gier - SDL, DirectX i MonoGame
- Wprowadzenie do programowanie gier 2D
- Pętla gry i reagowanie na akcje użytkownika
- Wyświetlanie i animowanie obiektów 2D z wykorzystaniem sprite i spritesheet
- Wykrywanie kolizji
- Sztuczna inteligencja przeciwników
- Logika i stany gry
- Dźwięki i muzyka
- Efekty graficzne i shadery
Programowanie z wykorzystaniem technologii CUDA i OpenCL
Celem przedmiotu jest zaznajomienie studentów z podstawami obliczeń równoległych na potrzeby gier 2D i 3D. Poruszone zostaną zagadnienia dotyczące wielowątkowości (na przykładzie C++) oraz obliczeń na procesorach graficznych, które są niezbędne przy pisaniu nowoczesnych gier.
Zagadnienia poruszane w ramach przedmiotu:
- Programowanie wielowątkowe z wykorzystaniem threading model C++14/17
- Programowanie asynchroniczne w C++
- Wprowadzenie do programowania równoległego na procesorach graficznych (GPU)
- Technologie CUDA i OpenCL
- Model pamięci na GPU
- Obsługa wielu urządzeń obliczeniowych jednocześnie
- Programy wielowątkowe i asynchroniczne na przykładzie sztucznej inteligencji w grach
- Obliczenia równoległe na GPU – detekcja kolizji i efekty graficzne w grach
Podstawy Gier Logicznych
Celem przedmiotu jest zapoznanie studentów z podstawami programowania gier logicznych.
Podstawowe zagadnienia omawiane na przedmiocie:
- Pojęcia: gry, macierzy i sumy wypłat, strategii gry, konfliktu.
- Gry z naturą, gry konfliktowe o zerowej sumie wypłat.
- Kryteria: Savage'a, Laplace'a, Walda i Hurwicza.
- Strategie A i B Shannona
- Algorytm minimax
- Algorytm odcinający AlfaBeta
- Wybrane heurystyki, techniki i algorytmy usprawniające odcinanie
Programowanie Gier i Aplikacji na urządzenia przenośne
Cel przedmiotu: Nabycie umiejętności tworzenia aplikacji oraz prostych gier 2D oraz 3D na platformy iOS (iPhone) oraz Uniwersal Windows Platform. W ramach tego przedmiotu omówiony zostanie temat przygotowania aplikacji mobilnej tak, by można było na niej zarabiać - czyli wrzucić do AppStore lub Marketplace.
Podstawowe zagadnienia:
- Charakterystyka aplikacji na urządzenia przenośne
- Wprowadzenie do języków Objective-C i Swift
- Wprowadzenie do programowania dla Uniwersal Windows Platform z wykorzystaniem C#
- Jak dobrze wykonać Interfejs aplikacji
- Application lifecycle – usypianie, wznawianie i zamykanie aplikacji
- Zapis stanu aplikacji do pamięci nieulotnej
- Synchronizacja ustawień i danych pomiędzy urządzeniami
- Interakcja z użytkownikiem
- Testowanie aplikacji mobilnych
- Przygotowanie aplikacji do komercjalizacji
Warunki zaliczenia
Większość przedmiotów w bloku zaliczana jest projektem. Projekty można wykonywać indywidualnie oraz grupowo, a kod przechowywany jest na prywatnych repozytoriach na Github'ie.
Kontakt
Prowadzący:
dr inż. Paweł Kapusta [e-mail]
dr hab. inż. Włodzimierz Mosorow, prof. PŁ [e-mail]
Wszystkie kody aplikacji przykładowych przechowywane są na koncie publicznym (@pawelplodzpl) lub na repozytoriach prywatnych na stronie organizacji na Github (dostęp po zalogowaniu) - IIS-Mobile.