This shows you the differences between two versions of the page.
egc:teme:2022:01 [2022/10/30 20:33] maria_anca.balutoiu [Rațe] |
egc:teme:2022:01 [2022/11/13 11:59] (current) alexandru.gradinaru [Arhivarea Proiectului] |
||
---|---|---|---|
Line 2: | Line 2: | ||
* **Responsabili:** Anca Băluțoiu, Alex Grădinaru, Chris Brandon | * **Responsabili:** Anca Băluțoiu, Alex Grădinaru, Chris Brandon | ||
* **Lansare:** 31 octombrie 2022 | * **Lansare:** 31 octombrie 2022 | ||
- | * **Termen de predare:** 13 noiembrie 2022, ora 23:59 | + | * **Termen de predare:** 16 noiembrie 2022, ora 23:59 |
* **Regulament:** [[egc:teme:regulament|]] | * **Regulament:** [[egc:teme: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ă!** | ||
În cadrul temei 1, veți avea de implementat un joc de tipul Duck Hunt. Pentru inspirație, puteți testa jocul original aici: https://www.duck-hunt.org/. :) | În cadrul temei 1, veți avea de implementat un joc de tipul Duck Hunt. Pentru inspirație, puteți testa jocul original aici: https://www.duck-hunt.org/. :) | ||
+ | |||
+ | De asemenea, puteti viziona un mic demo construit rapid pe baza frameworkului de laborator care acopera cerintele, avand un aspect vizual minimal :). | ||
+ | |||
+ | <html> | ||
+ | <iframe width="560" height="315" src="https://www.youtube.com/embed/eyZwa6lDm14" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> | ||
+ | </html> | ||
==== Rațe ==== | ==== Rațe ==== | ||
Line 51: | Line 57: | ||
==== Vieți ==== | ==== Vieți ==== | ||
- | Jucătorul va porni inițial cu 3 vieți. În momentul în care o rață scapă (jucătorul a ratat să nimerească rața cu toate cele 3 gloanțe), acesta pierde o viață. Numărul de vieți rămase vor fi desenate pe ecran, în colțul stânga sus, sub forma unor cercuri rosii. | + | Jucătorul va porni inițial cu 3 vieți. În momentul în care o rață scapă (jucătorul a ratat să nimerească rața cu toate cele 3 gloanțe), acesta pierde o viață. Numărul de vieți rămase vor fi desenate pe ecran, în colțul stânga sus, de exemplu sub forma unor cercuri roșii. |
==== Gloanțe ==== | ==== Gloanțe ==== | ||
- | La orice moment de timp, jucătorul trebuie să știe câte gloanțe mai are la dispoziție. Pentru asta, în colțul stânga sus (sub numărul de vieți) veți afișa și numărul de gloanțe disponibile în mod similar cu numărul de vieți, sub forma unor dreptunghiuri verzi. | + | La orice moment de timp, jucătorul trebuie să știe câte gloanțe mai are la dispoziție. Pentru asta, în colțul stânga sus (sub numărul de vieți) veți afișa și numărul de gloanțe disponibile în mod similar cu numărul de vieți, de exemplu sub forma unor dreptunghiuri verzi. |
==== Scor ==== | ==== Scor ==== | ||
Pentru fiecare rață împușcată, scorul jucătorului va crește. Acesta va fi și el reprezentat în interfața grafică în colțul dreapta-sus cu ajutorul a două dreptunghiuri: | Pentru fiecare rață împușcată, scorul jucătorului va crește. Acesta va fi și el reprezentat în interfața grafică în colțul dreapta-sus cu ajutorul a două dreptunghiuri: | ||
- | * Un dreptunghi wireframe, care reprezinta nivelul maxim de scor (puteti considera un nivel maxim de scor de 50 sau orice alta valoare >10) | + | * Un dreptunghi wireframe, care reprezintă nivelul maxim de scor (puteți considera un nivel maxim de scor de 50 sau orice altă valoare >10) |
- | * Un dreptunghi solid, albastru, in interiorul celui wireframe, care reprezinta scorul curent | + | * Un dreptunghi solid, albastru, în interiorul celui wireframe, care reprezintă scorul curent |
==== Gameplay ==== | ==== Gameplay ==== | ||
- | Scopul jocului este ca jucatorul sa impuste cat mai multe rate inainte sa ramana fara vieti. Jocul incepe cu un numar de vieti disponibile, dintre care se pierde cate una de fiecare data cand o rata reuseste sa scape fara sa fie impuscata. | + | Scopul jocului este ca jucătorul să împuște cât mai multe rațe înainte să rămână fără vieți. Jocul începe cu un număr de vieți disponibile, dintre care se pierde câte una de fiecare dată când o rața reușește să scape fără să fie împușcată. |
- | Ratele apar cate una singura pe ecran, pe rand, fiecare dupa disparitia (prin evadarea sau impuscarea) celei anterioare. O rata va cadea pe sol cand este impuscata, si va zbura vertical in sus pentru a simboliza evadarea (sunt descrise deja detalii in sectiunile "Rate - Afisare" si "Rate - Miscare"). Ele se misca dupa regulile descrise la sectiunea "Rate - Miscare". Dupa generarea a cate 5 rate, viteza de miscare a acestora va creste si, ca atare, dificultatea jocului va creste. | + | Rațele apar câte una singură pe ecran, pe rând, fiecare după dispariția (prin evadarea sau împușcarea) celei anterioare. O rață va cădea pe sol când este împușcată și va zbura vertical în sus pentru a simboliza evadarea (sunt descrise deja detalii în secțiunile "Rațe - Afișare" și "Rațe - Mișcare"). Ele se mișcă după regulile descrise la secțiunea "Rațe - Mișcare". După generarea a câte 5 rațe, viteza de mișcare a acestora va crește și, ca atare, dificultatea jocului va crește. |
- | De exemplu: daca primele 5 rate se misca la o viteza v0, urmatoarele 5 ar putea avea viteza v1 = v0 + v0 / 5, urmatoarele v2 = v0 + 2 * v0 / 5 si asa mai departe, pentru a avea o modificare incrementala a dificultatii. | + | De exemplu: dacă primele 5 rațe se mișcă la o viteza v0, următoarele 5 ar putea avea viteza v1 = v0 + v0 / 5, următoarele v2 = v0 + 2 * v0 / 5 și așa mai departe, pentru a avea o modificare incrementală a dificultății. |
- | === Trasul cu pusca === | + | === Trasul cu pușca === |
- | Pentru a impusca o rata, jucatorul are la dispozitie 3 gloante care se reincarca de fiecare data cand apare o noua rata. De fiecare data cand acesta face clic pe ecran, se va considera ca un glont a fost tras in acel punct pe ecran si numarul de gloante disponibile va scadea cu 1. Daca punctul de pe ecran (detalii sectiunea "Intersectia glontului cu rata") care a fost impuscat intersecteaza rata, ea va fi considerata impuscata, scorul (detalii sectiunea "Scor") va creste, si rata va cadea pe sol (detalii sectiunea "Rate - Miscare"). | + | Pentru a împușca o rață, jucătorul are la dispoziție 3 gloanțe care se reîncarcă de fiecare dată când apare o nouă rață. De fiecare dată când acesta face clic pe ecran, se va considera ca un glonț a fost tras în acel punct pe ecran și numărul de gloanțe disponibile va scădea cu 1. Dacă punctul de pe ecran (detalii secțiunea "Intersecția glonțului cu rața") care a fost împușcat intersectează rața, ea va fi considerată împușcată, scorul (detalii secțiunea "Scor") va crește și rața va cădea pe sol (detalii secțiunea "Rațe - Mișcare"). |
- | === Intersectia glontului cu rata === | + | === Intersecția glonțului cu rața === |
- | Avand in vedere ca ratele au o forma destul de complexa, ar fi greu de calculat exact ce puncte de pe ecran se intersecteaza cu ele. Asadar, le puteti aproxima sub forma unui dreptunghi in care este incadrata rata (similar figurii de mai jos). Pentru a calcula | + | Având în vedere că rațele au o formă destul de complexă, ar fi greu de calculat exact ce puncte de pe ecran se intersectează cu ele. Așadar, le puteți aproxima sub forma unui dreptunghi în care este încadrată rața (similar figurii de mai jos). Pentru a calcula |
- | coordonatele colturilor acestui patrat, puteti folosi cateva notiuni de geometrie in plan, aplicate in functie de coordonatele la care se afla punctele de pe silueta ratei. | + | coordonatele colțurilor acestui pătrat, puteți folosi câteva noțiuni de geometrie în plan, aplicate în funcție de coordonatele la care se află punctele de pe silueta raței. |
- | Patratul incadrator este mult mai usor de calculat daca toate coordonatele locale ale primitivelor din care este construita rata sunt calculate fata de un punct cat mai apropiat de centrul ratei (detalii sectiunea "Rata - Constructie"). | + | Pătratul încadrator este mult mai ușor de calculat dacă toate coordonatele locale ale primitivelor din care este construită rața sunt calculate față de un punct cât mai apropiat de centrul raței (detalii secțiunea "Rața - Construcție"). |
- | Mai multe detalii despre aproximarea coliziunilor 2D: https://developer.mozilla.org/en-US/docs/Games/Techniques/2D_collision_detection | + | Mai multe detalii despre aproximarea coliziunilor 2D: https://developer.mozilla.org/en-US/docs/Games/Techniques/2D_collision_detection . |
- | Pentru a afla daca mouse-ul se afla in interiorul dreptunghiului incadrator al ratei, trebuie facuta o conversie din coordonate de vizualizare catre coordonatele logice in care rata se plimba pe ecran. Daca va folositi de scheletul laboratorului 3, aceste 2 spatii de coordonate corespund 1:1 intrucat spatiul de desenare este limitat la rezolutia portii de afisare si se poate considera ca pozitia cursorului de mouse este si pozitia sa in coordonate logice. Altfel, va trebui aplicata o transformare similara cu cea fereastra poarta (detaliata tot in laboratorul 3), doar ca inversa. Atentie la corectia coordonatei Y. | + | Pentru a afla dacă mouse-ul se află în interiorul dreptunghiului încadrator al raței, trebuie făcută o conversie din coordonate de vizualizare către coordonatele logice în care rața se plimbă pe ecran. Dacă va folosiți de scheletul laboratorului 3, aceste 2 spații de coordonate corespund 1:1 întrucât spațiul de desenare este limitat la rezoluția porții de afișare și se poate considera că poziția cursorului mouse-ului este și poziția sa în coordonate logice. Altfel, va trebui aplicată o transformare similară cu transformarea fereastră - poartă (detaliată tot în laboratorul 3), doar ca inversă. Atenție la corecția coordonatei Y. |
- | Dupa ce cursorul si dreptunghiul se afla in acelasi spatiu de coordonate, verificarea intersectiei se rezuma la verificarea daca un punct in plan se afla intr-un dreptunghi aliniat cu axele Ox si Oy. Detaliile acestui calcul sunt lasate ca exercitiu pentru student. | + | După ce cursorul și dreptunghiul se află în același spațiu de coordonate, verificarea intersecției se rezumă la verificarea dacă un punct în plan se află într-un dreptunghi aliniat cu axele Ox și Oy. Detaliile acestui calcul sunt lăsate ca exercițiu pentru student. |
- | Inputul de la mouse se poate trata in functia "OnMouseMove" din framework. Aceasta are 4 parametri: mouseX, mouseY, deltaX, deltaY. Primele 2 se refera la pozitia la care se afla cursorul in momentul in care se apeleaza functia, in pixeli. Numerotarea incepe din coltul stanga-sus al ferestrei de vizualizare in (0, 0). Cei 2 parametri din urma se refera la deplasarea exacta (tot in pixeli) a cursorului de la pozitia sa in frame-ul anterior pana la pozitia sa in frame-ul in care a fost apelata functia. De exemplu, daca mouse-ul s-a miscat de la pozitia (1200, 300) la pozitia (1220, 294) in intervalul de la ultimul frame pana la cel curent, vom avea urmatoarele valori: mouseX = 1220, mouseY = 294, deltaX = 20, deltaY = 294. | + | Inputul de la mouse se poate trata în funcția "OnMouseMove" din framework. Aceasta are 4 parametri: mouseX, mouseY, deltaX, deltaY. Primele 2 se referă la poziția la care se află cursorul în momentul în care se apelează funcția, în pixeli. Numerotarea începe din colțul stânga-sus al ferestrei de vizualizare în (0, 0). Cei 2 parametri din urmă se referă la deplasarea exactă (tot în pixeli) a cursorului de la poziția sa în frame-ul anterior pana la poziția sa în frame-ul în care a fost apelată funcția. De exemplu, daca mouse-ul s-a mișcat de la poziția (1200, 300) la poziția (1220, 294) în intervalul de la ultimul frame până la cel curent, vom avea următoarele valori: mouseX = 1220, mouseY = 294, deltaX = 20, deltaY = -6. |
- | Atentie! Aceste valori sunt intregi, aveti grija la tipurile de date daca intentionati sa le impartiti. De asemenea, deltaX si deltaY deja sunt calculate fata de frame-ul anterior. Ca atare, nu mai este nevoie sa ne legam de deltaTimeSeconds pentru a avea o miscare independenta de frame rate. | + | <note>Atenție! Aceste valori sunt întregi, aveți grijă la tipurile de date dacă intenționați să le împărțiți. De asemenea, deltaX și deltaY deja sunt calculate făță de frame-ul anterior. Ca atare, nu mai este nevoie să ne legăm de deltaTimeSeconds pentru a avea o mișcare independentă de frame rate.</note> |
{{ :egc:teme:2022:duck_mouse_t1_2022.png?300 |}} | {{ :egc:teme:2022:duck_mouse_t1_2022.png?300 |}} | ||
- | === Evadarea ratei === | + | === Evadarea raței === |
- | In momentul in care toate cele 3 gloante au fost consumate fara a fi fost impuscata rata, aceasta evadeaza. De asemenea, daca rata nu a fost impuscata timp de un numar de secunde, va evada. In ambele situatii in care rata evadeaza, jucatorul va pierde o viata (detalii sectiunea "Vieti") si nu va primi scorul aferent ratei respective. | + | În momentul în care toate cele 3 gloanțe au fost consumate fără a fi fost împușcată rața, aceasta evadează. De asemenea, dacă rața nu a fost împușcată timp de un număr de secunde, va evada. În ambele situații în care rața evadează, jucătorul va pierde o viață (detalii secțiunea "Vieți") și nu va primi scorul aferent raței respective. |
==== Funcționalități obligatorii (150 puncte) ==== | ==== Funcționalități obligatorii (150 puncte) ==== | ||
- | * Miscare/animatii rata (75p total) | + | * Mișcare/animații rață (75p total) |
- | * Desenare/asamblare figura geometrica rata 15p | + | * Desenare/asamblare figură geometrică rață 15p |
- | * Deplasare activa (deplasare ansamblu rata si animatii aripi) 20p | + | * Deplasare activă (deplasare ansamblu rață și animații aripi) 20p |
- | * Pozitionare si directie initiala 10p | + | * Poziționare și direcție inițială 10p |
* Reflexii 10p | * Reflexii 10p | ||
- | * Impuscat 10p | + | * Împușcat 10p |
* Evadare 10p | * Evadare 10p | ||
* Gameplay (75p total) | * Gameplay (75p total) | ||
- | * Aparitie rate, cate una pe ecran 5p | + | * Apariție rațe, câte una pe ecran 5p |
- | * Incrementare viteza rate 5p | + | * Incrementare viteză rațe 5p |
* Temporizare evadare 5p | * Temporizare evadare 5p | ||
- | * Trasul cu pusca | + | * Trasul cu pușca |
- | * Tintire 20p | + | * Țintire 20p |
- | * Coliziuni rata 20p | + | * Coliziuni rață 20p |
- | * Interfata grafica (functionalitate si afisare) | + | * Interfața grafică (funcționalitate și afișare) |
- | * Vieti 5p | + | * Vieți 5p |
- | * Gloante 5p | + | * Gloanțe 5p |
* Scor 10p | * Scor 10p | ||
==== Exemple de funcționalități bonus ==== | ==== Exemple de funcționalități bonus ==== | ||
- | Orice funtionalitate suplimentara implementata (care nu este inclusa in cerintele obligatorii) poate fi considerata ca punctaj bonus daca este suficient de complexa. Functionlitatile bonus se iau in considerare doar daca functionalitatile obligatorii au fost realizate. | + | <note warning>Orice funționalitate suplimentară implementată (care nu este inclusă în cerințele obligatorii) poate fi considerată ca punctaj bonus dacă este suficient de complexă. Funcționlitățile bonus se iau în considerare doar dacă funcționalitățile obligatorii au fost realizate.</note> |
- | * Scor variabil in functie de viteza ratei si multiplier aplicat pentru numar de rate impuscate consecutiv (killing spree). Este necesara afisarea unui element animat (de ex o forma simpla de romb care se roteste) in momentul atingerii acestui prag. | + | * Scor variabil în funcție de viteza raței și multiplier aplicat pentru număr de rațe împușcate consecutiv (killing spree). Este necesară afișarea unui element animat (de ex o formă simplă de romb care se rotește) în momentul atingerii acestui prag. |
- | * Dupa ce apar 5 rate, se trece la urmatorul nivel: se afiseaza pe ecran un text care ii comunica jucatorului aceasta schimbare si urmatoarele 5 rate (pana la schimbarea din nou a nivelului) se vor misca mai repede. | + | * După ce apar 5 rațe, se trece la următorul nivel: se afișează pe ecran un text care îi comunică jucătorului această schimbare și următoarele 5 rațe (până la schimbarea din nou a nivelului) se vor mișca mai repede. |
- | * Boss fight, care apare de exemplu o data la 10 rate - e o rata mai mare care se misca mai greu si trebuie impuscata de mai multe ori. | + | * Boss fight, care apare de exemplu o dată la 10 rațe - o rața mai mare care se mișcă mai greu și trebuie împușcată de mai multe ori. |
- | * Fiecare rata are o culoare aleatorie (similar cu jocul original) si isi poate schimba directia brusc/random, chiar daca nu atinge marginea ecranului (poate face de exemplu o miscare zig-zag cu temporizare aleatoare). | + | * Fiecare rață are o culoare aleatorie (similar cu jocul original) și își poate schimba direcția brusc/random, chiar dacă nu atinge marginea ecranului (poate face de exemplu o mișcare zig-zag cu temporizare aleatoare). |
- | * Realizarea gazonului de jos in spatele caruia apare rata, astfel incat sa nu apara brusc pe ecran de nicaieri. | + | * Realizarea gazonului de jos în spatele căruia apare rața, astfel încât să nu apară brusc pe ecran de nicăieri. |
- | * Rate mai detaliate/complexe ca geometrie. | + | * Rațe mai detaliate/complexe ca geometrie. |
- | * Crosshair pe mouse si eventual o pusca/arma animata in functie de pozitia cursorului pe ecran (sa fie indreptata/rotita spre cursor). | + | * Crosshair pe mouse și o pușcă/armă animată în funcție de poziția cursorului pe ecran (să fie îndreptată/rotită spre cursor). |
- | * Sistem de tragere animat (gloante vizibile, o mica animatie in momentul in care se atinge rata - de ex sar niste ‘pene’ aproximate in directii aleatorii). | + | * Sistem de tragere animat (gloanțe vizibile, o mică animație în momentul în care se atinge rața - de exemplu sar niște ‘pene’ aproximate în direcții aleatorii). |
* Rațe “speciale” care dau jucătorului anumite abilități (o viață extra, un glonț extra, toate rațele se vor mișca foarte încet pentru câteva secunde). Fiecare astfel de rață va avea o culoare specifică power up-ului pe care îl acordă si va exista un indicator de timp care arata cat timp mai dureaza acea abilitate (de ex o bara similara cu cea de scor, care scade in timp si dispare cand nu mai e valabila abilitatea). | * Rațe “speciale” care dau jucătorului anumite abilități (o viață extra, un glonț extra, toate rațele se vor mișca foarte încet pentru câteva secunde). Fiecare astfel de rață va avea o culoare specifică power up-ului pe care îl acordă si va exista un indicator de timp care arata cat timp mai dureaza acea abilitate (de ex o bara similara cu cea de scor, care scade in timp si dispare cand nu mai e valabila abilitatea). | ||
- | * Animație complexa când moare rata. | + | * Animație complexă când moare rata. |
- | * Posibilitatea de a avea mai multe rate pe ecran in acealasi timp si sistem de gestiune a gloantelor corespunzator/imbunatatit pentru mai multe rate. | + | * Posibilitatea de a avea mai multe rațe pe ecran în același timp și sistem de gestiune a gloanțelor corespunzător/îmbunătățit pentru mai multe rațe. |
==== Întrebări și răspunsuri ==== | ==== Întrebări și răspunsuri ==== | ||
Line 131: | Line 137: | ||
==== Notare ==== | ==== Notare ==== | ||
- | Baremul este orientativ. Fiecare asistent are o anumita libertate in evaluarea temelor (de exemplu, sa dea punctaj partial pentru implementarea incompleta a unei functionalitati sau sa scada pentru hard coding). Acelasi lucru este valabil atat pentru functionalitatile obligatorii, cat si pentru bonusuri. | + | Baremul este orientativ. Fiecare asistent are o anumită libertate în evaluarea temelor (de exemplu, să dea punctaj parțial pentru implementarea incompletă a unei funcționalități sau să scadă pentru hard coding). Același lucru este valabil atât pentru funcționalitățile obligatorii, cât și pentru bonusuri. |
- | Tema trebuie incarcata pe moodle. Pentru a fi punctata, tema trebuie prezentata la laborator. Vor exista laboratoare speciale de prezentare a temelor (care vor fi anuntate). | + | <note warning> |
+ | Tema trebuie încărcată pe moodle. Pentru a fi punctată, tema trebuie prezentată la laborator. Vor exista laboratoare speciale de prezentare a temelor (care vor fi anunțate).</note> | ||
==== Indicații suplimentare ==== | ==== Indicații suplimentare ==== | ||
- | Tema va fi implementata in OpenGL si C++. Este indicat sa folositi framework-ul si Visual Studio. | + | Tema va fi implementată în OpenGL și C++. Este indicat să folosiți framework-ul și Visual Studio. |
- | <note>Pentru implementarea temei, in folderul **src/lab_m1** puteti crea un nou folder, de exemplu **Tema1**, cu fisierele **Tema1.cpp** si **Tema1.h** (pentru implementare POO, este indicat sa aveti si alte fisiere). Pentru a vedea fisierele nou create in Visual Studio in Solution Explorer, apasati click dreapta pe filtrul **lab_m1** si selectati **Add→New Filter**. Dupa ce creati un nou filtru, de exemplu **Tema1**, dati click dreapta si selectati **Add→Existing Item**. Astfel adaugati toate fisierele din folderul nou creat. In fisierul **lab_list.h** trebuie adaugata si calea catre header-ul temei. De exemplu: **#include “lab_m1/Tema1/Tema1.h”**</note> | + | <note>Pentru implementarea temei, în folderul **src/lab_m1** puteți crea un nou folder, de exemplu **Tema1**, cu fișierele **Tema1.cpp** și **Tema1.h** (pentru implementare POO, este indicat să aveți și alte fișiere). Pentru a vedea fișierele nou create în Visual Studio în Solution Explorer, apăsați click dreapta pe filtrul **lab_m1** și selectați **Add→New Filter**. După ce creați un nou filtru, de exemplu **Tema1**, dați click dreapta și selectați **Add→Existing Item**. Astfel adăugați toate fișierele din folderul nou creat. În fișierul **lab_list.h** trebuie adăugată și calea către header-ul temei. De exemplu: **#include “lab_m1/Tema1/Tema1.h”**</note> |
==== Arhivarea Proiectului ==== | ==== Arhivarea Proiectului ==== | ||
<note> | <note> | ||
- | * in mod normal arhiva trebuie sa contina toate resursele necesare compilarii si rularii | + | * În mod normal arhiva trebuie să conțină toate resursele necesare compilării și rulării |
- | * inainte de a face arhiva asigurati-va ca ati curatat proiectul Visual Studio: | + | * Înainte de a face arhiva asigurați-vă că ați curățat proiectul Visual Studio: |
- | * click dreapta pe proiect in **Solution Explorer** -> **Clean Solution** | + | * Click dreapta pe proiect în **Solution Explorer** -> **Clean Solution** |
- | * si stergeti folderul __**/build/.vs**__ (daca nu il vedeti, **este posibil sa fie ascuns**) | + | * Ștergeți folderul __**/build/.vs**__ (dacă nu îl vedeți, **este posibil să fie ascuns**) |
- | * SAU stergeti complet folderul __**/build**__ | + | * În cazul în care arhiva tot depășește limita de 50MB (nu ar trebui), puteți să ștergeți și folderul __**/deps**__ sau __**/assets**__ întrucât se pot adăuga la testare. Nu este recomandat să faceți acest lucru întrucât îngreunează mult testarea în cazul în care versiunea curentă a bibliotecilor/resurselor diferă de versiunea utilizată la momentul scrierii temei. |
- | * in cazul in care arhiva tot depaseste limita de 50MB (nu ar trebui), puteti sa stergeti si folderul __**/deps**__ sau __**/assets**__ intrucat se pot adauga la testare. Nu este recomandat sa faceti acest lucru intrucat ingreuneaza mult testarea in cazul in care versiunea curenta a librariilor/resurselor difera de versiunea utilizata la momentul scrierii temei. | + | |
</note> | </note> | ||