Cosa sono i nodi in Godot?

In questo articolo ti spiegherò cosa sono i nodi in Godot e perché sono la base fondamentale per costruire qualsiasi videogioco.

Cosa c’è nell’articolo

Cos’è un nodo?

In Godot, tutto ruota attorno ai nodi. Ogni elemento che compone un gioco — un personaggio, un’interfaccia, un effetto sonoro o una mappa — è rappresentato da uno o più nodi, organizzati in una gerarchia ad albero.

Dunque si può dire che i nodi sono i blocchi di costruzione per dare vita al nostro videogioco.

In breve, un gioco è composto da un albero di scene, ed ogni scena è composta da un albero di nodi.

Questo sistema permette di creare scene modulari, riutilizzabili e facilmente gestibili. Ogni nodo ha uno scopo specifico: Sprite2D ad esempio mostra un’immagine 2D; CollisionShape2D definisce la forma di collisione di un oggetto, un nemico o di un player; Button crea un elemento interattivo per l’interfaccia utente; Camera3D controlla come il giocatore vedrà il gioco sullo schermo.

Cosa rappresentano i colori nell’albero delle scene?

Godot aiuta a distinguere visivamente la tipologia dei nodi grazie ai colori ad essi associati. Esistono quattro tipologie di nodi, distinte con le seguenti colorazioni:

  • Bianco: Classe di nodi generica o di base, utilizzata ad esempio per Timer, AudioStreamPlayer o Node successivamente rinominato per raggruppare una categoria di altri nodi (Enemy ad esempio se si hanno spawn massivi, o le trappole presenti in un quadro come altro esempio);
  • Blu: Classe di nodi esclusivi per lo sviluppo 2D, come Node2D, CharacterBody2D, Sprite2D, ecc.;
  • Rosso: Classe di nodi per lo sviluppo 3D, come Node3D, MeshInstance3D, Camera3D, ecc.;
  • Verde: Classe di nodi per la UI (User Interface), come Control, Label, Button, Pane, TextureRect, ecc.;
  • Viola: Classe di nodi utilizzati per le animazioni, come ad esempio AnimationPlayer e AnimationTree.
Colori dei nodi in Godot

Questa distinzione visiva è utile soprattutto nei progetti complessi, dove ci si ritrova a gestire decine o centinaia di nodi. Un nodo base Node2D (blu) può ad esempio essere il contenitore principale di una scena di gioco in 2D, mentre una scena di menu sarà probabilmente costruita con una classe nodo come Control (verde).

Come raggruppare i nodi nelle scene?

Ogni tipologia di nodo ha come riferimento il proprio nodo base, ad esempio CharacterBody2D o RigidBody2D faranno capo a PhysicsBody2D che a sua volta erediterà da CollisionObject2D fino al nodo base Node2D, quest’ultimo in determinate situazioni potrà essere inserito nell’albero scena, rinominato ed utilizzato per raggruppare tutti gli oggetti dello stesso tipo.

Questa strategia può essere utilizzata per ogni tipo di nodo presente nel gioco, e soprattutto quando si generano molti oggetti tramite codice, come nemici, trappole, piattaforme, e che magari successivamente vengono eliminate.

Raggruppamento dei nodi in Godot

Può rivelarsi estremamente utile raggruppare tutti gli oggetti in un contenitore soprattutto in fase di debug, quando il gioco sarà in esecuzione nell’editor di Godot, nell’albero delle scene apparirà una scritta in alto “Remoto”, in quella sezione troveremo i nodi che sono attualmente in esecuzione e dunque potremo monitorare il comportamento del gioco e degli oggetti, se effettivamente vengono generati ed eliminati. Insomma mantenere un certo ordine raggruppando le categorie di oggetti, ci renderà la vita più facile in seguito, specie se il gioco inizia ad avere molti, moltissimi oggetti!

Quali sono le proprietà dei nodi?

Ogni nodo in Godot avrà delle proprietà che potremo personalizzare tramite l’Inspector del nodo, che troveremo a destra nell’editor di Godot. A seconda del nodo selezionato nell’albero delle scene, visualizzeremo proprietà differenti, ad esempio un nodo “Label”, essendo un’etichetta di testo appartenente alla UI, ci farà personalizzare il suo testo, il font e la sua dimensione, e tante altre caratteristiche, utili per creare menu o altre informazioni da visualizzare a schermo durante il gameplay ad esempio. Un nodo come CharacterBody2D ci farà personalizzare proprietà relative al giocatore, alla fisica dello stesso, i suoi layer di collisione e quindi come interagirà col mondo e con altri oggetti di gioco, come nemici e trappole.

Cosa sono i segnali emessi dai nodi?

Determinate tipologie di nodi avranno la possibilità di emettere dei segnali per impostazione predefinita. Tali segnali si potranno collegare a degli script di nostra scelta, dandoci la possibilità di creare delle interazioni uniche tra gli oggetti di gioco, ad esempio un nodo Area2D potrà fornirci un segnale quando un nemico o il player entrano o escono dall’area; quest’Area2D potrebbe essere una zona che attiva un allarme, o la superficie di un pulsante a pavimento, o qualsiasi altra cosa vi venga in mente!

Quello che è fantastico nello sviluppo di videogiochi, forse più dei videogiochi stessi, è che non esiste un’unica strada per fare qualcosa, ma esistono tantissimi modi per risolvere un problema, magari più o meno efficienti, è vero, ma lo spazio alla creatività di certo non ha limiti.

Segnali dei nodi in Godot

Un piccolo esempio dell’utilizzo di un segnale

Un altro esempio potrebbe essere collegare l’Area2D di una trappola a pavimento con lo script degli spuntoni, e magari fornire il segnale ad una funzione da noi creata, func Die(Body) che và ad innescare la “morte” (eliminazione del nodo) del “Body” fornito come parametro alla funzione, immaginiamo che sugli spuntoni presenti sul pavimento possano finirci il giocatore ed i nemici, magari spinti dopo un attacco, il “Body” identificato dal nodo Area2D tramite il suo univoco codice oggetto, sarà successivamente eliminato magari dalla funzione Body.queue_free() presente nella func Die(Body)

Vedremo i segnali più nello specifico in un articolo dedicato che collegherò a questo quando sarà pronto.

Se non lo hai già fatto leggi anche il mio articolo Come creare un videogioco 2D con Godot che contiene informazioni utili su Godot e le sue schermate, colmerà eventuali curiosità in merito a quanto non ho trattato approfonditamente in questo articolo!

Hai già iniziato a usare Godot? Raccontami nei commenti quale nodo hai trovato più utile o difficile da capire e discutiamone insieme!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Torna in alto