MGMattia Golino.

Apple Developer Academy · Tesi di laureaCase study

Rob: The Game: livelli generati proceduralmente.

Un FPS con elementi roguelike in cui la struttura dei livelli viene costruita a partire da una griglia di celle. Il mio contributo principale è stato l’algoritmo di generazione casuale dei dungeon, basato su DFS randomizzata e backtracking.

Apple Developer Academy2023Unity · C#
Schermata autentica di gameplay di Rob: The Game, livello normale

Immagine originale di gameplay tratta dalla tesi di laurea, capitolo dedicato al progetto.

Grid + graphModello della mappa
DFSEsplorazione randomizzata
StackBacktracking
01 / Il gioco

Un FPS con struttura roguelike.

Rob: The Game è un doomer shooter in prima persona sviluppato con Unity come progetto dell'Apple Developer Academy e approfondito nella tesi di laurea. Il giocatore attraversa livelli composti da stanze collegate, affronta nemici e boss e raccoglie risorse e oggetti per proseguire la partita.

02 / Algoritmo

Generare un dungeon, non una mappa predefinita.

La mappa viene modellata come una griglia di celle. Le stanze rappresentano i nodi del grafo e i corridoi gli archi che le collegano. L'algoritmo esplora la griglia tramite una Depth-First Search (DFS) con scelta casuale dei vicini e usa uno stack per il backtracking.

Inizializza la board

Crea la griglia, sceglie una cella iniziale e la marca come visitata.

Esplora i vicini

Controlla le celle adiacenti non visitate e ne seleziona una in modo casuale.

Applica il backtracking

Salva il percorso nello stack. Quando non ci sono vicini, torna indietro fino a un punto con nuove possibilità.

Costruisce le stanze

Usa le celle visitate per istanziare i prefab delle stanze e configurare porte e muri.

La tesi descrive anche una prima versione basata su DFS randomizzata e la successiva adozione del backtracking per gestire i vicoli ciechi e riprendere l'esplorazione dai punti ancora disponibili.
03 / Implementazione

Dalla sequenza di celle alla scena Unity.

Il generatore non si ferma alla visita del grafo: trasforma il percorso individuato in una scena composta da GameObject e prefab. La configurazione delle stanze rende visibili le aperture corrette e prepara gli elementi necessari al livello.

DungeonGenerator

Ricerca e costruzione

La logica descritta nella tesi passa attraverso la creazione della board, la ricerca dei vicini, la gestione dello stack e la generazione delle stanze a partire dalle celle visitate.

I metodi citati includono MazeGenerator, CheckNeighbors e GenerateDungeon.

DungeonBehaviour

Topologia delle stanze

Ogni stanza usa array di GameObject per porte e muri. Il metodo UpdateRooms riceve i valori che determinano quali elementi rendere visibili in base ai collegamenti del percorso.

04 / Integrazione

Il dungeon come parte del gameplay.

Il layout generato viene collegato ai sistemi di gioco: posizione del giocatore, minimappa, stanza del boss e distribuzione di oggetti e nemici.

Setup del livello

Spawn e minimappa

La generazione individua una posizione per il giocatore, inizializza la minimappa e disabilita lo spawn dei nemici nella stanza iniziale.

Contenuti dinamici

Boss e oggetti

La stanza del boss viene predisposta accanto all'ultima stanza del percorso. Gli oggetti presenti nelle stanze vengono generati e posizionati in modo casuale.

Il focus di questo approfondimento è il generatore dei dungeon, che rappresenta il contributo personale principale. Le altre meccaniche sono descritte come parti del gioco complessivo.
05 / Contributo

Il mio contributo: generazione procedurale.

Mi sono occupato principalmente dell'algoritmo per la generazione casuale dei dungeon, basato su DFS randomizzata e backtracking. Il case study approfondisce questa parte senza attribuirmi l'intero sviluppo del videogioco.

Responsabilità personale

Ho lavorato sul cuore della generazione dei livelli.

Il contributo riguarda la logica che esplora la griglia, seleziona i collegamenti tra celle e permette di tornare sui propri passi quando un ramo termina. Il risultato è la struttura usata per popolare la scena con stanze, passaggi e contenuti.

Depth-First SearchRandomised neighboursStackBacktrackingProcedural generation
06 / Stack tecnico

Tecnologie e strumenti.

Lo sviluppo del gioco e del generatore si basa su Unity e C#, con componenti dell'engine per la costruzione della scena e il movimento degli agenti.

UnityC#MonoBehaviourGameObjectPrefabCoroutinesInput SystemNavMesh SurfaceNavMesh AgentApple GameKit
Fonte tecnica: tesi di laurea, capitolo 3, in particolare la sezione 3.4 sulla generazione randomica della mappa (pp. 50–58). Le schermate mostrate sono tratte dalla documentazione originale del progetto.