Differences

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

Link to this comparison view

egc:teme:2020:01 [2020/11/01 09:25]
anca.morar
egc:teme:2020:01 [2020/11/17 19:31] (current)
florin_eugen.iancu
Line 1: Line 1:
 ==== Tema 1 - Bow and Arrow ==== ==== Tema 1 - Bow and Arrow ====
  
-In cadrul temei 1 veti implementa ​propria ​versiune ​de Flappy Bird. Tot ce nu este specificat ramane la creativitatea voastra.+In cadrul temei 1 se va implementa ​versiune ​simplificata a jocului Bow and Arrow. Tot ce nu este specificat ramane la creativitatea voastra. 
  
 === Jucatorul === === Jucatorul ===
Line 7: Line 8:
 Jucatorul va fi reprezentat doar prin arc si sageata. Sageata va fi creata prin combinarea a minim 2 primitive geometrice(ex:​ triunghi, dreptunghi sau linie). Arcul va fi alcatuit dintr-o linie verticala si un arc de cerc. Jucatorul va fi reprezentat doar prin arc si sageata. Sageata va fi creata prin combinarea a minim 2 primitive geometrice(ex:​ triunghi, dreptunghi sau linie). Arcul va fi alcatuit dintr-o linie verticala si un arc de cerc.
  
-{{ :​egc:​teme:​2020:​bow.png?​nolink&​400|}}+{{ :​egc:​teme:​2020:​bow.png?​nolink&​300 |}}
  
 === Tinte === === Tinte ===
  
 Obiectele in care jucatorul trebuie sa traga cu sageata vor fi de 2 feluri: baloane si shuriken. ​ Obiectele in care jucatorul trebuie sa traga cu sageata vor fi de 2 feluri: baloane si shuriken. ​
-Baloanele vor fi create prin combinarea a minim 2 primitive(ex:​ un cerc scalat diferit pe axele x si y si o polilinie). Acestea se vor deplasa ascendent pe axa OY(vor aparea in partea de jos a scenei si vor urca). Baloanele vor fi de doua culori diferite: baloanele rosii - vor mari scorul, baloanele galbene - vor micsora scorul.+Baloanele vor fi create prin combinarea a minim 2 primitive(ex:​ un cerc scalat diferit pe axele x si y si o polilinie). Acestea se vor deplasa ascendent pe axa OY(vor aparea in partea de jos a scenei si vor urca). Baloanele vor fi de doua culori diferite: baloanele rosii- vor mari scorul, baloanele galbene- vor micsora scorul ​la coliziunea cu sageata. 
 Stelutele shuriken vor fi create prin combinarea a 4 triunghiuri. Ele se vor deplasa pe axa OX(vor aparea din partea dreapta a scenei si se vor indrepta catre jucator). Stelutele vor fi animate - se vor roti in jurul centrului pe tot parcursul deplasarii. Stelutele shuriken vor fi create prin combinarea a 4 triunghiuri. Ele se vor deplasa pe axa OX(vor aparea din partea dreapta a scenei si se vor indrepta catre jucator). Stelutele vor fi animate - se vor roti in jurul centrului pe tot parcursul deplasarii.
 +
 +Obiectele trebuie definite ca in laboratorul 2. Nu se accepta incarcarea de obiecte 3D!
  
  
Line 20: Line 24:
 === Gameplay === === Gameplay ===
  
-Jocul va fi un endless runner, care va crea impresia ca pasarea ​se deplaseaza de la stanga ​la dreapta printre perechile de dreptunghiuriIn realitate, nu se deplaseaza pasarea de la stanga la dreaptaci scena se deplaseaza de la dreapta spre stanga. +Arcul jucatorului ​se afla in partea ​stanga ​a sceneiArcul se poate deplasa doar pe axa OYprin apasarea tastelor W, SDirectia ​de tragere a arcului se poate ajusta prin miscarea mouse-uluiArcul va fi mereu rotit astfel incat sageata ​se va deplasa catre pozitia curenta a mouse-uluiJucatorul va putea trage o sageata la cateva secunde. Viteza de deplasare a sagetii este determinata ​de timpul de apasare ​al butonului mouse-uluiCu cat butonul este apasat mai mult timpcu atat viteza ​va fi mai marepana la o limita setata  ​
-Pasarea este afectata ​de gravitatieEa va avea intotdeauna tendinta sa se incline in jos si sa cada. Daca se apasa tasta SPACE, pasarea ​se va ridica , inclinandu-se in susDaca pasarea se loveste ​de dreptunghiuri,​ moare. Pe masura ce timpul de supravietuire ​al pasarii trece, creste si punctajul jucatoruluiIn consola se va afisa periodic punctajul jucatorului. Atunci cand pasarea moarese va afisa in consola un mesajimpreuna cu punctajul final.+
  
-=== Detalii de implementare ===+Jucatorul va avea 3 vieti. La coliziunea dintre arc si un shuriken jucatorul va pierde o viata. La pierderea tuturor vietilor, jocul se va termina.
  
-  * Caderea ​sau ridicarea pasarii ​se vor implementa prin translatie ​pe axa Oy.+Scorul va creste la coliziunea sagetii cu baloanele rosii sau shuriken. Scorul ​se va afisa periodic in consola sau se va ilustra ​pe ecran sub forma unui dreptunghi scalat (scorebar).
  
-  * Inclinarea pasarii in jos va fi implementata printr-o rotatie (fata de centrul de greutate al pasarii) in sens orar, iar inclinarea pasarii in sus, printr-o rotatie in sens trigonometric 
  
-  * Perechile ​de dreptunghiuri se vor translata incontinuu pe axa Ox (de la dreapta la stanga). De fiecare data cand o pereche de dreptunghiuri dispare (s-a deplasat spre stanga pana cand a iesit din spatiul de desenare), apare o alta pereche de dreptunghiuri in partea dreapta. Crearea mediului inconjurator trebuie sa se realizeze in asa fel incat consumul de memorie si timpul de redare sa fie optime. Nu creati incontinuu obiecte care sa reprezinte perechile de dreptunghiuri care apar si dispar din spatiul de desenare!!!! O implementare ​eleganta este sa creati un singur dreptunghi in functia init(), iar in functia Update() sa dati comanda de desenare pentru acel dreptunghi de mai multe ori, de fiecare data la alta pozitie si cu alt factor de scalare pe OY, astfel incat dreptunghiurile desenate sa aiba inaltimi diferite. La fel, in functia Update() nu trimiteti spre desenare dreptunghiuri care au disparut din ecran!! +=== Detalii ​de implementare ​===
- +
-  * Toate animatiile trebuie sa fie independente de platforma.+
  
 +  * Sagetile pot fi lansate doar catre partea dreapta a scenei.In momentul coliziunii sagetii cu un obiect se va declansa o animatie de distrugere a obiectului(ex:​ balonul va fi scalat cu factor subunitar pana dispare de tot).
 +  * Afisarea puterii de tragere se va realiza astfel: un dreptunghi amplasat sub jucator, care va fi scalat pe axa OX cat timp butonul mouse-ului este tinut apasat.
 +  * Coliziunea dintre sageata si obiectele tinta se va implementa prin testarea daca varful sagetii este inclus in cercul incadrator al fiecarui obiect tinta.
 +  * Coliziunea dintre shuriken si arcul jucatorului se va implementa prin testarea intersectiei cercurilor incadratoare ale obiectelor.
 +  * Crearea mediului inconjurator trebuie sa se realizeze in asa fel incat consumul de memorie si timpul de redare sa fie optime. Nu creati incontinuu obiecte care sa reprezinte obiectele tinta si sagetile care apar si dispar din spatiul de desenare!!!! O implementare eleganta este sa creati un singur obiect in functia init(), iar in functia Update() sa dati comanda de desenare pentru acel obiect de mai multe ori, de fiecare data la alta pozitie si cu alt factor de scalare.
 +  * Toate animatiile trebuie sa fie independente de timpul de procesare al unui cadru.
  
-  * Coliziunea dintre pasare si dreptunghiuri se poate simplifica prin verificarea unei coliziuni intre un cerc si dreptunghiuri (daca pasarea este destul de mica in raport cu dreptunghiurile,​ ea poata fi aproximata prin cercul care o incadreaza) 
  
 <note tip>Mai multe informatii despre ce reprezinta coliziunea si cum se poate implementa: <note tip>Mai multe informatii despre ce reprezinta coliziunea si cum se poate implementa:
Line 41: Line 46:
   * [[https://​www.youtube.com/​watch?​v=aTbw71EpamY]]   * [[https://​www.youtube.com/​watch?​v=aTbw71EpamY]]
   * [[https://​developer.mozilla.org/​en-US/​docs/​Games/​Techniques/​3D_collision_detection]]   * [[https://​developer.mozilla.org/​en-US/​docs/​Games/​Techniques/​3D_collision_detection]]
 +Mentiune: in cazul acestei teme, coliziunile sunt mult mai simple (punct-cerc si cerc-cerc).
 </​note>​ </​note>​
  
  
 === Bonus === === Bonus ===
-  * (5pAnimatie de scalare pentru perechile de dreptunghiuri ​(o pereche ​de dreptunghiuri sa se comporte ca un set de usi glisante de la un lift modern)astfel incat sa se apropie si sa se departeze incontinuupastrand totusi o distanta suficient de mare intre ele astfel incat pasarea sa treaca printre ele+  * Scena cat mai realista ​(adaugarea unui personaj in scena, etc) 
-  * (5p-10p) Scena cat mai realista (perechile de stalactite ​si stalagmite ​sa fie in mai multe culori, din forme mai complexe, pasarea ​sa arate ca o pasare+  * Cresterea dificultatii jocului ​(viteza ​de deplasare a obiectelor tintanumarul obiectelor tintaetc
-  * Stalactitele si stalagmitele ​sa nu fie numai verticale ​(look up 2D GJK+  * Animatii ​(ex: baloanele sa se deplaseze pe un traseu serpuitor; la coliziunea dintre sageata ​si balon, balonul ​sa fie deformat realist si sa cada conform gravitatiei
-  * Sa creasca dificultatea jocului pe masura ce creste punctajul jucatorului +  * Sageata ​sa tina cont de gravitatie ​(aruncarea sub un unghi inclinat
-  * Animatie care sa simuleze modul prin care pasarea da din aripi+  * Diverse alte obiecte tinta (exemple in video)
  
-<note tip>​Exemplu (doar pentru orientare): https://www.youtube.com/watch?​v=I69adfEqwC0</​note>​+<note tip>​Exemplu (doar pentru orientare): https://youtu.be/dcv-XKmUPjo ​</​note>​
  
  
 === Functionalitati obligatorii === === Functionalitati obligatorii ===
 Barem orientativ pentru realizarea functionalitatilor (din 150 puncte): Barem orientativ pentru realizarea functionalitatilor (din 150 puncte):
-  * desenare pasare ​(25p+  * Desen scena - 40 p (10p sageata, 10p arcul, 10p baloane, 10p shuriken
-  * desenare mediu si animatie, ​cu utilizarea optima ​resurselor ​(40p+  * Animatie obiecte tinta - 10p 
-  * animatii fluide pasare (35p) +  * Stabilirea pozitiei arcului ​cu tastele - 10p 
-  * coliziuni ​(35p+  * Stabilirea directiei de tragere si deplasare ​sagetii - 25p (15p directie, 10p deplasare
-  * printare statistici in consola (10p) +  * Coliziunea sageata-obiecte tinta - 15p 
-  * readme (5p)+  * Coliziunea shuriken-personaj - 15p 
 +  * Sistemul de tragere(viteza sageata + power bar- 15p  
 +  * Animatie tinte doborate - 10p 
 +  * Actualizare scor - 10p 
  
 === Intrebari si raspunsuri === === Intrebari si raspunsuri ===
Line 86: Line 96:
   * stergeti fisierul __**/Visual Studio/​Framework_EGC.sdf**__ (in caz ca exista)   * stergeti fisierul __**/Visual Studio/​Framework_EGC.sdf**__ (in caz ca exista)
   * stergeti fisierul __**/Visual Studio/​Framework_EGC.VC.db**__ (in caz ca exista)   * stergeti fisierul __**/Visual Studio/​Framework_EGC.VC.db**__ (in caz ca exista)
-  * stergeti folderul __**/​.vs**__ (in caz ca exista+  * stergeti folderul __**/Visual Studio/.vs**__ (daca nu il vedeti, **este posibil sa fie ascuns**)
   * 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)
Line 93: Line 103:
  
 === Deadline tema === === Deadline tema ===
-noiembrie ora 23:55+17 noiembrie ora 23:59 
 + 
 +=== Responsabili tema === 
 +  * Stefania Cristea 
 +  * Andrei Lapusteanu 
 +  * Anca Morar
egc/teme/2020/01.1604215515.txt.gz · Last modified: 2020/11/01 09:25 by anca.morar
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