La mia tesi tratta la generazione di un mondo tramite PCG e una simulazione sui vari cambiamenti nel tempo che possono accadere.
La tesi è stata divisa in 3 parti per definire delle milestone:
- generazione del mondo tramite l'uso degli algoritmi di Voronoi/Lloyd e l'uso di Perlin e Octave noise
- generazione di eventi atmosferici e loro impatto nel tempo
- generazione di risorse e entità (aggressive e pacifiche) e sviluppo nel tempo (pathfinding, morte, consumo di risorse)
La generazione di contenuti in maniera procedurale è una tecnica molto utilizzata dai gamedev, in quanto consente agli sviluppatori di avere un gran numero di contenuti, o comunque ore di gioco, da un unico set-up iniziale.
Esempi di PCG e possibile trovarli in giochi come:
- Civilization
- Minecraft
- The binding of isaac
- etc...
Parte 1: Generazione di un mondo
Ho iniziato la mia tesi con l'utilizzo degli algoritmi di Voronoi e Lloyd.
L'algoritmo di Vonori genera tramite dei punti un poligono collegato al punto. Voronoi genera dei poligoni irregolari da dei punti dati in input. Voronoi calcola il poligono in base alla distanza dal punto preso in input.
Come si può vedere dall'immagine qui sopra tutti i punti nei poligoni generati saranno più vicini al punto di Voronoi presente nel poligono che a qualsiasi altro punto.
Software e librerie
- Unity
- Libreria per Voronoi e Lloyd (https://github.com/PouletFrit/csDelaunay)