Programowanie Gier

ProwadzącyKornel Kisielewicz + Michalis Kamburelis 

Wymagania: Podstawy grafiki komputerowej, dobra znajomość jakiegoś języka programowania (w grupie Kornela: obowiązującym językiem jest C++).

Forma: Podstawą zaliczenia będzie pracownia i projekt końcowy. Zrobimy też (stosunkowo łatwy) egzamin teoretyczny na koniec (wbrew temu co mówi "[opis przedmiotu]" w zapisach, to było z czasów kiedy chcieliśmy potraktować przedmiot jako kurs). Oficjalnie jest to przedmiot informatyczny (podstawowy) (7 punktów starych, 6 punktów ECTS).

Czas: 2 godziny wykładu i 2 godziny pracowni w tygodniu (przy czym z pewnością będzie wymaganedużo pracy w domu).

Program

  1. Wprowadzenie (KKI) ( slajdy )
  2. Narzędzia i biblioteki (KKI)
    • pokrótce narzędzia developerskie i czemu należy ich używać (systemy śledzenia wersji, śledzenia błędów, dokumentacji wewnątrz kodu, automatyczne zarządzanie kompilacją)
    • kilka słów o testach jednostkowych, profiliowaniu i logowaniu
    • higiena kodu, konwencje kodowania i dobre praktyki programistyczne
    • biblioteki przydatne do programowania gier ( SDLOpenAL, i inne )

    • biblioteki C++ ogólnego użytku ( STL, std::tr1, boost )
    • z oczywistych wzgledów wykład w ostatniej częsci będzie mocno ukierunkowany na C++
  3. OpenGL, powtórka i rozszerzenie (MKA)

    • stany, pipeline
    • co to są shadery
    • co i dlaczego jest deprecated w OpenGL 3.0
    • optymalizacja dostarczania wierzchołków do OpenGLa (display lists, vertex arrays, vertex buffers)
    • bufory OpenGLa:
      • odbicia na płaszczyźnie (przykład użycia stencil buffora)
      • (jeśli będzie czas:) depth of field, motion blur (klasyczne przykłady użycia accumulation buffora)
  4. Kolizje i portale (MKA)
    • drzewa ósemkowe, kd-, i BSP
    • modyfikacje aby uczynić je bardziej dynamicznymi: loose octrees, hierarchie drzew, dynamic irregular octrees
    • podstawy badania kolizji (przykłady, ogólne guidelines pisania funkcji sprawdzających kolizje, zastosowania (nie tylko normalne, ale i frustum culling))
    • portale
    • (w zasadzie przynależy do wykładu o AI, ale podobne do portali i wypada o nich wspomnieć): ruch potworków w świecie 3D: waypointy/sektory
  5. Architektura (KKI) slajdy )
    • model, widok, kontroler
    • architektura wysokopoziomowa – komponenty i relacje miedzy nimi
    • architektura komunikacji w systemie (bezpośrednia, event-driven, ... )
    • modele najprostsze – single-thread single player
    • modele wielowątkowe
    • architektura client-server
    • architektura do gier massive-multiplayer
    • architektura komponentów
  6. Architektura - c.d. (KKI)  slajdy )
  7. Teksturowanie (MKA)
    • multitexturowanie
    • bump mapping, na początek proste multitexturing z operacją DOT
    • sky box
    • odbicia przez sphere i cube environment maps
    • tekstury 3D (volume)
    • kompresja tekstur (S3TC)

    • króciutkie omówienie formatu DDS, Direct Draw Surface, popularnego do przechowywania tekstur z kompresją, mipmapami, cube maps, 3D

  8. Cienie (MKA)
    • plane-projected shadows
    • shadow volumes
    • shadow mapping
    • precomputed radiance transfer
  9. Shadery - podstawy (MKA)
    • shadery asemblerowe ARB (krótko, bo to przeszłość --- ale pozwoli pojąć ograniczenia architektury)
    • shadery GLSL (OpenGL Shading Language) (to będzie zasadnicza treść wykładu)
    • przykładowe shadery (od czegoś prostego (toon shading, phong shading, proceduralne tekstury) do rzeczy naprawdę fajnych (parallax mapping, może coś o deferred shading, może coś o dynamic ao,...))
    • ogólne uwagi o obecnych architekturach shaderów (v3, v4)
    • shadery Cg (krótko, bo używanie GLSL jest łatwiejsze i wystarczające jeżeli nie interesuje nas DirectX)
  10. Fizyka, animacja (MKA/KKI)
    • Fizyka:
      • ODE
      • Bullet? Newton? Inne?
    • Animacja:
      • kości
      • interpolacja transformacji
      • interpolacja zbiorów wierzchołków (podział na klatki)
  11. OpenAL (MKA)
    • streaming
    • konstrukcja menedżera dźwięków na priorytetach
    • EAX
  12. Języki skryptowe (KKI)  slajdy )
    • powody stosowania jezyków skryptowych
    • przeglad sensownych jezyków na potrzeby gier
    • problemy z jakimi sie boryka przy jezykach skryptowych
    • jak zrobić modowalna gre
    • metody łączenia skryptów z aplikacjami
    • dokładniejsze przyjrzenie sie jezykowi Lua i jego możliwościami integracji z kodem
  13. Sztuczna inteligencja (KKI)  slajdy )
    • dlaczego symulowana głupota jest lepsza niż sztuczna inteligencja
    • przegląd standardowych technik w sztucznej inteligencji na potrzeby gier
    • metody oceny, planowania i podejmowania działań w ujęciu gier
    • kilka bardziej złożonych algorytmów z tego zakresu

Literatura

Wymienione poniżej pozycje mogą się przydać do nauczenia, czy też zgłębienia tematu.

Podstawowa

Zaawansowana

  • "Perełki programowania gier", Tomy 1-6 pod redakcją Mark DeLoura, Helion 2002-2004
  • "3D Game Engine Design, 2nd edition", David H. Eberly, "Morgan Kaufmann 2007"

Pracownie

Wyniki Egzaminu

PGK - Egzamin


Podstrony (1): Pracownia
Ċ
Kornel Kisielewicz,
8 mar 2009, 12:27
Ċ
Kornel Kisielewicz,
26 cze 2009, 10:46
Ċ
Kornel Kisielewicz,
26 cze 2009, 10:47
Ċ
Kornel Kisielewicz,
26 cze 2009, 10:47
Ċ
Kornel Kisielewicz,
26 cze 2009, 10:47
Ċ
Kornel Kisielewicz,
26 cze 2009, 10:48
Comments