This shows you the differences between two versions of the page.
ppbg:tema:2023 [2023/11/20 16:54] andrei.lambru |
ppbg:tema:2023 [2024/05/13 08:55] (current) andrei.lambru |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Temă - I.A.J.S. ====== | ====== Temă - I.A.J.S. ====== | ||
* **Lansare:** 20 noimebrie 2023 | * **Lansare:** 20 noimebrie 2023 | ||
- | * **Termen de predare:** Inainte de momentul prezentarii | + | * **Termen de predare:** Înainte de momentul prezentării |
- | * **Termen de prezentare:** Ultima data de prezentare anuntata, nu mai tarziu de ultima zi din semestru | + | * **Termen de prezentare:** Ultima dată de prezentare anunțată, nu mai târziu de ultima zi din semestru |
- | * **Regulament si informatii suplimentare pentru punctarea temei:** [[ppbg:tema:regulament|]] | + | * **Regulament:** [[ppbg:tema:regulament|]] |
* **Notă: Orice informație ce nu a fost acoperită în acest document este la latitudinea voastră!** | * **Notă: Orice informație ce nu a fost acoperită în acest document este la latitudinea voastră!** | ||
- | I.A.J.S. sau //"încă un Alt Joc de Supraviețuire"// va reprezenta subiectul temei pe care o veți avea de implementat :). Cerințele de bază ale temei vor conține doar parțial elementele comune unui astfel de joc: controlul unui personaj de catre jucător, comportament inamici și interacțiune de atac doar de la personaj la inamici. Alte elemente comune, precum comportament bazat pe puncte de viață ale personajului și ale inamicilor, aniamții pentru interacțiunea de atac sau animatii pentru dispariția unui inamic învins rămân la latitudinea voastră și realizarea lor se punctează suplimentar :) . De asemenea, jocul va da posibilitatea controlului simultan a două personaje, de la tastatura. Puteți viziona mai jos un filmuleț demonstrativ cu o aplicație construită pe baza framework-ului de laborator, care acoperă cerințele. | + | I.A.J.S. sau //"încă un Alt Joc de Supraviețuire"// va reprezenta subiectul temei pe care o veți avea de implementat :). Cerințele de bază ale temei vor conține doar parțial elementele comune unui astfel de joc: controlul unui personaj de catre jucător, comportament inamici și interacțiune de atac doar de la personaj la inamici. Alte elemente comune, precum comportament bazat pe puncte de viață ale personajului și ale inamicilor, animații pentru interacțiunea de atac sau animații pentru dispariția unui inamic învins rămân la latitudinea voastră și realizarea lor se punctează suplimentar :) . De asemenea, jocul va da posibilitatea controlului simultan a două personaje, de la tastatură. Puteți viziona mai jos un filmuleț demonstrativ cu o aplicație construită pe baza framework-ului de laborator, care acoperă cerințele. |
- | <hidden> | ||
<html> | <html> | ||
<p style="text-align:center;margin:auto;"> | <p style="text-align:center;margin:auto;"> | ||
- | <iframe width="560" height="315" src="https://www.youtube.com/embed/lpAwLBJB9io?si=9KqM_1WDevfu60XA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> | + | <iframe width="560" height="315" src="https://www.youtube.com/embed/Ui34-oUf6ew?si=3n1Pv5ibkTdP8OpA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> |
</p> | </p> | ||
</html> | </html> | ||
- | </hidden> | ||
<note>Curbura terenului este doar un **efect vizual**. Toate calculele de control ale personajelor, de determinare a direcțiilor de deplasare a inamicilor și de iluminare, împreună cu generarea geometriei tuturor obiectelor din lume se realizează într-un spațiu în care nu se ține cont de curbură.</note> | <note>Curbura terenului este doar un **efect vizual**. Toate calculele de control ale personajelor, de determinare a direcțiilor de deplasare a inamicilor și de iluminare, împreună cu generarea geometriei tuturor obiectelor din lume se realizează într-un spațiu în care nu se ține cont de curbură.</note> | ||
Line 26: | Line 24: | ||
==== Geometrie ==== | ==== Geometrie ==== | ||
- | Lumea de joc va fi compusă dintr-o podea pe care se deplasează personajul controlat de jucător și inamicii. Toată geometria din care este realizat personajul sau inamicii, geometrie ce poate fi identică, este desenata cu aceeași culoare de bază. Fiecare inamic are o culoare aleasă aleator. | + | Lumea de joc este compusă dintr-o podea pe care se deplasează personajul controlat de jucător și inamicii. Toată geometria din care este realizat personajul sau inamicii, geometrie ce poate fi identică, este desenată cu aceeași culoare de bază. Fiecare inamic are o culoare aleasă aleatoriu. |
La distanțe regulate unul de altul, se desenează stâlpi de iluminat. În vârful fiecărui stâlp se află două surse de lumină de tip spot, la mică distanță una de cealaltă. | La distanțe regulate unul de altul, se desenează stâlpi de iluminat. În vârful fiecărui stâlp se află două surse de lumină de tip spot, la mică distanță una de cealaltă. | ||
Line 35: | Line 33: | ||
<note> | <note> | ||
- | Geoemtria personajului va fi desenată în întregime, astfel că putem considera că poziția personajului nu este și poziția observatorului, din perspectiva căreia se desenează geometria. Astfel, considerăm că există un alt observator ce urmărește personajul, similar cu comportamentul unei camere din cinematografie. Din acest motiv, vom utiliza în continuare termenul de **cameră** când ne referim la observatorul din poziția și pe direcția de vizualizare din care se desenează geometria obiectelor. | + | Geoemtria personajului este desenată în întregime, astfel că putem considera că poziția personajului nu este și poziția observatorului, din perspectiva căreia se desenează geometria. Astfel, considerăm că există un alt observator ce urmărește personajul, similar cu comportamentul unei camere din cinematografie. Din acest motiv, vom utiliza în continuare termenul de **cameră** când ne referim la observatorul din poziția și pe direcția de vizualizare din care se desenează geometria obiectelor. |
</note> | </note> | ||
- | Jucătorul va putea controla de la tastatură un personaj. Cu tastele **W**, **A**, **S** și **D** se va putea deplasa personajul de-alungul direcțiilor **față**, **stânga**, **spate** și **dreapta** ale **camerei observator**. Apăsarea simulatană a doua taste, de exemplu tastele W și A rezultă în deplasarea jucătorului de-alungul vectorului compus dintre direcția față și stânga a camerei observator. | + | Jucătorul poate controla de la tastatură un personaj. Cu tastele **W**, **A**, **S** și **D** se poate deplasa personajul de-a lungul direcțiilor **față**, **stânga**, **spate** și **dreapta** ale **camerei observator**. Apăsarea simulatană a două taste, de exemplu tastele W și A rezultă în deplasarea jucătorului de-a lungul vectorului compus dintre direcția față și stânga a camerei observator. În filmulețul de mai jos se poate observa acest comportament pentru controlul personajului. |
- | + | ||
- | În filmulețul de mai jos se poate observa acest comportament pentru controlul personajului. | + | |
{{ :ppbg:tema:control.gif?600 |}} | {{ :ppbg:tema:control.gif?600 |}} | ||
Line 48: | Line 44: | ||
==== Comportament cameră observator ==== | ==== Comportament cameră observator ==== | ||
- | Camera observator se va afla în partea de sus a personajului pe o direcție înclinată față de axa globală OY. Camera urmărește deplasarea personajului și direcția de vizualizare este întotdeauna spre poziția personajului. | + | Camera observator se află în partea de sus a personajului pe o direcție înclinată față de axa globală OY. Camera urmărește deplasarea personajului și direcția de vizualizare este întotdeauna spre poziția personajului. |
==== Comportament inamici ==== | ==== Comportament inamici ==== | ||
Line 56: | Line 52: | ||
==== Comportament atac ==== | ==== Comportament atac ==== | ||
- | Prin apăsarea tastei **space**, jucătorul are opțiunea de a "trage" cu o "armă". Toți inamicii ce se află în fața personajului, mai exact pe direcția lui de deplasare, la o distanță mai mică de 2 unități față de personaj, dispar din joc. În locul fiecărui inamic care dispare, alt inamic apare în locul lui la o poziție aleatoare în lume. | + | Prin apăsarea tastei **space**, jucătorul are opțiunea de a "trage" cu o "armă". Toți inamicii ce se află în fața personajului, mai exact pe direcția lui de deplasare, la o distanță mai mică de 2 unități față de personaj, dispar din joc. În locul fiecărui inamic care dispare, alt inamic apare în locul lui la o poziție aleatorie în lume. |
==== Comportament de joc în doi ==== | ==== Comportament de joc în doi ==== | ||
- | La apăsarea tastei **0 din zona numerică a tastaturii**, //numpad// în limba engleză sau a tastei **enter**, în joc apare un nou personaj ce poate fi controlat de la tastatură. Ecranul se împarte pe lățime în două zone de dimensiuni egale, ca în filmulețul demo de mai sus. Pe fiecare din cele două ecrane se va desena geometria lumii din două perspective diferite, câte una pentru fiecare personaj. | + | La apăsarea tastei **0 din zona numerică a tastaturii**, //numpad// în limba engleză sau a tastei **enter**, în joc apare un nou personaj ce poate fi controlat de la tastatură. Ecranul se împarte pe lățime în două zone de dimensiuni egale, ca în filmulețul demo de mai sus. Pe fiecare din cele două ecrane se desenează geometria lumii din două perspective diferite, câte una pentru fiecare personaj. |
Desenarea geometriei pe fiecare din cele 2 porți de afișare se face identic precum desenarea realizată pentru un singur personaj. Singura diferență este dimensiunea porții de afișare. Desenarea lumii din perspectiva personajului inițial se realizează în poarta de afișare din partea stângă, iar desenarea pentru al doilea personaj se realizează în poarta de afișare din dreapta. Cel de-al doilea personaj are o culoare diferită fața de primul. | Desenarea geometriei pe fiecare din cele 2 porți de afișare se face identic precum desenarea realizată pentru un singur personaj. Singura diferență este dimensiunea porții de afișare. Desenarea lumii din perspectiva personajului inițial se realizează în poarta de afișare din partea stângă, iar desenarea pentru al doilea personaj se realizează în poarta de afișare din dreapta. Cel de-al doilea personaj are o culoare diferită fața de primul. | ||
- | De la tastatură, se poate controla ce de-al doilea personaj, similar ca în situația celui inițial. Se folosesc săgețile de la tastatură pentru deplasare și tasta 0 din zona numerică a tastaturii sau tasta enter pentru comportamentul de tras. | + | De la tastatură, se poate controla cel de-al doilea personaj, similar ca în situația celui inițial. Se folosesc săgețile de la tastatură pentru deplasare și tasta 0 din zona numerică a tastaturii sau tasta enter pentru comportamentul de tras. |
===== Barem ===== | ===== Barem ===== | ||
Line 86: | Line 82: | ||
* Comportament de atac al personajului (0.2p total) | * Comportament de atac al personajului (0.2p total) | ||
* Detecție și dispariție inamici ce se află în fața personajului - 0.15p | * Detecție și dispariție inamici ce se află în fața personajului - 0.15p | ||
- | * Creare inamic la o pozitie aleatoare când un inamic este învins de către personaj - 0.05p | + | * Creare inamic la o poziție aleatorie când un inamic este învins de către personaj - 0.05p |
* Animații (0.75p total) | * Animații (0.75p total) | ||
* Animație continuă de deplasare a personajelor și inamicilor - 0.5p | * Animație continuă de deplasare a personajelor și inamicilor - 0.5p | ||
Line 105: | Line 101: | ||
==== Construcție elemente vizuale ==== | ==== Construcție elemente vizuale ==== | ||
- | Geometria personajul și a inamicilor poate fi identică. Ea este realizata din 6 paralelipipede, ce reprezintă trunchiul, capul, piciorul stâng și drept, brațul stâng și drept al personajului, conform imaginii de mai jos. | + | Geometria personajului și a inamicilor poate fi identică. Ea este realizată din 6 paralelipipede, ce reprezintă trunchiul, capul, piciorul stâng și drept, brațul stâng și drept al personajului, conform imaginii de mai jos. |
{{ :ppbg:tema:personaj.png?200 |}} | {{ :ppbg:tema:personaj.png?200 |}} | ||
Line 163: | Line 159: | ||
==== Iluminare geometrie ==== | ==== Iluminare geometrie ==== | ||
- | În calculele de iluminare a geometriei trebuie utilizată //componenta ambientală//, //componenta difuză// și //componenta speculară//. Se pot utiliza modelele de iluminare deja analizate. Dacă se dorește, se poate înlocui calculul de iluminare pentru oricare din cele 3 componente cu un alt model de iluminare ce oferă rezultate vizuale superioare :) . Utilizarea unor astfel de modele de iluminare se punctează suplimentar. | + | În calculele de iluminare a geometriei, trebuie utilizată //componenta ambientală//, //componenta difuză// și //componenta speculară//. Se pot utiliza modelele de iluminare deja analizate. Dacă se dorește, se poate înlocui calculul de iluminare pentru oricare din cele 3 componente cu un alt model de iluminare ce oferă rezultate vizuale superioare :) . Utilizarea unor astfel de modele de iluminare se punctează suplimentar. |
- | === Transformarea vectorului normal în spatiul lumii === | + | === Transformarea vectorului normal în spațiul lumii === |
În situația în care transformarea de modelare conține o transformare neuniformă de modificare a scării, trecerea vectorului normal din spațiul obiectului în spațiul lumii se realizează după cum urmează: | În situația în care transformarea de modelare conține o transformare neuniformă de modificare a scării, trecerea vectorului normal din spațiul obiectului în spațiul lumii se realizează după cum urmează: | ||
Line 196: | Line 192: | ||
Direcția de iluminare a surselor de lumină de tip spot din vârful stâlpilor se vor roti continuu. | Direcția de iluminare a surselor de lumină de tip spot din vârful stâlpilor se vor roti continuu. | ||
- | ==== Curbură obiecte din lume ==== | + | ==== Curbură geometrie ==== |
<note tip> | <note tip> | ||
- | Pentru a crea efectul vizual de curbură a geometriei, se utilizează o abordare simplă ce oferă rezultate satisfăcătoare :). Este important de menționat că pentru calculele de iluminare NU se ține cont de calculele de creare a curburii geometriei. | + | Pentru a crea efectul vizual de curbură a geometriei, se utilizează o abordare simplă ce oferă rezultate satisfăcătoare :). |
+ | |||
+ | Rezultatul este doar un efect vizual ce curbează geometria în jurul personajului, astfel că acesta poate ajunge la limita geometriei lumii, altfel spus la capătul ei și să și depășească acest capăt :) . De asemenea, este important de menționat că pentru calculele de iluminare NU se ține cont de calculele de creare a curburii geometriei. | ||
</note> | </note> | ||
Line 234: | Line 232: | ||
<note tip> | <note tip> | ||
- | Recomandarea este să realizați această animație prin utilizarea unui lanț de transformari, în care, pentru a da doar un exemplu, la finalul lanțului propriu de transformări a brațului drept se aplică lanțul de transformari a trunchiului. | + | Recomandarea este să realizați această animație prin utilizarea unui lanț de transformari, în care, pentru a da doar un exemplu, la finalul lanțului propriu de transformări ale brațului drept se aplică lanțul de transformari ale trunchiului. |
</note> | </note> | ||