In questa lezione e nelle successive ci concentreremo sulla creazione di una basilare game scene, cioè di una scena di gioco con Unity 3D. Prima di cominciare a lavorare su Unity però, dobbiamo aver ben chiaro in mente che tipo di gioco dobbiamo creare.
Ci sono delle regole d’oro a cui gli sviluppatori neofiti devono attenersi.
Assicurati di avere un’idea che funzioni! Un concept di fondo è necessario per creare un gioco che possa divertire ed intrattenere. Mettersi a sviluppare senza sapere cosa voler fare potrebbe risultare controproducente.
Nessuno di noi giocherebbe un videogioco con un personaggio il cui unico scopo è camminare senza una meta, per sempre… sai che noia! Ti consiglio quindi, prima ancora di aprire Unity, di munirti di carta e penna, sederti ad un tavolo, sorseggiare un tè e lasciare che le idee vengano fuori!
Inizia a realizzare dei prototipi di interfaccia grafica, artwork vari, storyboard ed anche dei bozzetti riguardanti le meccaniche di gioco. Sicuramente ci sarà spazio per dei miglioramenti da apportare durante le fasi più avanzate dello sviluppo, ma avere un punto da cui partire è fondamentale.
A questo punto probabilmente vorrai già aprire Unity e dare inizio allo sviluppo del tuo videogioco. Potresti anche farlo, ma il mio consiglio è quello di ragionare prima sulla logica del gioco e sull’implementazione delle varie funzioni davanti al consueto foglio di carta e tè di cui parlavo poche righe fa.
In questa fase prova ad immaginare le varie funzioni che dovranno essere svolte dai tuoi script e il modo in cui dovranno interagire fra loro. Per quale motivo?
Beh, spesso si inizia a scrivere codice senza aver ben chiaro quali saranno le esatte funzioni di quel determinato script. Se durante le prime fasi dello sviluppo questo potrebbe non essere un problema, all’aumentare degli script e delle funzioni da essi gestite potresti rimanere letteralmente impigliato in una giungla di script, variabili e funzioni di difficile lettura disseminate in un numero eccessivo di script.
Schematizzare per bene il tutto a priori ti permetterà di creare script più efficienti e meno caotici. Creare dei prototipi su carta può sembrare una perdita di tempo, ma ti assicuro che è una di quelle operazioni che semplificherà molto il tuo lavoro!
Per imparare a correre bisogna saper camminare! Non impegnarti nella creazione di videogiochi eccessivamente complessi o che richiedano tempi di sviluppo eccessivi. Il pericolo di perdersi d’animo è sempre dietro l’angolo!
Sviluppare giochi piccoli, semplici ma con meccaniche diverse è fondamentale per chi si trova alle prime armi.
La Game Scene
Chiariti questi punti, mi sembra d’obbligo partire dal gradino più basso, quello che possiamo considerare l’Hello world del mondo dei videogiochi.
Creeremo una semplicicissima area di gioco, al cui interno si troverà una sfera mossa dal giocatore. La sfera dovrà semplicemente raccogliere delle monete all’interno dell’area di gioco!
Ok, non sarà proprio il gioco dell’anno, ma per cominciare la nostra avventura nel mondo del game development andrà benissimo!
Iniziamo quindi creando un nuovo progetto in Unity, e come primissima cosa creiamo un piano all’interno della nostra scena. Spostiamo quindi il piano nell’origine della nostra scena, cioè il punto di coordinate x= 0, y=0 e z=0 (il motivo lo vedremo fra pochissimo).
Adesso il nostro piano si trova esattamente al centro della scena. Perchè possa diventare il pavimento del nostro gioco, bisogna ingrandirlo! Modifichiamo quindi i parametri Scale dentro il nostro componente Transform, ponendo x=3 e z=3.
Attenzione! Un piano è un oggetto che si sviluppa in due sole dimensioni: lunghezza e larghezza; Egli non ha spessore! Quindi modificando il parametro Scale relativo all’asse Y il piano continuerà ad essere piatto!
Con lo standard shader di Unity, un piano è visibile da un solo lato. Una delle sue facce è invisibile! Se imposterete il fattore scale dell’asse Y ad un valore negativo, la sua sola faccia visibile sarà quella inferiore. Questa tecnica viene definita back-face culling, ed è utilizzata per limitare il consumo di risorse hardware eliminando dalla scena le facce delle mesh che non devono essere viste dall’osservatore:
Le pareti di gioco
Per completare la nostra arena di gioco ci serviranno delle pareti! Non vogliamo che il nostro giocatore cada rovinosamente fuori dall’arena di gioco, no?
Le dimensioni di un piano sono normalmente 10 volte superiori rispetto a quelle di un cubo.
Un piano 1×1 copre la stessa superficie di un cubo 10×10. Il piano che stiamo utilizzando nella nostra scena è di dimensioni 3×3, quindi un cubo con un lato di 30 avrà la stessa lunghezza del nostro piano! E qui entra in gioco il motivo per cui abbiamo messo il piano nell’origine della scena.
Infatti, ogni lato disterà dal centro di 15 unità, ed essendo il piano al centro della scena, avremo la possibilità di posizionare le pareti con molta facilità, poiché intuitivamente, le coordinate in cui dovranno trovarsi le nostre quattro pareti saranno (X=15 Y=0 Z=0) ,(X=-15 Y=0 Z=0), (X=0 Y=0 Z=15) e (X=0 Y=0 Z=-15)
Poniamo quindi un cubo all’interno della nostra scena e modifichiamo la sua posizione e dimensione, così da trasformarlo in una parete.
Impostiamo quindi i valori del cubo come segue:
Position: x=0, y=1, z = 15; Rotation: x=0, y=0, z=0; Scale: x=30, y=2, z=1;
Ecco che il cubo verrà spostato a margine del piano!
Duplichiamo adesso la nostra parete (puoi farlo rapidamente premendo Ctrl+D o Cmd+D dopo averla selezionata) e cambiamo la posizione in x=0, y=0, z=-15. Come puoi immaginare, adesso questa parete delimita la parte opposta del piano!
Duplichiamo ancora la parete e, allo stesso modo, creiamo le ultime due pareti mancanti. (Questa volta dovremo modificare il parametro Rotation Y = 90 e poi cambiare rispettivamente il parametro position in x=15, y=1, z=0 e x=-15, y=1 e z=0).
Alla fine dovresti avere qualcosa di simile!
Prima di proseguire è opportuno salvare la nostra scena. Per farlo, basta cliccare “File>Save Scene” dal menù a tendina in alto. Adesso che la nostra scena è stata salvata, essa sarà lì ad attenderci ogni volta che apriremo il progetto, esattamente come l’abbiamo lasciata!
Allo stesso modo, salvando più scene è possibile aggiungere più livelli al nostro videogioco. Fai attenzione: quando ti ritroverai a lavorare su una scena più grande, ricordati di salvarla spesso! Non vorresti perdere tutti i tuoi progressi, no?
Il protagonista del gioco
Adesso che la scena è completa, è ora di creare il nostro personaggio principale.
Inseriamo una sfera al centro della nostra arena, avendo cura di non farla intersecare col piano (altrimenti non potrebbe muoversi!) Le coordinate di posizione x=0, y= 1; z=0 andranno più che bene!
Il nostro protagonista sarà una palla, e come tale dovrà reagire alle forze della fisica! Aggiungiamo il Rigidbody Component alla nostra sfera:
Per il momento è tutto, nella prossima lezione scriveremo alcuni script per far muovere il nostro personaggio (con esso la telecamera) e creeremo delle monete da raccogliere!