Nazwa przedmiotu:
Programowanie gier komputerowych
Koordynator przedmiotu:
Tomasz Martyn
Status przedmiotu:
Fakultatywny dowolnego wyboru
Poziom kształcenia:
Studia II stopnia
Program:
Informatyka
Grupa przedmiotów:
Przedmioty techniczne - zaawansowane
Kod przedmiotu:
PGK
Semestr nominalny:
3 / rok ak. 2018/2019
Liczba punktów ECTS:
5
Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
udział w wykładach: 30h przygotowanie do wykładów (przejrzenie slajdów, notatek, literatury): 12h przygotowanie do zajęć laboratoryjnych: 12h udział w zajęciach laboratoryjnych: 6 x 2h = 12h praca nad projektem: 70 h (w tym spotkania projektowe 15h) Suma: 30 + 12 + 12 + 12 + 70 = 136h
Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
udział w wykładach: 30h udział w zajęciach laboratoryjnych: 6 x 2h = 12h spotkania projektowe 15h Suma: 30 + 12 + 15 = 57h co daje ok. 2 ECTS
Język prowadzenia zajęć:
polski
Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
przygotowanie do zajęć laboratoryjnych: 12h udział w zajęciach laboratoryjnych: 6 x 2h = 12h praca nad projektem: 70 h (w tym spotkania projektowe 15h) Suma: 12 + 12 + 70 = 94h, co daje ok. 4 ECTS
Formy zajęć i ich wymiar w semestrze:
  • Wykład30h
  • Ćwiczenia0h
  • Laboratorium15h
  • Projekt15h
  • Lekcje komputerowe0h
Wymagania wstępne:
1. dobra znajomość zagadnień trójwymiarowej grafiki komputerowej 2. znajomość API graficznych OpenGL lub DirectX 3. umiejętność programowania w języku obiektowym wysokiego poziomu (C++, Java lub C#)
Limit liczby studentów:
32
Cel przedmiotu:
Przedmiot poświęcony jest problematyce wytwarzania gier komputerowych przy wykorzystaniu nowoczesnych środowisk programistycznych, określanych często jako silniki gier. W skład każdego z takich środowisk wchodzi zwykle silnik właściwy, "wprawiający w ruch" zaprojektowany świat gry (w rozumieniu jego wizualizacji, zachodzących w nim interakcji fizycznych, zależności logicznych, itp.) oraz zbiór różnorakich narzędzi, które wspomagają proces tworzenia tego świata (różnego rodzaju edytory, interfejsy graficzne użytkownika, języki programowania). Na kolejnych jednostkach wykładowych omawiana jest budowa, używane algorytmy oraz narzędzia tworzące silnik gry na przykładzie nowoczesnego środowiska wytwarzania gier Unreal Engine 4 (UE4). Silnik ten jest dziś silnikiem wiodącym w przemyśle gier komputerowych i wykorzystywany jest przez wiele profesjonalnych studiów deweloperskich. Wykładowi towarzyszą seanse laboratoryjne, w trakcie których uczestnicy przedmiotu realizują ćwiczenia przy komputerach pod kierunkiem prowadzącego. Ćwiczenia te mają na celu sprawdzenie i wykorzystanie w praktyce wiedzy nabytej na wykładach. W skład przedmiotu wchodzi również projekt, w ramach którego uczestnicy mają za zadanie albo zaprojektowanie i zaimplementowanie własnego prostego silnika gry i następnie wykorzystanie go do utworzenia prostej gry, albo wytworzenie gry bardziej złożonej przy wykorzystaniu jednego silników dostępnych publicznie (w tym UE4).
Treści kształcenia:
Treść wykładu Informacje ogólne: etapy wytwarzania gier komputerowych, czym jest silnik gry, architektura sterowana danymi, popularne silniki gier, składowe silnika gry, system plików UE4. Podstawy projektowania poziomu gry: edytor UE4, geometria BSP, operacje CSG, geometria statyczna, geometria dynamiczna i animacja ramek kluczowych, materiały, oświetlenie globalne i bezpośrednie, dźwięki. Zarządzanie zasobami gry: Content Browser, pakiety zasobów, edytory zasobów, importowanie i eksportowanie zasobów. Tworzenie mechaniki i logiki gry: graficzny interfejs skryptowania Blueprint, sekwencje logiczne, zdarzenia, akcje, warunki, zmienne. Animacja ramek kluczowych: edytor Matinee, czas, ścieżki animacji, grupy animacji, cinematics, importowanie i eksportowanie danych, animacja jako akcja w sekwencji logicznej. Sztuczna inteligencja: AI akademickie vs. AI w grach komputerowych, AI w UE4, boty, sieci nawigacji, węzły i system ścieżek, poszukiwanie i trawersacja ścieżek, kontrolery. Materiały i shadery: programowalny potok graficzny, wprowadzenie do shaderów wierzchołków, fragmentów i geometrii, modele oświetlenia i materiały w grafice komputerowej, tworzenie materiałów w edytorze materiałów UE4. Tereny: problematyka wizualizacji terenów w grafice komputerowej, LOD, narzędzia modelowania terenu w UE4 (Landscape Mode), tworzenie i importowanie map wysokości, zagadnienia wizualizacji geometrii instancjonowanej z punktu widzenia nowoczesnych kart graficznych, rozmieszczanie tej geometrii na terenie przy wykorzystaniu UE4 Foliage Tool. Oświetlenie i cienie: oświetlenie bezpośrednie i globalne w grafice komputerowej, UE4 i system globalnego oświetlenia Ligthmass, rodzaje źródeł światła, mapy światła i mapy cieni, cienie statyczne i cienie dynamiczne, tereny i cienie kaskadowe. Systemy cząstek, efekty i post-processing: systemy cząstek w grafice komputerowej, UE4 i system Cascade, mgła, powierzchnie płynne, flary, kalkomanie (decals), UE4 i edytor post-processingu, efekty: bloom, depth of field, motion blur, screen ambient occlusion i inne. Wprowadzenie do języka programowania skryptowego Blueprint: języki programowania wykorzystywane w nowoczesnych silnikach gier, UE4 i blueprinty, wprowadzenie do hierarchii klas, ogólne zasady tworzenia nowych klas i ich wykorzystanie w UE4, tworzenie własnych: kamer, broni i pojazdów, postaci gracza i NPC. Wykorzystanie blueprintow do programowania własnych zasad gry. Zakres laboratorium Na kolejnych seansach laboratoryjnych uczestnicy przedmiotu ćwiczą przy komputerach, pod kierunkiem prowadzącego, wykorzystanie w praktyce narzędzi i metod przedstawianych na wykładzie. Zakres projektu W ramach projektu uczestnicy przedmiotu, w zespołach dwuosobowych, albo implementują swój własny silnik gry i demonstrują jego działanie na przykładzie stworzonej przez siebie prostej gry, albo tworzą bardziej złożoną grę przy wykorzystaniu silnika istniejącego (w szczególności UE4).
Metody oceny:
Ocena określana jest na podstawie oceny realizacji dużego projektu oraz liczby punktów uzyskanych za rozwiązania mniejszych zadań odnoszących się do poszczególnych zagadnień wytwarzania gier komputerowych i wideo, aktualnie poruszanych w ramach zajęć laboratoryjnych.
Egzamin:
nie
Literatura:
1. D.H. Eberly, 3D Game Engine Design, 2nd ed. , Morgan Kaufmann, 2006. 2. J. Gregory, Game Engine Architecture , A K Peters/CRC Press, 2009. 3. A. Thorn, UDK Game Development , Delmar Cengage Learning, 2012. 4. Th. Mooney, Unreal Development Kit Game Design , Packt Publishing, 2012. 5. R. Cordone, Unreal Development Kit Game Programming with UnrealScript, Packt Publishing, 2011. 6. http://udn.epicgames.com/Main/WebHome.html
Witryna www przedmiotu:
https://usosweb.usos.pw.edu.pl/kontroler.php?_action=katalog2/przedmioty/pokazPrzedmiot&prz_kod=103A-INIIT-MSP-PGK
Uwagi:

Efekty uczenia się

Profil ogólnoakademicki - wiedza

Charakterystyka PGK_W01
ma wiedzę na temat architektury silnika gry
Weryfikacja: zadania laboratoryjne i projekt
Powiązane charakterystyki kierunkowe: K_W04, K_W05, K_W10
Powiązane charakterystyki obszarowe: I.P7S_WG, III.P7S_WG.o
Charakterystyka PGK_W02
ma wiedzę na temat metod i problemów grafiki komputerowej czasu rzeczywistego
Weryfikacja: zadania laboratoryjne i projekt
Powiązane charakterystyki kierunkowe: K_W04, K_W08, K_W09
Powiązane charakterystyki obszarowe: I.P7S_WG, III.P7S_WG.o
Charakterystyka PGK_W03
ma wiedzę na temat funkcjonowania współczesnego sprzętu graficznego
Weryfikacja: zadania laboratoryjne i projekt
Powiązane charakterystyki kierunkowe: K_W04, K_W10
Powiązane charakterystyki obszarowe: I.P7S_WG, III.P7S_WG.o
Charakterystyka PGK_W04
ma wiedzę na temat cyklu produkcyjnego wytwarzania gry komputerowej/wideo.
Weryfikacja: projekt
Powiązane charakterystyki kierunkowe: K_W04, K_W05, K_W08, K_W09
Powiązane charakterystyki obszarowe: I.P7S_WG, III.P7S_WG.o

Profil ogólnoakademicki - umiejętności

Charakterystyka PGK_U01
potrafi zrealizować każdy z głównych etapów potoku wytwarzania gry
Weryfikacja: zadania laboratoryjne
Powiązane charakterystyki kierunkowe: K_U02, K_U04, K_U07, K_U13
Powiązane charakterystyki obszarowe: I.P7S_UK, I.P7S_UU, I.P7S_UW, III.P7S_UW.2.o, III.P7S_UW.3.o
Charakterystyka PGK_U02
potrafi wykorzystywać współczesne silniki gier do wytworzenia pełnowartościowej gry komputerowej/wideo
Weryfikacja: projekt
Powiązane charakterystyki kierunkowe: K_U01, K_U04, K_U07, K_U13, K_U14
Powiązane charakterystyki obszarowe: I.P7S_UK, I.P7S_UU, I.P7S_UW, III.P7S_UW.2.o, III.P7S_UW.3.o, I.P7S_UO, III.P7S_UW.4.o

Profil ogólnoakademicki - kompetencje społeczne

Charakterystyka PGK_K01
potrafi realizować projekty programistyczne w zespole
Weryfikacja: projekt
Powiązane charakterystyki kierunkowe: K_K01
Powiązane charakterystyki obszarowe: I.P7S_KO