Spis projektów
id | Numer projektu | Nazwa | Zajęcia |
1 | 1 | Mapa hexagonalna | 1: 2016-10-06 |
2 | 2 | Własny format pliku graficznego | 2: 2016-10-13 |
3 | 3 | Prosta "gra" (istotne: spritey, podwójne buforowanie) | 4: 2016-10-27 |
4 | 4 | AI: wyszukiwanie ścieżki | 5: 2016-11-03 |
5 | 5 | Kolizje | 9: 2016-12-01 |
6 | 6 | Transformacje 2D | 10: 2016-12-08 |
7 | 7 | Widok 3D | 11: 2016-12-15 |
8 | 8 | AI: automat sterujący zachowaniem postaci | 13: 2017-01-05 |
9 | | Gra w HTML-u | 7: 2016-11-17 |
10 | | Unity 3D | cały semestr |
11 | | Unity 2D | cały semestr |
- Projekt id=10 jest projektem obowiązkowym, wystarczającym do uzyskania oceny 3.0.
- Z podanej listy można pominąć 2 dowolnie wybrane projekty (z wyjątkiem projektu id=10).
- Skala ocen (propozycja)
- 3.0: id=10
- 3.5: id=10 + 2 dowolnie wybrane projekty
- 4.0: id=10 + 4 dowolnie wybrane projekty
- 4.5: id=10 + 6 dowolnie wybranych projektów
- 5.0: id=10 + 8 dowolnie wybranych projektów
Opis zajęć
- Tydzień 1:
- 2016-10-06 Tile based games
- Materiały uzupełniające
- Zadania (jedno do wyboru)
- Zadanie 1 Mapa hexagonalna spełniająca następujące założnenia
- Wymiary świata gry: 30 x 30.
- Wymiary wycinka widocznego: 10 x 10.
- Na każdym polu powinny być wyświetlane jego współrzędne.
- Po kliknięciu na pole powinni zostać zaznaczeni jego sąsiedzi.
Termin oddania: 2016-10-27.
- Po tych zajęciach powinno się znać / wiedzieć / umieć
- Jakie mamy rodzaje rzutowania, czym się one charakteryzują, jakie mają wady i zalety i gdzie mogą być wykorzystane.
- Znać rodzaje rzutów aksonometrycznych, umieć podać ich cechy charakterystyczne.
- 2016-10-06 Unity - wprowadzenie, część 1 (podstawy obsługi)
- 2016-10-07 Unity - wprowadzenie, część 2 (tworzenie świata gry w oparciu o wbudowane obiekty)
- Tydzień 2:
- Tydzień 3:
- Tydzień 4:
- 2016-10-27 2D Graphics: double buffering and sprites
- Materiały uzupełniające
- Rozdział 2 z [Mad, 2014]: 2D Graphics
- Zadania (jedno do wyboru)
- Zadanie 3 Napisać prostą grę według poniższych założen (lub podobnych, ale równoważnych) nie korzystając z żadnych dodatkowych bibliotek animujących i zarządzających upływem czasu w grze.
- Na ekranie widoczny jest pojazd kosmiczny.
- Pojazd kosmiczny ma widczny pracujący silnik (animacja pracy silnika w postaci wydobywających się z dyszy wylotowej płomieni).
- Pojazd kosmiczny posiada możliwość wystrzeliwania rakiet.
- Ilość rakiet możliwych do wystrzelenia i widocznych w tym samym czasie musi być większa od 1.
- Wystrzelona rakieta po osiągnięciu brzegu ekranu ulega rozbiciu (animacja ekspolzji).
- Dwa przesuwające się tła.
Termin oddania: do końca semestru.
- Po tych zajęciach powinno się znać / wiedzieć / umieć
- Podstawy powstawanie obrazu na monitorze, zagadnienie synchronizacji pionowej, możliwe problemy.
- Zagadnienie podwójnego buforowania.
- 2016-10-27 Unity - wprowadzenie, część 3 (pierwsze skrypty)
- 2016-10-28 Unity - wprowadzenie, część 4 (skrypty - ciąg dalszy)
- Tydzień 5:
- 2016-11-03 Artificial intelligens in games: pathfinding
- Materiały uzupełniające
- Różne algorytmy wyszukiwania ścieżki
- Mój przykładowy program działający dla poniższej planszy
Plik z opisem planszy (bfs_citi_01.txt) jej wygląd

oraz proponowany koszt wejścia na pola
Symbol |
Nazwa pola |
Koszt wejścia na pole |
Numer pola w pliku z danymi |
 |
Droga główna (teren nizinny) |
0.25 |
40 |
 |
Droga drugorzędna (teren nizinny) |
0.5 |
30 |
 |
Ścieżka (teren nizinny) |
1 |
20 |
 |
Ścieżka (wzniesienia) |
1.5 |
21 |
 |
Ścieżka (teren pagórkowaty) |
2 |
22 |
 |
Ścieżka (góry) |
2.5 |
23 |
 |
Ścieżka (most) |
1 |
24 |
 |
Teren nizinny |
1.5 |
10 |
 |
Wzniesienia |
2 |
11 |
 |
Teren pagórkowaty |
3 |
12 |
 |
Góry |
4 |
13 |
 |
Rzeka |
Infinity Przekraczanie zabronione (tylko po drodze) |
0 |
 |
Las (teren nizinny) |
2.5 |
1 |
 |
Miasto |
1 |
2 |
- Zadania (jedno do wyboru)
- Zadanie 4 Napisać prostą grę według poniższych założen (lub podobnych, ale równoważnych) nie korzystając z żadnych dodatkowych bibliotek animujących i zarządzających upływem czasu w grze.
- Ekran podzielony jest na kwadratowe pola.
- Kolor pola odpowiada wysokości obszaru odwzorowywanego przez to pole.
- Wypełnienie planszy losowe, ewentualnie z możliwością zapisu i ponownego odczytu wygenerowanej planszy.
- Naturalny przebieg rzeźby terenu.
- Koszt przejścia przez pole zależny jego wysokości.
- Możliwość wprowadzenie dodatkowych ,,obiektów'' wpływających na przemieszczanie, np.: rzeka, jezioro, las, droga itp.
- Generowanie najkrótszej ścieżki pomiędzy dwoma, dowolnie wybranymi, polami na planszy.
Termin oddania: do końca semestru.
Zasadniczo dobrze by było aby każdy spróbował sam zmierzyć się z zagadnieniem automatycznego generowania obszarów, ale można też skorzystać z podpowiedzi
- Po tych zajęciach powinno się znać / wiedzieć / umieć
- Umieć wyjaśnić działanie algorytmu A* na konkretnym przykładzie.
- 2016-11-03 Unity - wprowadzenie, część 4 (skrypty - ciąg dalszy)
- 2016-11-04 Unity - wprowadzenie, część 5 (modelowanie środowiska)
- Tydzień 6:
- 2016-11-10 Podstawy programowania gier w HTML
- Materiały uzupełniające
- Wprowadzenie do programowania obiektowego w JavaScript
- Canvas, jCanvas i EaselJS
- Po tych zajęciach powinno się znać / wiedzieć / umieć
- 2016-11-10 Unity - wprowadzenie, część 5 (modelowanie środowiska)
- 2016-11-11 wolne
- Tydzień 7:
- 2016-11-17 Podstawy programowania gier w HTML
- Materiały uzupełniające
- Po tych zajęciach powinno się znać / wiedzieć / umieć
- 2016-11-17 Unity - praca z prezentacjami
- 2016-11-18 Unity - praca z prezentacjami
- Tydzień 8:
- 2016-11-24 Basics of 2D and 3D graphics: Linear algebra
- Materiały uzupełniające
- Po tych zajęciach powinno się znać / wiedzieć / umieć
- 2016-11-24 Piszemy grę w HTML-u
- 2016-11-25 Piszemy grę w HTML-u
- Tydzień 9:
- 2016-12-01 Collision
- Materiały uzupełniające
- Zadania (jedno do wyboru)
- Zadanie 5 Napisać aplikację w której w losowych miejscach wygenerowano dużo wielokątów wypukłych (innych niż kwadraty i prostokąty). Jeden z wielokontów powinien posiadać możliwość jego dowolnego przemieszczania po planszy. W momencie wystapienia kolizji obiekty będące z sobą w kolizji powinny zostać wyświetlone w innym kolorze.
Termin oddania: do końca semestru.
- Po tych zajęciach powinno się znać / wiedzieć / umieć
- O czym mówi Separating axis theorem (SAT).
- Umieć użyć SAT na konkretnym przykładzie.
- 2016-12-01 Piszemy grę w HTML-u
- 2016-12-02 Piszemy grę w HTML-u
- Tydzień 10:
- 2016-12-08 Basics of 2D and 3D graphics: Transformations
- Materiały uzupełniające
- Zadania (jedno do wyboru)
- Zadanie 6 Napisać aplikację animującą obiekty według podanego rysunku

- Obiekt S1 (kwadrat) jest umieszczony w środku układu.
- Obiekt S1 obraca się wokół środka układu.
- Obiekt S2 krąży wokół obiektu S1 zachowując swoją orientację względem S1 (cały czas zwrócony jest do S1 tym samym bokiem).
- Obiekt S3 krąży wokół obiektu S2 zachowując swoją orientację względem S2 (cały czas zwrócony jest do S2 tym samym bokiem).
Ewentualne transformajce muszą być wykonane za pomocą macierzy transformacji.
- Po tych zajęciach powinno się znać / wiedzieć / umieć
- Umieć podać macierz dla elementarnych transformacji.
- Podać i scharakteryzować możliwe sposoby opisu obrotów w przestrzeni 3D.
- 2016-12-08 Piszemy grę w HTML-u
- 2016-12-09 Piszemy grę w HTML-u
- Tydzień 11:
- 2016-12-15 Basics of 2D and 3D graphics: Viewing transformations. Frustum
- Materiały uzupełniające
- Zadania (jedno do wyboru)
- Zadanie 7 Napisać aplikację wyświetlającą prosty świat złożony z prostopadłościanów (ewentualnie innych figur modelowanych za pomocą odcinków) w 4 oknach
- Widok perspektywiczny z kamery.
- Widok prostopadły z góry.
- Widok prostopadły z boku.
- Widok prostopadły z przodu.
Na wszystkich widokach prostopadłych powinna być zaznaczona bieżąca pozycja kamery. Program powinien dawać względnie prostą możliwość przemieszczania kamery.
Termin oddania: do końca semestru.
- Po tych zajęciach powinno się znać / wiedzieć / umieć
- Czym jest ostrosłup widzenia.
- Jakie transformacje są wykorzystywane przy przejściu od świata gry (3D) do prezentacji go na ekranie (2D).
- 2016-12-15 Unity - część 6: Basic Keyframe animation in Unity 3d
- Materiały uzupełniające
- Animacje
- Animacje textur
- Inne
- Zadania (jedno do wyboru)
-
Zadanie 6_1. Termin oddania: do końca semestru.
Do dotychczasowego świata gry dodać:
- przejście ze sceny przedstawiającej teren do sceny z labiryntem,
- do utworzonego świata dodać element animowany za pomocą ujęć kluczowych,
- do utworzonego świata dodać element animowany za pomocą przesunięć textury (animacja UV)
- 2016-12-16 Unity - część 6: Basic Keyframe animation in Unity 3d
- Tydzień 12:
- 2016-12-22 Unity - część 6: Basic Keyframe animation in Unity 3d
- Tydzień 13:
- 2017-01-05 Artificial intelligens in games: Rozdział 11: Automaty oraz 12: Symulacja zachowania
- Materiały uzupełniające
- Zadania (jedno do wyboru)
- Zadanie 8 Treść zadania przedstawia rozdział 12: Symulacja zachowania z ai.pdf
- Po tych zajęciach powinno się znać / wiedzieć / umieć
- Czym jest ostrosłup widzenia.
- Jakie transformacje są wykorzystywane przy przejściu od świata gry (3D) do prezentacji go na ekranie (2D).
- 2017-01-05 Unity - część 7: Simple 2D space game, part I
- Materiały uzupełniające
- Zadania (jedno do wyboru)
-
Zadanie 7_1. Termin oddania: do końca semestru.
Wykonać zadania określone na koniec tutoriala Simple 2D space game, part I
- Tydzień 14:
- 2017-01-12 Problemy współczesnych gier (Jakub Choróbski)
- Materiały uzupełniające
- Zadania (jedno do wyboru)
- Po tych zajęciach powinno się znać / wiedzieć / umieć
- 2017-01-12 Unity - część 7: Simple 2D space game, part I
- Materiały uzupełniające
- Zadania (jedno do wyboru)
- 2017-01-13 Unity - część 7: Simple 2D space game, part I
- Tydzień 15:
- 2017-01-19 Podsumowanie
- Materiały uzupełniające
- Zadania (jedno do wyboru)
- Po tych zajęciach powinno się znać / wiedzieć / umieć
- 2017-01-19 Sprawdzanie projektów
- Materiały uzupełniające
- Zadania (jedno do wyboru)
- 2017-01-20 Sprawdzanie projektów
Materiały
Materiały uzupełniające, dodatkowe, obejmujące wiecej niż jeden temat (dlatego ,,niepodpięte'' pod konkretne zajęcia), mniej lub bardziej związane z przedmiotem itd.