Tema 1: AstroKitty
Responsabil: Radu Boeru, Alex Gradinaru
Perioada de lucru: 18 Octombrie - 1 Noiembrie (2 saptamani)
Termen de predare: 1 Noiembrie 2017, 23:55
Depunctare intarziere: 2.5p/zi pana la maxim 40p din totalul de 150p
Enunt
Scopul temei - Implementarea unui joc 2D prin utilizarea conceptelor prezentate in primele 3 laboratoare:
constructia de meshe simple
tratarea evenimentelor pentru mouse
utilizarea transformarilor 2D: translatie, rotatie, scalare
Cerinta - Sa se implementeze in OpenGL o aplicatie in care utilizatorul poate controla un astronaut printre platforme si asteroizi pana ajunge la o pozitie de sfarsit.
Astronautul se lanseaza intr-o directie si va merge cu viteza constanta pana la intalnirea unui obstacol. Exista mai multe tipuri de obstacole:
platforme de stationare: daca astronautul atinge o astfel de platforma acesta va stationa pe ea
platforme de reflexie: daca astronautul atinge o astfel de platforma va fi deplasat mai departe cu acelasi unghi cu care a ajuns pe platforma (fenomen de reflexie)
asteroizi: daca astronautul atinge un asteroid, acesta din urma este distrus, iar astronautul este propulsat in alta directie, in functie de unghiul de lovire
platforma finala: daca astronautul atinge o astfel de platforma se termina jocul (sau nivelul)
Controlul se va face astfel:
Ciocnirea sau atingerea a doua obiecte se defineste prin termenul de coliziune. Determinarea coliziunii poate fi simplificata prin aproximarea caracterului cu un cerc.
Mai multe informatii despre ce reprezinta coliziunea si cum se poate implementa:
Astronautul trebui sa isi pastreze orientarea atat in cazul deplasarii cat si in cazul stationarii. In cazul platformelor care sunt deasupra caracterului, orientarea va fi in jos, altfel in sus. In cazul deplasarii, orientarea trebuie sa fie in directia deplasarii.
Exemplu minimal:
Geometrie minimala
Astronaut ↔ triunghi
Asteroizii ↔ discuri de cerc (minim 8 varfuri) cu rotatie, translatie sau scalare permanenta (discretizarea punctelor poate fi facuta cu un pas mai mare astfel incat sa fie observata mai bine rotatia acestora)
Platformele ↔ suprafete rectangulare fixe in spatiu
Implementare suficienta
Scena este fixa (nu se misca odata cu astonautul si nu exista spatiu din scena care sa nu se vada in ecran, nefiind astfel necesara miscarea ferestrei) - peretii scenei pot fi considerati platforma de stationare sau de reflexie, la alegerea voastra
Pentru obstacole sunt minime urmatoarele:
1 platforma de stationare
1 platforma de reflexie
1 asteroid cu fiecare animatie (un asteroid cu rotatie, unul cu translatie si unul cu scalare) sau 2 asteroizi cu transformari compuse (ex: 1 asteroid cu scalare si translatie si 1 asteroid cu rotatie si translatie).
1 platforma finala
Orice nu este mentionat sau specificat explicit este lasat la latitudinea voastra
Inspiratie: Rockitty
Observatii
Alte aspecte ce nu au fost prezentate raman la latitudinea voastra.
Punctajul este oferit doar pentru cerintele integrate in aceeasi scena.
Punctajul bonus se ofera doar daca cerintele obligatorii sunt implementate corect.
Arhivarea proiectului
in mod normal arhiva trebuie sa contina toate resursele necesare compilarii si rularii
inainte de a face arhiva asigurati-va ca ati dat clean la proiect
click dreapta pe proiect in Solution Explorer → Clean Solution, sau
stergeti folderul /Visual Studio/obj
stergeti fisierul /Visual Studio/Framework_EGC.sdf (in caz ca exista)
stergeti fisierul /Visual Studio/Framework_EGC.VC.db (in caz ca exista)
stergeti folderul /x64 sau /x86 (in caz ca exista)
in cazul in care arhiva tot depaseste limita de 20MB (nu ar trebui), puteti sa stergeti si folderul /libs sau /Resources intrucat se pot adauga la testare. Nu este recomandat sa faceti acest lucru intrucat ingreuneaza mult testarea in cazul in care versiunea curenta a librariilor/resurselor difera de versiunea utilizata la momentul scrierii temei.
Barem notare
Reflexie la coliziunea cu platformele de reflexie [20p]
Detectarea coliziunii cu platformele de stationare (incetarea miscarii) [15p]
Repozitionare astronaut odata ajuns pe platforma de stationare [10p]
Asteroizi dinamici (translatie, rotatie sau scalare) [20p]
Distrugere asteroid la coliziune [10p]
Modificare directie (reflexie si orientare) dupa coliziunea cu un asteroid [10p]
Bonusuri posibile
La coliziunea cu un asteroid acesta este fragmentat in asteroizi mai mici [5p]
Nivel complex (platforme oblice, scena dinamica - se misca odata cu astonautul si exista spatii din scena care nu se vad la un moment dat in ecran) [5p]
Simularea fortelor de accelerare si prezenta unor asteroizi cu camp gravitational [5p]
Efect de “aterizare” la incetarea miscarii (noua orientare nu este obtinuta instant, este observata rotatia triunghiului) [5p]