This shows you the differences between two versions of the page.
gp:laboratoare:05 [2025/03/30 14:51] maria_anca.balutoiu |
gp:laboratoare:05 [2025/03/30 15:50] (current) maria_anca.balutoiu [Tasks] |
||
---|---|---|---|
Line 2: | Line 2: | ||
Implementarea procedurală de dungeon-uri implică crearea de algoritmi care pot genera în mod autonom modele de dungeon diverse și jucabile. Acest proces include de obicei definirea structurilor camerei, conectarea lor cu coridoare și asigurarea că aspectul general este coerent și navigabil. Pași pentru a putea genera un dungeon: | Implementarea procedurală de dungeon-uri implică crearea de algoritmi care pot genera în mod autonom modele de dungeon diverse și jucabile. Acest proces include de obicei definirea structurilor camerei, conectarea lor cu coridoare și asigurarea că aspectul general este coerent și navigabil. Pași pentru a putea genera un dungeon: | ||
- Definirea structurii dungeon-ului | - Definirea structurii dungeon-ului | ||
- | * **Grid based layout:** Se utilizează un grid, în care fiecare celulă reprezintă o posibilă cameră sau un posibil segment de coridor. | + | * **Grid based layout:** Se utilizează un grid, în care fiecare celulă reprezintă o posibilă cameră sau un posibil segment de coridor. |
- | * **Template-uri pentru camere:** Se utilizează diverse templete-uri de diferite dimensiuni și forme. Aceste template-uri pot fi fie prefabs, fie modele generate procedural. | + | * **Template-uri pentru camere:** Se utilizează diverse templete-uri de diferite dimensiuni și forme. Aceste template-uri pot fi fie prefabs, fie modele generate procedural. |
- Algoritm de poziționare a camerelor | - Algoritm de poziționare a camerelor | ||
+ | * **Random Walk Algorithm:** Se începe dintr-un punct central și se efectuează o cale aleatoare pentru a plasa camere. Această metodă creează modele organice și neliniare. | ||
+ | * **Binary Space Partitioning (BSP):** Se împarte spațiul gridului recursiv în secțiuni mai mici pentru a plasa camere, asigurând o distribuție echilibrată. | ||
- Conectarea camerelor | - Conectarea camerelor | ||
+ | * **Generarea coridorului:** După ce s-au plasat camerele, se generează coridoare pentru a crea conexiuni. Toate camerele ar trebui să fie conectate. | ||
+ | * **Pathfinding:** Se implementează algoritmi precum A* pentru a asigura cele mai scurte și mai logice căi între camere. | ||
- Vizualizarea dungeon-ului | - Vizualizarea dungeon-ului | ||
+ | * Tilemaps pentru 2D | ||
+ | * Instanțiere de prefabs pentru 3D | ||
- Optimizări și Îmbunătățiri | - Optimizări și Îmbunătățiri | ||
- | <hidden> | + | * Occlusion Culling |
- | 1. Definiți structura temniței | + | * Elemente decorative |
- | Aspect bazat pe grilă: Utilizați un sistem de grilă în care fiecare celulă reprezintă o cameră potențială sau un segment de coridor. Acest lucru simplifică logica de plasare și conectare. | + | ==== BSP ==== |
+ | BSP urmează o abordare recursivă de partiționare a spațiului în care o zonă mare este împărțită continuu în secțiuni mai mici. Pașii includ: | ||
- | Șabloane de cameră: proiectați diverse șabloane de cameră de diferite dimensiuni și forme. Aceste șabloane pot fi GameObjects predefinite sau modele generate procedural. | + | - **Inițializarea spațiului.** Se începe cu o regiune dreptunghiulară mare care reprezintă întreaga zonă a dungeon-ului. |
+ | - **Divizări recursive.** Se împarte recursiv spațiul în două subregiuni folosind fie o împărțire verticală, fie orizontală. Se continuă împărțirea până când regiunile ating o dimensiune minimă predefinită. | ||
+ | - **Plasarea camerei.** În fiecare subregiune, se plasează aleatoriu o cameră care se încadrează în spațiu. Camera nu trebuie neapărat să acopere întreaga subregiune, permițând amenajări mai naturale. | ||
+ | - **Conectarea camerelor.** Odată ce camerele sunt amplasate, coridoarele sunt create pentru a le conecta. | ||
- | 2. Algoritmul de plasare a camerei | + | ==== Tasks ==== |
- | + | - Generați procedural folosind BSP un dungeon. | |
- | Algoritmul de mers aleatoriu: Începeți dintr-un punct central și efectuați o plimbare aleatorie pentru a crea căi, plasând camere la intervale. Această metodă creează machete organice și neliniare. | + | - **Bonus.** Generați un dungeon cu minim 3 etaje. |
- | + | ||
- | Binary Space Partitioning (BSP): Împărțiți recursiv spațiul grilei în secțiuni mai mici pentru a plasa camere, asigurând o distribuție echilibrată. | + | |
- | + | ||
- | 3. Camere comunicante | + | |
- | + | ||
- | Generarea coridorului: După ce ați plasat camere, generați coridoare pentru a le conecta. Asigurați-vă că toate camerele sunt accesibile pentru a menține capacitatea de redare. | + | |
- | + | ||
- | Algoritmi Pathfinding: Implementați algoritmi precum A* pentru a asigura cele mai scurte și mai logice căi între camere. | + | |
- | + | ||
- | 4. Vizualizarea | + | |
- | + | ||
- | Tilemaps pentru 2D: utilizați sistemul Tilemap al Unity pentru a reda aspectul temniței în 2D. | + | |
- | + | ||
- | Instanciare prefabricată pentru 3D: Instanciați prefabricate de cameră și coridor într-un spațiu 3D pentru a vizualiza temnița. | + | |
- | + | ||
- | 5. Optimizare și îmbunătățire | + | |
- | + | ||
- | Eliminarea ocluziei: implementați eliminarea ocluziei pentru a optimiza redarea, fără sălii și coridoare care nu sunt în raza vizuală a jucătorului. | + | |
- | + | ||
- | Elemente decorative: adăugați recuzită și decorațiuni în camere pentru a spori atractivitatea vizuală și varietatea. | + | |
- | </hidden> | + | |