Differences

This shows you the differences between two versions of the page.

Link to this comparison view

egc:teme:02 [2016/11/13 23:20]
alexandru.gradinaru
egc:teme:02 [2016/12/17 17:44] (current)
alexandru.gradinaru [Bonusuri posibile]
Line 20: Line 20:
 Sa se implementeze un joc OpenGL in care utilizatorul are posibilitatea de a controla un personaj 3D ce va avea posibilitatea de a lansa proiectile catre inamici astfel: Sa se implementeze un joc OpenGL in care utilizatorul are posibilitatea de a controla un personaj 3D ce va avea posibilitatea de a lansa proiectile catre inamici astfel:
   * prin intermediul tastelor W, A, S, D (sau orice alte 4 taste) juctorul se poate misca in spatiul 3D   * prin intermediul tastelor W, A, S, D (sau orice alte 4 taste) juctorul se poate misca in spatiul 3D
-  * positia mouse-ului va determina rotirea camerei si a jucatorului (similar cu ce am facut in laborator+  * positia mouse-ului va determina rotirea camerei si a jucatorului ​- camera va fi de tip TPS (third-person),​ iar jucatorul se va roti doar in jurul axei OY (stanga-dreaptaastfel incat directia camerei (forward) va fi si cea a jucatorului 
-  * proiectile se vor lansa la apasarea butonului de mouse (left click)+  * apasarea butonului de mouse (left click) ​va lansa proiectile
  
 Inamicii se vor genera initial la fiecare 5 secunde dintr-un colt si vor parcurge toata scena intr-un labirint in forma de Z pana cand ajung la coltul opus. Pe masura ce trece timpul, inamicii vor deveni din ce in ce mai greu de omorat si se vor genera din ce in ce mai repede. Scopul jocului este de a opri inaintarea inamicilor catre sfarsitul labirintului. Inamicii se vor genera initial la fiecare 5 secunde dintr-un colt si vor parcurge toata scena intr-un labirint in forma de Z pana cand ajung la coltul opus. Pe masura ce trece timpul, inamicii vor deveni din ce in ce mai greu de omorat si se vor genera din ce in ce mai repede. Scopul jocului este de a opri inaintarea inamicilor catre sfarsitul labirintului.
Line 34: Line 34:
   - Grenade launcher, care trage grenade cu bolta, rar, dar foarte puternice. ​   - Grenade launcher, care trage grenade cu bolta, rar, dar foarte puternice. ​
 <note tip> <note tip>
-Pentru coliziunea proiectilelor puteti sa folositi variante de testare simple (AABB, sfere etc.).  ​+  * Proiectilele vor avea proprietati care le controleaza distanta, directia si puterea. 
 +  * Pentru coliziunea proiectilelor puteti sa folositi variante de testare simple (AABB, sfere etc.).  ​
 </​note>​ </​note>​
  
Line 43: Line 44:
 Pentru a ajuta jucatorul, pe parcursul traseului, vor exista si 3 turnuri care vor trage in cel mai apropiat inamic. Turnurile se vor orienta mereu catre inamicul inspre care trag. Pentru a ajuta jucatorul, pe parcursul traseului, vor exista si 3 turnuri care vor trage in cel mai apropiat inamic. Turnurile se vor orienta mereu catre inamicul inspre care trag.
  
-Pentru turnuri, personaj si inamici se pot folosi orice modele 3D incarcate(obj) sau obiecte compuse din mai multe primitive.+<note tip> 
 +Pentru turnuri, personaj si inamici ​(sau orice altceva doriti) ​se pot folosi orice modele 3D incarcate sau obiecte compuse din mai multe primitive. 
 +Puteti incarca obiecte de tipul obj, fbx, dae sau orice altceva e suportat de libraria assimp care va asigura incarcarea de fisiere. 
 +</​note>​
  
 De asemenea in joc va exista si un minimap in coltul dreapta jos ce va reprezenta toata scena vazuta de sus in care inamicii sunt desenati cu rosu, turnurile cu verde, iar utlizatorul cu albastru. De asemenea in joc va exista si un minimap in coltul dreapta jos ce va reprezenta toata scena vazuta de sus in care inamicii sunt desenati cu rosu, turnurile cu verde, iar utlizatorul cu albastru.
 <note tip> <note tip>
-Minimap-ul se deseneaza intr-un viewport separat, folosind o proiectie ortogonala si o camera situata deasupra scenei. Pentru colorare se poate folosi spre exemplu mesh-ul `box` din laborator in care aveti pe fete culorile necesare sau desenarea de mesh 2D cu o culoare (RenderMesh2D).+  * Minimap-ul se deseneaza intr-un viewport separat, folosind o proiectie ortogonala si o camera situata deasupra scenei. ​ 
 +  * Pentru colorare se poate folosi spre exemplu mesh-ul `box` din laborator in care aveti pe fete culorile necesare sau desenarea de mesh 2D cu o culoare (RenderMesh2D).
 </​note>​ </​note>​
  
 ===== Exemplu rezolvare ===== ===== Exemplu rezolvare =====
  
-{{ :​egc:​teme:​tema2:​screen1.png?500 |}} +{{ :​egc:​teme:​tema2:​screen2.png?500 |}}
- +
-Vom pune in curand si un demo.+
  
 +<​note>​
 +**Exemplu de rezolvare tema**: {{:​egc:​teme:​tema2:​tema2demo.zip|}} {{:​egc:​teme:​tema2:​tema2demox86.zip|}}
 +</​note>​
 ===== Barem notare ===== ===== Barem notare =====
  
-  * Crearea unui character 3d care este mereu orientat cu spatele catre o camera ​TPS [15p] +  * Crearea unui character 3d care este mereu orientat cu spatele catre o camera ​**third-person** **[15p]** 
-  * Crearea inamicilor care parcurg traseul si sunt orientati spre directia in care merg [10p] +  * Crearea inamicilor care parcurg traseul si sunt orientati spre directia in care merg **[10p]** 
-  * Armele userului (pistol [5p], pusca [5p], grenade launcher [10p]) [20p] +  * Armele userului (pistol [5p], pusca [5p], grenade launcher [10p]) ​**[20p]** 
-  * Turnurile care se rotesc si trag catre adversar [15p] +  * Turnurile care se rotesc si trag catre adversar ​**[15p]** 
-  * Mecanismul prin care proiectilele trase de user/​turnuri scad viata inamicilor (detectia de coliziuni) [15p+  * Mecanismul prin care proiectilele trase de user/​turnuri scad viata inamicilor (detectia de coliziuni) ​**[10p]** 
-  * Minimap [15p] +  * Minimap ​**[15p]** 
-  * Animatie de distrugere a inamicilor (cadere lateral sau orice alta animatie mai complexa) [10p]+  * Animatie de distrugere a inamicilor (cadere lateral sau orice alta animatie mai complexa) ​**[10p]** 
 +  * Readme **[5p]**
  
 Total : **100 pct** Total : **100 pct**
 +
 +
 +<​note>​
 +**README-ul** trebuie sa respecte urmatoarea structura
 +  - Nume, prenumne, grupa si serie
 +  - Utilizare aplicatie - taste/​mouse/​stari/​etc
 +  - Detalii de implementare - clase/​structura
 +  - Probleme aparute
 +  - Continutul arhivei (optional)
 +    * in cazul in care sunt necesare detalii importante despre structura proiectului,​ precum existenta unor fisiere speciale, fisiere de configurare,​ resurse de proiect, etc
 +  - Status implementare functionalitati si descriere bonus (in caz ca exista)
 +</​note>​
  
 ===== Bonusuri posibile ===== ===== Bonusuri posibile =====
Line 72: Line 91:
   - Inamicii vor veni in valuri, iar intre valuri user-ul va intra intr-un mod build, in care scena este vazuta de sus, iar el poate sa construiasca turnuri si sa le pozitioneze unde doreste (Tower Defence).   - Inamicii vor veni in valuri, iar intre valuri user-ul va intra intr-un mod build, in care scena este vazuta de sus, iar el poate sa construiasca turnuri si sa le pozitioneze unde doreste (Tower Defence).
   - Animatie pentru mersul personajului (membrele nu vor avea incheieturi,​ ci vor fi formate dintr-o singur parte: de ex un paralelipiped).   - Animatie pentru mersul personajului (membrele nu vor avea incheieturi,​ ci vor fi formate dintr-o singur parte: de ex un paralelipiped).
 +  - Orice nu e specificat si considerati ca poate reprezenta un bonus de implementare. Se poate acorda bonus pentru orice functionalitatea ce intra in categoriile:​
 +    * game logic
 +    * game mechanics
 +    * elemente grafice mai avansate, din afara arei acoperite de tema
  
 +<​note>​ 
 +  * Bonusul se acorda doar daca cerintele de baza ale temei sunt implementate corect 
 +  * Notarea bonusului este la latitudinea asistentului si a calitatii implementarii,​ nu exista barem dar in principiu se pot accorda 5, 10, 15 pct 
 +  * Pentru implementari foarte speciale bonusul acordat poate ajunge pana la maxim 20 pct 
 +  * Bonusul nu este conditionat de trimiterea la timp a temei. Puteti obtine bonus chiar daca ati trimis tema cu intarziere. 
 +</​note>​
 ===== Arhivarea proiectului ===== ===== Arhivarea proiectului =====
  
Line 85: Line 113:
   * stergeti folderul __**/​x64**__ sau __**/​x86**__ (in caz ca exista)   * stergeti folderul __**/​x64**__ sau __**/​x86**__ (in caz ca exista)
     * executabilul final este generat in folderul __**/​x86**__ sau __**/​x64**__ la finalul link-editarii in functie de arhitectura aleasa la compilare (32/64 biti)     * executabilul final este generat in folderul __**/​x86**__ sau __**/​x64**__ la finalul link-editarii in functie de arhitectura aleasa la compilare (32/64 biti)
-  * in ca ca arhiva ​tot depaseste limita de 20MB (nu ar trebui), puteti ​sa stergeti si folderul ​__**/​libs**__ ​sau __**/​Resources**__ intrucat se pot adauga la testare+  * este **obligatoriu** ​ca arhiva sa contina folderele ​__**/​libs**__ ​si __**/​Resources**__ ​utilizate in timpul dezvoltari ​intrucat ​acestea ​se mai pot modifica pe parcurs cursului iar gasirea versiunii corecte ingreuneaza mult testarea
 </​note>​ </​note>​
egc/teme/02.1479072021.txt.gz · Last modified: 2016/11/13 23:20 by alexandru.gradinaru
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0