Scene e nodi

Introduzione

../../_images/chef.png

Immagina per un attimo di non essere più uno sviluppatore di giochi. Invece, sei un cuoco! Cambia il tuo abito da hipster con un cappello bianco ed un grembiule. Ora, invece di fare giochi, crei nuove e deliziose ricette per i tuoi ospiti.

Allora, come fa uno chef a creare una ricetta? Le ricette sono divise in due sezioni: la prima sono gli ingredienti e la seconda le istruzioni per la loro preparazione. In questo modo, chiunque può seguire la ricetta e assaporare la tua magnifica creazione.

Creare giochi in Godot ti fa sentire più o meno allo stesso modo. Usando il programma si ha l'impressione di essere in cucina. In essa, i nodi sono come un frigorifero pieno di ingredienti freschi con cui cucinare.

Ci sono molti tipi di nodi. Alcuni mostrano immagini, altri riproducono suoni, altri nodi visualizzano modelli 3D, ecc. Ne esistono decine.

Nodi

Ma iniziamo con le basi. I Nodi sono i blocchi fondamentali per creare un gioco. Come menzionato sopra, un nodo può eseguire una varietà di funzioni specializzate. Comunque, qualsiasi nodo ha sempre i seguenti attributi:

  • Ha un nome.
  • Ha delle proprietà modificabili.
  • Può ricevere una chiamata ad una funzione (callback) per eseguire delle azioni ogni frame.
  • Può essere esteso (in modo da dargli più funzionalità).
  • Può essere aggiunto ad altri nodi come figlio.
../../_images/tree.png

Quest'ultimo è importante. I nodi possono avere altri nodi come figli. Quando sono organizzati in questo modo, i nodi diventano un albero.

In Godot, la possibilitá di disporre i nodi in questa maniera diventa uno strumento molto potente per organizzare i progetti. Siccome diversi nodi hanno differenti funzioni, combinarli permette la creazione di funzionalitá complesse.

Non preoccuparti se ciò non ti è ancora chiaro. Continueremo ad occuparci di ciò nei prossimi capitoli. La cosa più importante da ricordare è che i nodi possono essere sistemati in questo modo.

Scene

../../_images/scene_tree_example.png

Adesso che il concetto di nodo è chiaro, il prossimo passo logico è spiegare cosa è una Scena.

Una scena è composta da un gruppo di nodi organizzati in una gerarchia (simile ad un albero). Inoltre una scena:

  • ha sempre un nodo radice (root).
  • può essere salvato su disco e caricato da esso.
  • può essere istanziato (maggiori spiegazioni a breve).

Eseguire un gioco significa eseguire una scena. Un progetto puó contentere varie scene, ma per far partire il gioco una di queste deve essere selezionata come scena principale.

Fondamentalmente, l'editor di Godot é un editor di scene. Contiene molti strumenti per modificare scene 2D e 3D cosí come interfacce utente, ma l'editor é basato sul concetto di manipolare una scena e i nodi che la compongono.

Editor

Aprire il progetto creato in Introduzione all'editor di Godot, o crearne uno nuovo. Questo aprirà l'editor di Godot:

../../_images/empty_editor.png

Come detto prima, creare giochi con Godot é come essere in una cucina, per cui apriamo il nostro frigo e aggiungiamo alcuni nodi freschi al nostro progetto. Inizieremo con un messaggio "Hello World" che mostriamo sullo schermo.

Per fare questo dobbiamo aggiungere un nodo Label. Premi il pulsante "Aggiungi Nodo Figlio" in alto a sinistra del riquadro Scena (il bottone presenta il simbolo +). Questo pulsante è il modo principale per aggiungere nuovi nodi ad una scena ed aggiungerà sempre il nuovo nodo scelto come figlio del nodo selezionato (o, in caso di una scena vuota, come nodo "root").

Nota

In una scena vuota (senza il nodo root), il riquadro Scena mostra diverse opzioni per aggiungere rapidamente un nodo root alla scena. "Scena 2D" aggiunge un nodo Node2D, "Scena 3D" aggiunge un nodo Spatial, "Interfaccia Utente" aggiunge un nodo Control e "Nodo Personalizzato" permette di scegliere qualunque nodo (quindi è equivalente al tasto "Aggiungi Nodo Figlio"). Puoi anche premere l'icona a forma di stella per mostrare i tuoi nodi preferiti.

Notare che questi preset sono qui solo per convenienza e non sono obbligatori per i differenti tipi di scena. Non tutte le scene 3D necessitano di un nodo Spatial come nodo base, come anche non tutte le GUI o scene 2D necessitano di un nodo Control o Node2D come loro nodo base.

Ora, per aggiungere un nodo Label a questa scena puoi cliccare sul tasto Nodo Personalizzato o sul tasto Aggiungi Nodo nella parte superiore della finestra. Nelle scene che non sono vuote si usa il tasto Aggiungi Nodo per creare tutti i nodi figli.

../../_images/newnode_button.png

Questo aprirá la finestra pop-up Crea nodo con all'interno una lista dei nodi che possono essere creati:

../../_images/node_classes.png

Dalla lista seleziona il nodo "Label" per prima cosa. Utilizzare la una ricerca é probabilmente il modo piú veloce:

../../_images/node_search_label.png

E infine, crea la Label. Molte cose accadono quando si preme il tasto Crea:

../../_images/editor_with_label.png

Prima di tutto la scena cambia sull'editor 2D (perché Label é un nodo 2D), quindi la Label appare, selezionata, nell'angolo in alto a sinistra dell'area di visualizzazione.

Il nodo appare nell'editor dell'albero della scena nel dock Scena, e le proprietà della Label appaiono nel dock Ispettore.

Il prossimo passo sará quello di cambiare la proprietá "Text" della Label. Cambiamolo in "Hello World":

../../_images/hw.png

Ok, tutto è pronto per eseguire la scena! Premi il tasto ESEGUI SCENA nella barra in alto (o premi F6):

../../_images/playscene.png

Eee... Oops.

../../_images/neversaved.png

Le scene devono essere salvate per essere eseguite, quindi salva la scena con un nome come Hello.tscn in Scena -> Salva Scena:

../../_images/save_scene.png

E adesso accade qualcosa di buffo. La finestra che mostra i file è una finestra speciale, che ti permette di salvare soltanto all'interno del progetto. La base o radice del progetto è "res://" che significa "cartella delle risorse". Questo vuol dire che i file possono essere salvati solamente all'interno del progetto. In futuro, quando farai operazioni in Godot, ricorda che "res://" è la cartella delle risorse, indipendentemente dalla piattaforma o dal percorso di installazione, questo è il modo per trovare le varie risorse dall'interno del gioco.

Dopo aver salvato la scena ed aver premuto esegui scena di nuovo, il demo "Hello World" dovrebbe finalmente partire:

../../_images/helloworld.png

Successo!

Nota

Se questo non funziona immediatamente e si dispone di un display hiDPI su almeno uno dei monitor, andare a Project → Project Settings → Project Settings → Display → Window quindi attivare Allow Hidpi sotto Dpi.

Configurare il progetto

Ok, é tempo di configurare il progetto. Per ora, l'unico modo per eseguire qualcosa é eseguire la scena corrente. I progetti, peró, possono avere molte scene, per cui una di loro deve essere configurata come scena principale. Questa scena é quella che verrá caricata ogni volta che il progetto sará eseguito.

Questi parametri sono tutti memorizzati all'interno del file project.godot, che é un file di testo nel formato win.ini (per facilitá di modifica). Ci sono dozzine di parametri che puoi cambiare in questo file per modificare l'esecuzione del progetto. Per semplificare questo processo, Godot mette a disposizione una finestra "Impostazioni Progetto" che fa da interfaccia per la modifica del file project.godot.

Per accedere a questa finestra, seleziona il menú Progetto -> Impostazioni Progetto. Provalo ora.

Una volta che la finestra si apre, seleziona la scena principale. Trova la proprietá Application/Run/Main Scene e clicca per selezionare 'Hello.tscn'.

../../_images/main_scene.png

Ora, con questa modifica, quando premi il bottone Play (o F5), questa scena verrá eseguita, indipendentemente da quale sia la scena attiva nell'editor.

La finestra Impostazioni Progetto contiene molte opzioni che possono essere salvate su un file project.godot e i valori predefiniti. Se cambi uno di questi valori un simbolo di spunta compare alla sinistra del nome e significa che quella proprietá verrá salvata nel file project.godot e ricordata.

Inoltre è anche possibile aggiungere opzioni personalizzate e leggerle durante l'esecuzione (il run-time), usando il singleton ProjectSettings.

Continua...

Questo tutorial parla di "scene e nodi", ma finora ci sono stati solo una scena e un nodo! Non preoccuparti, il prossimo tutorial spiegherá piú approfonditamente questo argomento...