IIS-Mobile - Programowanie Gier

Follow me on GitHub

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:

  1. Technologie ułatwiające tworzenie gier - SDL, DirectX i MonoGame
  2. Wprowadzenie do programowanie gier 2D
  3. Pętla gry i reagowanie na akcje użytkownika
  4. Wyświetlanie i animowanie obiektów 2D z wykorzystaniem sprite i spritesheet
  5. Wykrywanie kolizji
  6. Sztuczna inteligencja przeciwników
  7. Logika i stany gry
  8. Dźwięki i muzyka
  9. 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:

  1. Programowanie wielowątkowe z wykorzystaniem threading model C++14/17
  2. Programowanie asynchroniczne w C++
  3. Wprowadzenie do programowania równoległego na procesorach graficznych (GPU)
  4. Technologie CUDA i OpenCL
  5. Model pamięci na GPU
  6. Obsługa wielu urządzeń obliczeniowych jednocześnie
  7. Programy wielowątkowe i asynchroniczne na przykładzie sztucznej inteligencji w grach
  8. 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:

  1. Pojęcia: gry, macierzy i sumy wypłat, strategii gry, konfliktu.
  2. Gry z naturą, gry konfliktowe o zerowej sumie wypłat.
  3. Kryteria: Savage'a, Laplace'a, Walda i Hurwicza.
  4. Strategie A i B Shannona
  5. Algorytm minimax
  6. Algorytm odcinający AlfaBeta
  7. 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:

  1. Charakterystyka aplikacji na urządzenia przenośne
  2. Wprowadzenie do języków Objective-C i Swift
  3. Wprowadzenie do programowania dla Uniwersal Windows Platform z wykorzystaniem C#
  4. Jak dobrze wykonać Interfejs aplikacji
  5. Application lifecycle – usypianie, wznawianie i zamykanie aplikacji
  6. Zapis stanu aplikacji do pamięci nieulotnej
  7. Synchronizacja ustawień i danych pomiędzy urządzeniami
  8. Interakcja z użytkownikiem
  9. Testowanie aplikacji mobilnych
  10. 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.