Nel precedente articolo abbiamo visto cos'è e a cosa serve un game engine e, in particolare, quali sono le caratteristiche di Godot. Se siete arrivati a questo punto, dovreste aver scaricato il software e preparato le cartelle/directory l'ambiente di lavoro. Nella cartella di installazione di Godot bisogna fare doppio click sull'eseguibile del motore per aprire l'ambiette di sviluppo. Ad esempio, per la versione 4.4 facendo doppio click su:
- Godot_v4.4-stable_win64.exe apre l'interfaccia grafica (GUI, Graphical User Interface) di Godot;
- Godot_v4.4-stable_win64_console.exe ha l'identico effetto del precedente, aggiungendo una piccola console dietro la GUI, ossia una finestrella testuale dove vengono visualizzati eventuali messaggi di errore dell'ambiente.
Mandando in esecuzione uno dei due eseguibili entreremo nell'ambiente di sviluppo.
Benvenuti nell'ambiente di sviluppo di Godot
Verrà aperto l'ambiente di sviluppo integrato (IDE, Integrated Development Environment) di Godot, da cui gestire ogni aspetto dei giochi che realizzeremo. Per impostazione predefinita, la GUI eredita la lingua del sistema operativo in uso.
La lingua della UI, si può decidere con il pulsante in alto a destra <IMPOSTAZIONI>. La mia scelta è stata di impostare l'Inglese, poiché le migliori risorse per imparare (guide, tuorial, libri o altre risorse on-line) sono in Inglese. Sebbene la cosa possa non renderci felici, è conveniente farlo per avere uniformità della UI con le risorse on-line che potremmo aver bisogno di consultare.
Per cambiare lingua premere <IMPOSTAZIONI>, selezionare en [English] nella finestra pop-up, ed infine premere il pulsante <RIAVVIA ORA>.
La finestra che abbiamo a video è il Project Manager, il gestore dei progetti di gioco.
Progetti
In Godot un progetto rappresenta un videogame completo. Un progetto consiste in una cartella/directory contenente tutti i file necessari al gioco. Ogni volta che vogliamo creare un nuovo gioco, dobbiamo creare un nuovo progetto.
Possiamo creare quanti progetti vogliamo, ciascuno dei quali sarà confinato nella sua cartella/directory. L'isolamento dei progetti in cartelle separate consente di creare piccoli mini-progetti temporanei per funzionalità specifiche. Ad esempio, possiamo creare un mini-progetto per testare come funziona l'inventario di oggetti posseduti da un personaggio; una volta che le funzionalità dell'inventario saranno state completate e testate, si potrà trasferire il codice di programmazione nel videogame in cui si necessita dell'inventario.
Nella finestra principale del Project Manager possiamo vedere una lista di tutti i progetti creati fino a quel momento (se non avete mai creato un progetto la lista sarà vuota). Si può scegliere di aprire un progetto creato in precedenza facendo doppio click su di esso, oppure si può scegliere di creare un nuovo progetto.
CREAZIONE DI PROGETTI
Per creare un nuovo progetto:
- premere il pulsante <Create New Project> (o in alternativa <+ Create>);
- nella finestra pop-up che si aprirà, inserire il nome del progetto nel campo Project Name. Date al progetto un nome significativo, vi aiuterà a ricordare di che progetto si tratta, evitate nomi generici come prova-1 o progetto-1. Per questo esempio è stato scelto il nome hello-Godot;
- fare click sul pulsante <Browse> e navigate fino alla cartella dove avete deciso di memorizzare i vostri progetti (nell'esempio F:/GODOT-PRJ/), selezionatela con un singolo click e premete il pulsante <Select This Folder>. Il campo Project Path risulterà essere F:/GODOT-PRJ/hello-godot ossia verrà creata automaticamente la cartella hello-godot in F:/GODOT-PRJ/ (notate come si usa la barra "/" non quella retroversa "\" - backslash - tipica di Windows);
- premere il pulsante <Create>.
Dopo qualche secondo verrà mostrata la finestra principale dell'editor di Godot.
La finestra principale
La finestra principale dell'editor è suddivisa in sezioni:
- Viewport: è la sezione centrale e rappresenta la parte del gioco su cui si sta lavorando. Il viewport può visualizzare due tipi di dati che riguardano il progetto:
- gli elementi grafici che rappresentano una scena bidimensionale (2D) o tridimensionale (3D)
- gli script in linguaggio GDScript, ossia il codice di programmazione relativo ad un determinato oggetto di gioco.
- Workspace: è la sezione nella parte superiore centrale della finestra dell'editor. Serve a selezionare il tipo di spazio di lavoro su cui si deve lavorare, per esempio un gioco 2D o 3D, uno script di programmazione ecc.
- Toolbar (barra degli strumenti): è la sezione nella parte superiore dell'editor, posizionata tra le sezioni Workspace e Vieport. Contiene strumenti utili a lavorare su un determinato workspace. Per esempio per un workspace 2D o 3D contiene pulsantini per selezionare, muovere, ruotare e ridimensionare gli oggetti a schermo.
- Playtest buttons (bottoni di prova del gioco): è una piccola barra (situata nella parte superiore destra) contenente pulsanti di test, che consentono di avviare, mettere in pausa o fermare il gioco su cui si sta lavorando o una specifica scena (sul concetto di scena torneremo tra poco).
- Dock (o Tab): sono pannelli posizionati nelle sezioni laterali della finestra dell'editor. Si tratta di pannelli che mostrano risorse specifiche, in particolare:
- Scene dock (nella parte sinistra della UI): in Godot un progetto è costituito da scene (ad esempio una schermata di gioco) e nodi (gli elementi all'interno della schermata di gioco). Questo dock mostra la gerarchia di nodi in una determinata scena.
- Inspector Dock (nella parte destra della UI): è un'area che mostra informazioni relative al nodo selezionato in una scena, per esempio la posizione di un'immagine che rappresnta un giocatore.
- FileSystem Dock: mostra tutti i file e gli asset di gioco (gli asset sono risorse come le immaginii grafiche, i suoni ecc.). Per impostazione predefinita contiene un'immagine con il logo di Godot (in figura icon.svg, il logo in formato Scalable Vector Graphics). In questo dock si possono creare cartelle e aggiungere file, per esempio le immagini per l'animazione dei personaggi.
- Una serie di pannelli (nella parte inferiore della UI) con strumenti utili allo sviluppo:
- pannello Output, dove vengono visualizzati in forma testuale i cambiamenti fatti nella UI oppure i messaggi di errore;
- pannello Debugger che aiuta a catturare e gestire eventuali bug (difetti o malfunzionamenti) o errori a tempo di esecuzione (runtime errors);
- altri pannelli con finalità facilmente intuibili dal loro nome (Audio, Animation, Shader).
Scene, nodi e script
In Godot un progetto è formato da una o più scene. Ad esempio, una scena può definire una schermata di gioco, un'altra scena un singolo livello di gioco, un'altra scena la mappa del gioco. Una singola scena è costituita da uno o più nodi.
I nodi sono i "mattoncini" con cui si costruiscono i giochi. Un nodo è un oggetto che offre determinate funzioni utili al gioco e possiede un insieme di proprietà che permettono di configurarlo. Ad esempio, un nodo puà mostrare un'immagine o riprodurre un'animazione. I nodi contenuti in una scena sono organizzati in una struttura ad albero: in un albero un nodo può avere qualunque numero di figli (i figli sono nodi a loro volta), ma ciascun figlio può avere un solo genitore. In definitiva, un gruppo di nodi organizzati in una struttura ad albero costituisce una scena.
I nodi, e di conseguenza le scene, sono strumenti molto potenti e comprenderli a fondo è necessario per realizzare gli "oggetti" del gioco, tuttavia da soli non possono fare molto. Il compito del programmatore è fornire la logica di gioco, ossia le regole che gli oggetti che compongono il gioco devono seguire. La logica che governa un nodo si realizza collegandogli uno script: uno script è un insieme di istruzioni realizzate con un linguaggio di programmazione apposito, chiamato GDScript (a partire da Godot 4.4 è possibile usare anche il C#).
La prima scena: Hello Godot!
Per creare l'aspetto visuale di un gioco bisogna creare almeno una scena e poi personalizzarla aggiungendo (almeno) un nodo. Per creare una scena usiamo lo Scene Dock (in alto a sinistra).
Creiamo una scena bidimensionale premendo su <2D Scene> che rappresenta il nodo radice (root node) della scena. Godot ora mostrerà il nuovo nodo (Node2D) creato nello Scene Dock, una croce nel Viewport che rappresenta il nodo creato, e le proprietà configurabili del nodo nell'Inspector Dock.
NOTA BENE: un Node2D è un'area bidimensionale all'interno della finestra di gioco, ma in generale non è l'intera finestra e, al punto in cui siamo arrivati si tratta di un'area vuota posizionata in alto a sinistra in quella che sarà la finestra di gioco.
AGGIUNGERE UN'IMMAGINE
Per visualizzare un'immagine nel Node2D appena creato bisogna aggiungere un nodo figlio che rappresenta l'immagine stessa. I passi da fare sono i seguenti:
- selezionare (con un click del tasto sinistro del mouse) il Node2D nello Scene Dock;
- premere sull'icona Add Child Node (il tasto + in alto a sinistra nello Scene Dock). Nella finestra pop-up che compare inserire sprite: verrà mostrata una scelta più ristretta di opzioni selezionabili;
- fare doppio click su Sprite2D: nello Scene Dock verrà mostrato il nodo figlio nella gerarchia ad albero che rappresenta la scena. Sprite2D in Godot è un oggetto che rappresenta un'immagine e possiede delle proprietà che si possono configurare: selezionandolo nello Scene Dock con un singolo click, l'Inspector Dock mostrerà le proprietà configurabili.
- La proprietà Texture nell'Inspector Dock è quella che permette di selezionare il file immagine: fare click su <empty> e selezionare (in basso) <Load>. Si apre una finestra pop-up da cui è possibile navigare nel file-system del progetto. Per impostazione predefinita ci troviamo nella directory radice contenete l'immagine con il logo di Godot icon.svg che vedremo a video: basta fare doppio click su tale immagine per collegarla all'oggetto Sprite2D. Ora il Viewport visualizzerà il logo posizionandolo esattamente al centro della Scene 2D di cui lo Sprite2D è un nodo figlio.
- Salviamo la scena appena creata: dal menù Scene selezionare Save Scene. Per impostazione predefinita, al file che memorizza le impostazioni della scena viene dato il nome node_2d.tscn (si può dare un nome più significativo), infine premere il pulsante <SAVE>. In Godot ogni scena viene registrata in un file con estensione .tscn che apparirà nel FileSystem Dock.
La prima esecuzione
Abbiamo creato la prima scena, una semplice schermata in cui ci aspettiamo di vedere la faccina con il logo di Godot nell'angolo in alto a sinistra. Per eseguire un test di gioco usiamo i pulsanti in alto a destra della UI, premendo il bottone <Play>.
La prima volta che si esegue un progetto, verrà richiesto di selezionare la scena principale da eseguire; poiché abbiamo creato un'unica scena, basta premere <SELECT CURRENT>.
Il progetto verrà eseguito in una finestra di DEBUG, come mostrato in figura.
Non è ciò che ci saremmo aspettati di vedere: la finestra di gioco ha una dimensione di 1152x648 pixel, tuttavia viene visualizzata solo la parte in basso a destra (un quadrato di 64x64 pixel) del logo di Godot (che ha una dimensione di 128x128 pixel). Nel prossimo articolo vedremo il perché di questo comportamento.