This shows you the differences between two versions of the page.
ppbg:tema:2023 [2023/11/20 12:46] 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 tastatura, se poate controla ce de-al doilea personaj similar ca in situatia celui initial. Se folosesc sagetile de la tastatura pentru deplasare si tasta 0 din zona numerica 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 77: | Line 73: | ||
* Desenare geometrie ce conține o curbură - 0.3p | * Desenare geometrie ce conține o curbură - 0.3p | ||
* Comportament de joc (0.6p total) | * Comportament de joc (0.6p total) | ||
- | * Comportament de urmarire a personajului de catre camera - 0.1p | + | * Comportament de urmărire a personajului de către cameră - 0.1p |
- | * Control personaj de la tastatura (0.2p total) | + | * Control personaj de la tastatură (0.2p total) |
* Control deplasare personaj - 0.15p | * Control deplasare personaj - 0.15p | ||
- | * Orientare personaj conform directiei de deplasare - 0.05p | + | * Orientare personaj conform direcției de deplasare - 0.05p |
- | * Comportament de urmarire a personajului de catre inamici (0.1p total) | + | * Comportament de urmărire a personajului de către inamici (0.1p total) |
- | * Deplasarea inamicilor catre personaj - 0.05p | + | * Deplasarea inamicilor către personaj - 0.05p |
- | * Orientarea inamicilor catre personaj - 0.05p | + | * Orientarea inamicilor către personaj - 0.05p |
* Comportament de atac al personajului (0.2p total) | * Comportament de atac al personajului (0.2p total) | ||
- | * Detectie si disparitie inamici ce se afla in fata personajului - 0.15p | + | * Detecție și dispariție inamici ce se află în fața personajului - 0.15p |
- | * Creare inamic la o pozitie aleatoare cand un inamic este invins de catre 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) | ||
- | * Animatie continua de deplasare a personajelor si inamicilor - 0.5p | + | * Animație continuă de deplasare a personajelor și inamicilor - 0.5p |
- | * Animatie controlata de deplasarea jucatorului, in momentul in care personajul se opreste din deplasare, se incepe o animatie de intoarcere la cadrul de animatie in care sta pe loc - 0.25p | + | * Animație controlată de deplasarea jucătorului, în momentul în care personajul se oprește din deplasare, se începe o animație de întoarcere la cadrul de animație în care stă pe loc - 0.25p |
- | * Comportament de joc in doi (0.75p total) | + | * Comportament de joc în doi (0.75p total) |
- | * Desenare elemente vizuale mentionate mai sus de 2 ori in 2 porti de afisare diferite (0.6p in total) | + | * Desenare elemente vizuale menționate mai sus de două ori în două porți de afișare diferite (0.6p total) |
- | * Desenare geometrie in cele 2 porti de afisare - 0.1p | + | * Desenare geometrie în două porți de afișare - 0.1p |
- | * Desenare geometrie iluminata pe baza a doua pozitii si directii de vizualizare diferite - 0.2p | + | * Desenare geometrie iluminată pe baza a două poziții și direcții de vizualizare diferite - 0.2p |
- | * Desenare geometrie ce contine o curbura din doua pozitii diferite - 0.1p | + | * Desenare geometrie ce conține o curbură din două poziții diferite - 0.1p |
- | * Desenare geometrie si iluminare a personajului companion in poarta de afisare (0.1p total) | + | * Desenare geometrie și iluminare a personajului companion în poarta de afișare (0.1p total) |
- | * Desenare geometriei personajului companion in poarta de afisare - 0.05p | + | * Desenare geometrie personaj companion în poarta de afișare - 0.05p |
- | * Desenare geometrie iluminata de sursa de lumina punctiforma si de tip spot a personajului companion - 0.05p | + | * Desenare geometrie iluminată de sursa de lumină punctiformă și de tip spot a personajului companion - 0.05p |
* Control pentru 2 personaje diferite - 0.05p | * Control pentru 2 personaje diferite - 0.05p | ||
- | * Comportament de urmarire a camerei pentru fiecare personaj - 0.1p | + | * Comportament de urmărire a camerei pentru fiecare personaj - 0.1p |
===== Detalii de implementare ===== | ===== Detalii de implementare ===== | ||
Line 105: | Line 101: | ||
==== Construcție elemente vizuale ==== | ==== Construcție elemente vizuale ==== | ||
- | Geometria personajul si a inamicilor este identica. Ea este realizata din 6 paralelipipede, ce reprezinta trunchiul, capul, piciorul stang si drept, bratul stang si drept, 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 |}} | ||
- | In imagine, cele 6 componente ale geometriei sunt colorate diferit doar pentru a putea fi identificate cu usurinta. In aplicatia grafica, toata geometria unui personaj sau a unui inamic poate fi desenata cu o singura culoare. | + | <note> |
+ | În imagine, cele 6 componente ale geometriei sunt colorate diferit pentru a putea fi identificate cu ușurință. În aplicația grafică, toată geometria unui personaj sau a unui inamic poate fi desenată cu o singură culoare. | ||
+ | </note> | ||
<note tip> | <note tip> | ||
- | Recomandarea este sa construiti aceasta geometrie din 6 patrate pentru care aplicati o transformare neuniforma de modificare a scarii. | + | Recomandarea este să construiți această geometrie din 6 cuburi pentru care aplicați un lanț de transformări ce conține o transformare neuniformă de modificare a scării și o transformare de translație. |
</note> | </note> | ||
==== Control personaj ==== | ==== Control personaj ==== | ||
- | In situatia in care se utilizeaza framework-ul de laborator, pentru determinarea directiei de deplasare a jucatorului pe baza directiei de vizualizare a camerei observator, se poate utiliza obiectul de tip ''Camera'', dupa cum urmeaza: | + | În situația în care se utilizează framework-ul de laborator, pentru determinarea direcției de deplasare a jucătorului pe baza direcției de vizualizare a camerei observator, se poate utiliza obiectul de tip ''Camera'', după cum urmează: |
<code cpp> | <code cpp> | ||
Line 126: | Line 124: | ||
</code> | </code> | ||
- | Se utilizeaza o proiectie pe planul XOZ a directiei de vizualizare a camerei. Calculele se realizeaza analog si pentru celelalte directii ale obiectului de tip ''Camera''. | + | Se utilizează o proiecție pe planul XOZ a direcției de vizualizare a camerei. Calculele se realizează analog și pentru celelalte direcții ale obiectului de tip ''Camera''. |
=== Orientare personaj === | === Orientare personaj === | ||
- | Pentru a orienta geometria personajului in directia de deplasare, se utilizeaza o matrice de rotatie in jurul axei OY. In situatia in care se cunoaste directia de deplasare, unghiul de rotatie se poate calcula dupa cum urmeaza: | + | Pentru a orienta geometria personajului în direcția de deplasare, se utilizează o matrice de rotație în jurul axei OY. În situația în care se cunoaște direcția de deplasare, unghiul de rotație se poate calcula după cum urmează: |
$$ | $$ | ||
- | unghi = arctan(\frac{directie_x}{directie_y}) | + | unghi = arctan(\frac{directie_x}{directie_z}) |
$$ | $$ | ||
<note tip> | <note tip> | ||
- | Recomandarea este sa utilizati ''atan2'' pentru calcularea arctangentei. | + | Recomandarea este să utilizați ''atan2()'' pentru calcularea arctangentei. |
</note> | </note> | ||
- | ==== Comportament camera observator ==== | + | ==== Comportament cameră observator ==== |
- | In situatia in care se utilizeaza framework-ul de laborator, pentru desenarea geometriei din perspectiva camerei observator se poate utiliza obiectul de tip ''Camera'', dupa cum urmeaza: | + | În situația în care se utilizează framework-ul de laborator, pentru desenarea geometriei din perspectiva camerei observator, se poate utiliza obiectul de tip ''Camera'', după cum urmeaza: |
<code cpp> | <code cpp> | ||
Line 161: | Line 159: | ||
==== Iluminare geometrie ==== | ==== Iluminare geometrie ==== | ||
- | In calculele de iluminare a geometriei trebuie utilizata //componenta ambientala//, //componenta difuza// si //componenta speculara//. Se pot utiliza modelele de iluminare deja analizate. Daca se doreste, se poate inlocui calculul de iluminare pentru oricare din cele 3 componente cu un alt model de iluminare ce ofera rezultate vizuale superioare :) . In situatia aceasta se considera bonus. | + | Î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 in spatiul lumii === | + | === Transformarea vectorului normal în spațiul lumii === |
- | In situatia in care transformarea de modelare contine o transformare neuniforma de modificare a scarii, trecerea vectorului normal din spatiul obiectului in spatiul lumii se realizeaza dupa cum urmeaza: | + | Î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 183: | Line 181: | ||
<note tip> | <note tip> | ||
- | * $\vec{N'}$ - vectorul normal in spatiul lumii | + | * $\vec{N'}$ - vectorul normal în spațiul lumii |
- | * $Model$ - matricea transformarii de modelare | + | * $Model$ - matricea transformării de modelare |
- | * $M^t$ - transpusa matricei M | + | * $M^t$ - matricea rezultată după transpunerea matricei M |
- | * $M^{-1}$ - inversa matricei M | + | * $M^{-1}$ - matricea rezultată după inversarea matricei M |
- | * $\vec{N}$ - vectorul normal in spatiul obiectului | + | * $\vec{N}$ - vectorul normal în spațiul obiectului |
</note> | </note> | ||
- | === Surse de lumina de tip spot de la stalpi === | + | === Surse de lumină de tip spot === |
- | Directia de iluminare a surselor de lumina de tip spot din varful stalpilor 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 ==== |
- | Realizeaza curburii obiectelor din lume se realizează la pasul de desenare a obiectelor din scenă. Acest efect se creează prin modificarea componentei y a coordonatelor pentru toate varfurile obiectelor din lume. Procesul este realizat în vertex shader. Componenta y a tuturor varfurilor se modifică după cum urmează. | + | <note tip> |
+ | 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> | ||
+ | |||
+ | Realizeaza curburii obiectelor din lume se realizează la pasul de desenare a obiectelor din scenă. Acest efect se creează prin modificarea componentei y a coordonatelor pentru toate vârfurile obiectelor din lume. Procesul este realizat în vertex shader. Componenta y a tuturor vârfurilor se modifică după cum urmează: | ||
Line 205: | Line 209: | ||
<note tip> | <note tip> | ||
- | * $Pozitie_v$ - poziția în spațiul lume a varfului procesat de vertex shader | + | * $Pozitie_v$ - poziția în spațiul lumii a vârfului procesat de vertex shader |
- | * $Pozitie_{personaj}$ - poziția în spațiul lume a personajului controlat de jucător | + | * $Pozitie_{personaj}$ - poziția în spațiul lumii a personajului controlat de jucător |
- | * $Pozitie_{v_y}$ - componenta y a poziției varfului | + | * $Pozitie_{v_y}$ - componenta y a poziției vârfului |
- | * $factorCurbura$ - un factor ce controlează curbura terenului | + | * $factorCurbura$ - un factor ce controlează curbura geometriei |
</note> | </note> | ||
+ | Factorul de curbură este proporțional cu dimensiunea obiectelor din lume. Pentru demo-ul de mai sus, este utilizat un factor de 0.02. | ||
+ | |||
+ | ==== Detecție eliminare inamici ==== | ||
- | Factorul de curbura este proporțional cu dimensiunea obiectelor din lume. Pentru demo-ul de mai sus este utilizat un factor de 0.02. | + | La apăsarea tastei space, personajul "trage" cu o "armă", așa cum s-a menționat mai sus. Pentru a identifica inamicii care se află pe direcția de deplasare a personajului, la distanță mai mică de 2 unități, se poate folosi o abordare simplă ce oferă rezultate satisfăcătoare. Se utilizează un cerc virtual de rază 1, astfel ca diametrul să fie de dimensiune 2, ce se poziționează cu centrul la distanța 1 față de poziția personajului, pe direcția lui de deplasare. Această abordare este descrisă vizual în imaginea de mai jos. |
- | ==== Detectie eliminare inamici ==== | + | {{ :ppbg:tema:collision.png?300 |}} |
- | La apasarea tastei **space**, | + | Prin utilizarea acestei abordări, este suficient să identificăm toți inamicii ce au poziția în cercul descris mai sus pentru a afla inamicii ce trebuie eliminați din joc. Se consideră pozițiile personajului și ale inamicilor proiectate paralel pe planul XOZ pentru a lucra într-un spațiu 2D. Pentru a verifica dacă o poziție se află în interiorul unui cerc, se verifică daca distanta între poziție și centrul cercului este mai mică decât raza cercului. |
- | ==== Animatii ==== | + | ==== Animații ==== |
- | Geometria personajului si a inamicilor trebuie sa realizeze o animatie continua de deplasare, conform filmuletului de mai jos: | + | Geometria personajului și a inamicilor trebuie să realizeze o animație continuă de deplasare, conform filmulețului de mai jos: |
{{ :ppbg:tema:animation1.gif?600 |}} | {{ :ppbg:tema:animation1.gif?600 |}} | ||
<note tip> | <note tip> | ||
- | Recomandarea este sa realizati aceasta aniamtie dintr-un lant de transformari, in care, pentru a da doar un exemplu, la finalul lantului propriu de transformari a bratului drept se aplica lantul 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> | ||
- | === Animatie de oprire === | + | === Animație de oprire === |
- | Doar pentru personajul controlat de jucator, in momentul in care jucatorul se opreste din miscare, animatia trebuie sa se intoarca inapoi la cadrul de animatie in care personajul sta pe loc. In filmuletul de mai jos se poate observa acest comportament de joc. | + | Doar pentru personajul controlat de jucător, în momentul în care jucătorul se oprește din mișcare, animația trebuie să se întoarcă înapoi la cadrul de animație în care personajul stă pe loc. În filmulețul de mai jos se poate observa acest comportament de joc. |
{{ :ppbg:tema:animation2.gif?600 |}} | {{ :ppbg:tema:animation2.gif?600 |}} | ||
- | ==== Desenarea geometriei in doua porti de afisare ==== | + | ==== Desenarea geometriei în două porți de afișare ==== |
+ | În momentul în care jocul se utilizează în 2, pe ecran se desenează geometria în două porți de afișare cum s-a descris mai sus. Toate elementele vizuale, inclusiv personajul companion și iluminarea cu sursele de lumină proprii personajului companion, trebuie să se deseneze din două perspective diferite, câte una pentru fiecare personaj. De asemenea, curbura geometriei trebuie realizată din poziția personajului din perspectiva căruia se desenează geometria în poarta de afișare. | ||
===== Exemple de funcționalități bonus ===== | ===== Exemple de funcționalități bonus ===== | ||
Line 241: | Line 249: | ||
* Geometrie mai complexă față de cea din cerința de bază pentru elementele vizuale din joc | * Geometrie mai complexă față de cea din cerința de bază pentru elementele vizuale din joc | ||
- | * | + | * Finalizarea comportamentului de joc pentru a avea de indeplinit o misiune si pentru a incheia jocul |
+ | * Animatie de tras cu arma pentru personaj | ||
+ | * Utilizarea unor modelele de iluminare ce ofera rezultate vizuale superioare celor din demo | ||
* Orice aduce îmbunătățiri vizuale jocului | * Orice aduce îmbunătățiri vizuale jocului | ||