Crea sito

Level Editor 2D per Unity3D

Un altro level editor, perché?

In questo periodo sto sviluppando un semplice Platform 2D per il corso di “Videogame Design and Programming” che sto seguendo al politecnico di Milano, è la prima volta che mi approccio seriamente allo sviluppo di questo genere di videogiochi, che potrebbe sembrare semplice, ma in realtà presenta alcuni ostacoli e criticità che sono alla base dello sviluppo di videogiochi in generale; uno degli elementi critici nello sviluppo di un platform è sicuramente la costruzione dei livelli, bisogna progettarlo in maniera adeguata, piazzare ostacoli nei punti giusti e soprattutto calibrare la distanza tra le piattaforme in maniera che il nostro personaggio sia in grado di saltarle tutte, Unity non offre ad oggi strumenti di default per affrontare il problema della costruzione del livello in maniera specifica, certamente esistono un sacco di level editor di terze parti, sia sull’asset store, che fuori, ma per motivi prettamente auto-didattici, ho deciso di provarne a scrivere uno io che facesse al caso mio, e ve lo voglio presentare nella speranza di collezionare critiche, consigli o suggerimenti e magari impararne qualcosa!

Level Editor

Come funziona?

Innanzi tutto in fase di progettazione volevo assolutamente che il level editor funzionasse in scene view e non in-game, questo per una serie di motivi:

  • Il mio scopo non era quello di creare un level editor da usare dentro al gioco stesso.
  • Se piazziamo le tiles in scene view è come se costruissimo il livello a mano, con il vantaggio che tutti gli elementi presenti nella scena, quando distribuiremo il nostro gioco verranno caricati all’inizio al caricamento del livello.
  • In questo modo, ci possiamo occupare di tutto quello che concerne il level design quando effettivamente si sta costruendo il gioco, dando anche la possibilità, eventualmente, di editare normalmente da “Inspector” tutte le proprietà relative ai singoli tiles, che ne so, colliders, tag, script, ecc.

Il funzionamento di base è molto semplice, il level editor consiste in due script:

  • uno che effettivamente gestisce selezione, inserimento e rimozione di tiles sulla scena.
  • uno che costruisce dinamicamente una GUI sotto l’inspector che offre la possibilità di selezionare i tiles dalla scena tramite semplici pulsanti.

SETUP

Ogni tile è un prefab, che dovremmo opportunamente assegnare da inspector al nostro level editor, ogni prefab può essere assegnato in tre gruppi di oggetti diversi:

  • Sprite singola: se selezionata quella sprite verrà inserita a ogni click del mouse nella scena.
  • Loop sequenziale: si dispongono una serie di tiles in un vettore (sempre da inspector), se selezioniamo il loop invece della sprite singola, l’editor posizionerà le tiles in sequenza leggendo il vettore un elemento per volta, una volta raggiunto il fondo, ricomincerà da capo, utile se vogliamo avere un pattern di tiles ripetuto, ad esempio per la superficie dell’acqua, pattern particolari su muri o pavimenti, ecc.
  • Loop casuale: in questo caso la parola “loop” centra poco, ma l’ho mantenuta per consistenza col concetto di loop sequenziale, l’idea è quella di utilizzare sempre un pool di tiles, da cui però questa volta, il level editor pescherà un tile a caso, molto utile ad esempio, per rendere meno ripetitive zone del livello tipo il terreno sotto la superficie calpestabile.

Inspector Level Editor

Ecco un breve video che mostra come predisporre lo script per la creazione di un livello:

WORKFLOW

Una volta predisposto lo script a dovere, si tratta solo di selezionare, cliccando sul relativo pulsante i singoli tiles o i loop che si desidera utilizzare nella costruzione del livello e, facendo click col pulsante sinistro del mouse sulla scena, si potranno inserire i tiles, che automaticamente si andranno a posizionare allineati alla relativa casella sulla griglia.

Trascinando il mouse si potranno piazzare più velocemente tiles dello stesso tipo o loop; infine con mouse destro si potranno rimuovere tiles indesiderati.

Ecco anche un esempio di workflow tipico, una volta configurato lo script.

Link utili e ringraziamenti

Questo è semplicemente un post di presentazione, il tool è ancora un work in progress, per cui, come al solito, segnalazioni, domande, suggerimenti, consigli ed eventuali pull request su github sono bene accette.

Vi metto il link al repository su github contente il codice completo del level editor e una scena di demo:

Repository GitHub

Infine volevo ringraziare e citare i membri del team con cui sto sviluppando il gioco al politecnico, per avermi permesso di pubblicare questa parte del progetto a cui stiamo lavorando:

  • David Lorenzi – LinkedIn
  • Elisabetta Micucci – LinkedIn
  • Arianna Miglietta
  • Fabio Venuto

, ,

No comments yet.

Lascia un commento

Powered by WordPress. Designed by WooThemes