Un exemplu simplu de generare de nivele este studio nullcode, jocuri, unitate, scripturi

Logica generatorului în astfel de cazuri depinde de sarcină, de exemplu, este necesar să se plaseze obiecte aleatorii pe un sit de o anumită dimensiune sau să se facă un ansamblu de camere de recoltare. În exemplul nostru de implementare a unei generații de niveluri, vom încerca să realizăm un generator de tuneluri / peșteri, ceva de genul asta. Esența următoarelor. Am pregatit prefabricate de diferite sectiuni, in fiecare dintre ele exista un punct de intrare si iesire. Scopul scenariului este "lipirea" punctului de ieșire al unei secțiuni, cu punctul de intrare celuilalt. Asta înseamnă că va fi un coridor lung, aleatoriu, care nu depășește valoarea maximă și care se întoarce într-o direcție sau alta, doar în ordine aleatorie.







Un exemplu simplu de generare de nivele este studio nullcode, jocuri, unitate, scripturi








Aranjarea punctelor pe model:

Un exemplu simplu de generare de nivele este studio nullcode, jocuri, unitate, scripturi


Rețineți direcția axei Z. Acesta este vectorul care vă ghidează. Și după cum puteți vedea în captura de ecran, secțiunile ar trebui să aibă aceeași dimensiune, astfel încât condiționarea întregului câmp să fie împărțită în celule egale.

Apoi, în prefabricate, capturați secțiunea de scenariu:


Aici specificăm punctele copil ale obiectului.

În plus față de principalele prefabricate, veți avea încă nevoie de pornire și terminare. Să presupunem că există cinci camere de început și de sfârșit, scenariul cu începutul va selecta secțiunea de pornire aleatorie, apoi din ea se va construi principalul și la sfârșitul ciclului se va lipi camera finală. Prin urmare, vom crea aceste secțiuni, aceste prefabricate vor fi apoi în matrice separate.

Acum, am prinde pe scena generatorul de script-uri:


În ciuda faptului că specificăm numărul secțiunilor ciclurilor. înainte de a crea un obiect, scriptul face o verificare a prezenței altor obiecte din zonă, dacă acestea există, secțiunea curentă este distrusă și cea finală este pusă la locul ei, ciclul este finalizat. Astfel, lungimea totală a hărții poate fi diferită, adică, din nou, aleatoriu.

Descărcați proiectul demo:

Nu puteți descărca fișiere de pe serverul nostru







Trimiteți-le prietenilor: