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.

To do this we need to add a Label node. Press the «Add Child Node» button at the top left of the scene dock (the icon represents a plus symbol). This button is the main way to add new nodes to a scene, and will always add the chosen node as a child of the currently selected node (or, in an empty scene, as the «root» node).

Nota

In an empty scene (without root node), the scene dock shows several options to quickly add a root node to the scene. «2D Scene» adds a Node2D node, «3D Scene» adds a Spatial node, «User Interface» adds a Control node, and «Custom Node» which lets you select any node (so it is equivalent to pressing the «Add Child Node» button). You can also press the star-shaped icon to toggle the display of your favorited nodes.

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.

Now, to add a label node to this scene you can click on the Custom Node button or the Add Node button at the top. In scenes that aren’t empty you use the add node button to create every child node.

../../_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’albero della scena (box nell’angolo in alto a destra), e le proprietá della Label appaiono nell’Inspector (box in basso a destra).

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 cima (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

And here’s when something funny happens. The file dialog is a special file dialog, and only allows you to save inside the project. The project root is res:// which means «resource path». This means that files can only be saved inside the project. For the future, when doing file operations in Godot, remember that res:// is the resource path, and no matter the platform or install location, it is the way to locate where resource files are from inside the game.

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…