Differences

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

Link to this comparison view

egc:teme:2024:01 [2024/10/28 19:03]
vlad.novetschi
egc:teme:2024:01 [2024/10/31 00:47] (current)
andrei.lambru [Exemple de funcționalități bonus]
Line 95: Line 95:
 $$ $$
  
-Vom folosi acest unghi în transformarea rotației ​tank-ului. Pentru a funcționa fără alte transformări ajutătoare de translație, ​tank-ul ​trebuie construit cu centru ​laturei de jos în originea sistemului de coordonate. Altfel, coordonata acestui centru trebuie calculată, iar rotația se va face mai întai ​translatând acel punct in origine, aplicând rotațiași translâtand ​înapoi.+Vom folosi acest unghi în transformarea rotației ​tancului. Pentru a funcționa fără alte transformări ajutătoare de translație, ​tancul ​trebuie construit cu centrul ​laturei de jos în originea sistemului de coordonate. Altfel, coordonata acestui centru trebuie calculată, iar rotația se va face mai întâi ​translatând acel punct în origine, aplicând rotația și translâtând ​înapoi.
  
 <note tip> <note tip>
Line 113: Line 113:
 $$ $$
 t = \frac{x - x_1}{x_2 - x_1}\\ t = \frac{x - x_1}{x_2 - x_1}\\
-(x_i,\ y_i) lerp((x_{p1},\ y_{p1}),\ (x_{p2},\ y_{p2}), t)\\  +f(P1P2, t)\\  
-lerp(P_1P_2, t) = P_1 * t + P_2 *(1-t)+f(ab, t) = * (1 - t) + b * t
 $$ $$
 +
 +În formula de mai sus, f este o interpolare liniară.
  
 === Deformare teren === === Deformare teren ===
Line 138: Line 140:
  
 <note important>​ <note important>​
-Valoarea pragului trebuie să fie aleasă astfel ​încat ​animația de „alunecare de teren” să fie realizată de-a lungul mai multor cadre. Altfel spus, animația trebuie să se poată observa vizual și nu trebuie să se realizeze instant, deoarece nu s-ar mai numi o animație.+Valoarea pragului trebuie să fie aleasă astfel ​încât ​animația de „alunecare de teren” să fie realizată de-a lungul mai multor cadre. Altfel spus, animația trebuie să se poată observa vizual și nu trebuie să se realizeze instant, deoarece nu s-ar mai numi o animație.
 </​note>​ </​note>​
  
Line 167: Line 169:
 Lansarea proiectilului se va realiza atunci când jucătorul apasă Spacebar, respectiv Enter, în funcție de tanc. Proiectilul va fi reprezentat grafic printr-un cerc și va fi lansat din vârful turelei, în direcția în care aceasta este orientată. Viteza și traiectoria proiectilului vor depinde de unghiul turelei și de forța aplicată la lansare, simulând efectul gravitației pentru a crea o mișcare realistă. Proiectilul va interacționa cu terenul și cu celelalte tancuri, provocând daune în momentul impactului. Lansarea proiectilului se va realiza atunci când jucătorul apasă Spacebar, respectiv Enter, în funcție de tanc. Proiectilul va fi reprezentat grafic printr-un cerc și va fi lansat din vârful turelei, în direcția în care aceasta este orientată. Viteza și traiectoria proiectilului vor depinde de unghiul turelei și de forța aplicată la lansare, simulând efectul gravitației pentru a crea o mișcare realistă. Proiectilul va interacționa cu terenul și cu celelalte tancuri, provocând daune în momentul impactului.
  
-Pentru deplasarea proiectilului vom considerala lansare un vector cu acelasi ​unghi ca si tunul tank-ului si magnitudine ​aleasa ​de voi. Pe parcursul ​deplasarii ​proiectilului,​ componenta x a vectorului nu se va modifica, iar componenta y va scadea ​din ce in ce mai repede, cu o acceleratie `g` constanta(valoarea ei nu trebuie ​sa fie 9.8 ca la acceleratia gravitationala, ci o valoare pe care o considerati potrivita in contextul jocului pe care il implementati).+Pentru deplasarea proiectiluluivom considera la lansare un vector cu același ​unghi ca și tunul tancului și magnitudine ​aleasă ​de voi. Pe parcursul ​deplasării ​proiectilului,​ componenta x a vectorului nu se va modifica, iar componenta y va scădea ​din ce în ce mai repede, cu o acceleratie `g` constantă ​(valoarea ei nu trebuie ​să fie neapărat ​9.8 ca la accelerația gravitațională, ci o valoare pe care o considerați potrivită în contextul jocului pe care îl implementați). 
 + 
 +Inițial, vectorul de deplasare a proiectilului este următorul:
  
 $$ $$
-\vec{v_{initial}} = (cos(unghiTun),\ sin(unghiTun)) * magnitudine\\+\vec{v} =  
 + 
 +\begin{bmatrix} 
 +cos(unghiTun) ​sin(unghiTun) ​ 
 +\end{bmatrix}  
 +\cdot magnitudine\\
  
-La\ fiecare\ cadru:​\\ ​ 
-\vec{v} = \vec{v} - \vec{g} * deltaTime\\ ​ 
-P = P + \vec{v} * deltaTime\ (P\ este\ pozitia\ proiectilului) 
 $$ $$
 +
 +La fiecare cadru trebuie să realizați următoarul proces:
 +
 +$$
 +P = P + \vec{v} \cdot deltaTime\\
 +\vec{v} = \vec{v} - \vec{g} \cdot deltaTime
 +$$
 +
 +În formula de mai sus, P reprezintă poziția proiectilului la un anumit cadru.
  
 ==== Interfața cu utilizatorul ==== ==== Interfața cu utilizatorul ====
-=== Bara de viata ===+=== Bara de viață ​===
 Ambele tancuri vor avea deasupra o bară de viață, reprezentată printr-un dreptunghi wireframe (neumplut), peste care va fi suprapus un alt dreptunghi umplut. Bara de viață va scădea atunci când unul dintre proiectile lovește tancul. Ambele tancuri vor avea deasupra o bară de viață, reprezentată printr-un dreptunghi wireframe (neumplut), peste care va fi suprapus un alt dreptunghi umplut. Bara de viață va scădea atunci când unul dintre proiectile lovește tancul.
  
Line 191: Line 206:
 === Funcționalități de bază (150 puncte) === === Funcționalități de bază (150 puncte) ===
  
-  * Sistem teren deformabil (100p total) +  * Sistem teren deformabil (90p total) 
-    * Desenare teren 30p +    * Desenare teren 50p 
-    * Deplasare și orientare corectă a tancurilor pe teren (30p total) +    * Deplasare și orientare corectă a tancurilor pe teren (40p total) 
-      * Deplasare ​15p +      * Deplasare ​20p 
-      * Orientare ​15p+      * Orientare ​20p
   * Construcție elemente scenă (30p total)   * Construcție elemente scenă (30p total)
     * Desenare geometrie tancuri 20p     * Desenare geometrie tancuri 20p
     * Desenare geometrie proiectil 10p     * Desenare geometrie proiectil 10p
-  * Sistem proiectil (20p total) +  * Sistem proiectil (30p total) 
-    * Lansare și deplasare proiectil - traiectorie fixă 15p +    * Lansare și deplasare proiectil - traiectorie fixă 20p 
-    * Verificare intersecție proiectil - tanc inamic ​5p+    * Verificare intersecție proiectil - tanc inamic ​10p
       * Sistem puncte de viață, un tanc dispare din scenă după ce este lovit de câteva ori       * Sistem puncte de viață, un tanc dispare din scenă după ce este lovit de câteva ori
 +
 +<note warning>
 +**Atenție!** Punctajul pentru rezolvarea cerințelor specifice realizării terenului se acordă doar în situația în care forma terenului este obținută prin compunerea a cel puțin 2 curbe. Nerespectarea acestei restricții atrage după sine anularea punctajului aferent tuturor cerințelor pentru teren.
 +
 +
 +Modelele descrise in enunț (tancul, proiectilul,​ terenul, bara de viață, traiectoria) trebuie construite / generate programatic,​ **NU** importate.
 +</​note>​
  
 <note important>​ <note important>​
Line 216: Line 238:
     * Desenare și animație bară de viață dinamică, în partea de sus a tancurilor 10p     * Desenare și animație bară de viață dinamică, în partea de sus a tancurilor 10p
     * Desenare ghidaj traiectorie proiectil 10p     * Desenare ghidaj traiectorie proiectil 10p
-  * Animație ​deformare teren de-a lungul mai multor cadre 15p+  * Animație ​de alunecare a terenului ​de-a lungul mai multor cadre 15p
   * Verificare intersecție proiectil - teren 10p   * Verificare intersecție proiectil - teren 10p
   * Deformare teren la poziția intersecției cu un proiectil 20p   * Deformare teren la poziția intersecției cu un proiectil 20p
-<note warning> 
-**Atenție!** Punctajul pentru rezolvarea cerințelor specifice realizării terenului se acordă doar în situația în care forma terenului este obținută prin compunerea a cel puțin 2 curbe. Nerespectarea acestei restricții atrage după sine anularea punctajului aferent tuturor cerințelor pentru teren. 
  
  
-Modelele descrise in enunt (tancul, proiectilul,​ terenul, bara de viata, traiectoria) trebuie construite / generate programatic,​ **NU** importate. +
-</​note>​+
  
 ==== Exemple de funcționalități bonus ==== ==== Exemple de funcționalități bonus ====
 +  * nivele in plus (ex: nave pe un ocean, rovere pe marte, etc)
   * Animatii distrugere tanc   * Animatii distrugere tanc
   * Animatii de explozie la impactul proiectilului   * Animatii de explozie la impactul proiectilului
   * Alte efecte vizuale (nori, praf, etc)   * Alte efecte vizuale (nori, praf, etc)
 +  * Obiecte interactive sau de decor imprastiate prin nivel
   * Camera shake   * Camera shake
   * mai multe tipuri de proiectile (ex care sa se rostogoleasca,​ sau sa adauge teren, ghidate, etc)   * mai multe tipuri de proiectile (ex care sa se rostogoleasca,​ sau sa adauge teren, ghidate, etc)
Line 239: Line 260:
   * reprezentare mai avansata a terenului (care sa permita de exemplu tuneluri)   * reprezentare mai avansata a terenului (care sa permita de exemplu tuneluri)
   * alte mecanici care sa faca gameplay-ul mai interesant (elemente rogue-like, turn-based, inventar, etc)   * alte mecanici care sa faca gameplay-ul mai interesant (elemente rogue-like, turn-based, inventar, etc)
 +  * Deplasare tanc pe suprafața terenului care să țină cont de forma și lungimea acestuia din urmă
   * deplasare tancului să țină cont de forma terenului (ex: sa mearga mai incet / sa alunece cand e pe o portiune abrupta)   * deplasare tancului să țină cont de forma terenului (ex: sa mearga mai incet / sa alunece cand e pe o portiune abrupta)
 +  * orice alta functionalitate interesanta/​creativa la care va ganditi
  
 ==== Întrebări și răspunsuri ==== ==== Întrebări și răspunsuri ====
egc/teme/2024/01.1730135002.txt.gz · Last modified: 2024/10/28 19:03 by vlad.novetschi
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