La filosofia progettuale di Godot

Ora che vi siete bagnati le mani, parliamo del progetto di Godot.

Ogni motore di gioco è diverso e si adatta alle diverse esigenze. Non solo offrono una serie di caratteristiche, ma il design di ogni motore è unico. Questo porta a diversi flussi di lavoro e modi diversi per formare le strutture dei tuoi giochi. Tutto ciò deriva dalle rispettive filosofie progettuali.

Questa pagina è qui per aiutarvi a capire come funziona Godot, a partire da alcuni dei suoi pilastri fondamentali. Non si tratta di un elenco delle caratteristiche disponibili, né di un confronto tra motori. Per sapere se un motore può essere adatto al tuo progetto, devi provarlo tu stesso e comprenderne il design e i limiti.

Guarda “Scoprire Godot 3, il motore di gioco gratuito <https://youtu.be/4v3qge-3CqQ> se stai cercando una panoramica delle funzionalità del motore.

Progettazione e composizione orientata all’oggetto

Godot abbraccia il design orientato agli oggetti al suo interno con il suo sistema flessibile di scene e la gerarchia dei Nodi, e cerca di stare lontano da rigidi schemi di programmazione per offrire un modo intuitivo per strutturare il tuo gioco.

Per prima cosa, Godot consente di comporre o aggregare scene. È come un prefabbricato annidato: è possibile creare una scena LuceAccesa una scena LanternaRotta che utilizza LuceAccesa. Poi, creare una città piena di LanterneRotte. Cambia il colore di LuceAccesa, salva, e tutte le LanterneRotte della città si aggiornano istantaneamente.

Inoltre, puoi ereditare da qualsiasi scena.

Una scena di Godot può essere un’arma, un personaggio, un oggetto, una porta, un livello, una parte di un livello…. tutto quello che vuoi. Funziona come una classe in codice puro, tranne per il fatto che si è liberi di progettarlo usando l’editor, usando solo il codice, o mescolando e abbinando i due.

È diverso dai prefabbricati che si trovano in vari motori 3D, in quanto è possibile ereditare ed estendere quelle scene. Puoi creare un Mago che estende il tuo Personaggio. Modificare il Personaggio nell’editor e anche il Mago si aggiornerà. Ti aiuta a costruire i tuoi progetti in modo che la loro struttura corrisponda al design del gioco.

image0

Inoltre, nota che Godot offre tanti tipi di oggetti diversi chiamati nodi, ognuno con un suo scopo. Tutti i nodi sono parte di un albero ed ereditano dai loro padri, fino alla classe Nodo. Anche se l’engine ha alcuni componenti, per esempio le forme di collisione, che eccezionalmente non rispettano questa regola.

image1

Lo sprite è un Node2D, un CanvasItem e un Node. Ha tutte le proprietà e le caratteristiche delle sue tre classi madri, come le trasformazioni o la possibilità di disegnare forme personalizzate e renderizzare con uno shader personalizzato.

Pacchetto all-inclusive

Godot cerca di fornire i propri strumenti per rispondere ai bisogni più comuni. Ha uno spazio di lavoro dedicato allo scripting, un editor di animazione, un editor di tilemap, un editor di shader, un debugger, un profiler, la possibilità di caricare a caldo localmente e su dispositivi remoti, ecc.

image2

L’obiettivo è quello di offrire un pacchetto completo per creare giochi e un’esperienza utente continuativa. È ancora possibile lavorare con programmi esterni, purché ci sia un plugin per l’importazione. Oppure è possibile crearne uno, come l’importatore di mappe piastrellate <https://github.com/vnen/godot-tiled-importer>

Questo è anche in parte il motivo per cui Godot offre i propri linguaggi di programmazione GDscript e VisualScript, insieme a C#. Sono progettati per le esigenze degli sviluppatori di giochi e game designer, e sono strettamente integrati nel motore e nell’editor.

GDscript permette di scrivere codice semplice usando una sintassi simile a Python, ma rileva i tipi e offre un auto-completamento statico a livello di linguaggio di programmazione. È anche ottimizzato programmare giochi con tipi integrati quali Vettori e Colori.

Nota che con GDNative, puoi scrivere codice ad alte prestazioni usando linguaggi compilati come C, C++, Rust, o Python (usando il compilatore Cython) senza ricompilare il motore.

image3

VisualScript è un linguaggio di programmazione basato su nodi che si integra bene nell’editor. È possibile trascinare e rilasciare nodi o risorse nel grafico per creare nuovi blocchi di codice.

Tieni presente che l’area di lavoro 3D non presenta tanti strumenti come l’area di lavoro 2D. Avrai bisogno di programmi esterni o componenti aggiuntivi per modificare i terreni, animare personaggi complessi e così via. Godot fornisce un’API completa per estendere le funzionalità dell’editor usando il codice di gioco. Vedi “L’editor Godot è un gioco Godot” sotto.

image4

Un plugin dell’editor di Godot 2 per le Macchine a Stati fatto da kubecz3k. Permette di gestire stati e transizioni in maniera visuale.

Open source

Godot offre una base di codice completamente open source sotto la licenza MIT. Ciò significa che anche tutte le tecnologie fornite devono essere gratuite (come in libertà). Per la maggior parte, sono sviluppati da zero dai collaboratori.

Chiunque può collegare strumenti proprietari per le esigenze dei loro progetti - semplicemente non saranno inclusi nell’engine. Questo può includere Google AdMob, o FMOD. Ognuno di questi può essere invece implementato comeplugin di terze parti.

D’altra parte, un sorgente aperto significa che puoi imparare dall’engine ed estenderne le funzionalità come piú ti aggrada. Puoi anche fare debug dei giochi in maniera semplice, poiché Godot stamperà gli errori con una stack trace, anche se arrivano dall’engine stesso.

Nota

Questo non impatta il lavoro che fai con Godot in nessuna maniera: non ci sono lacci che ti legano all’engine o a qualsiasi cosa tu faccia con esso.

gestito dalla comunità

Godot é fatto dalla sua comunità, per la sua comunità, e per tutti i creatori di giochi là fuori. Sono le necessità degli utenti e le discussioni aperte che guidano le update principali. Le nuove funzionalità dagli sviluppatori principali spesso si focalizzano per prima cosa su ció che beneficierá la maggior parte degli utenti.

Ció detto, anche se una maciata di sviluppatori principali lavora sul core a tempo pieno, il progetto ha oltre 600 contributori al momento. Programmatori volenterosi lavorano su funzionalità di cui potrebbero aver bisogno loro stessi, perció vedrai miglioramenti in tutti gli aspetti dell’engine allo stesso tempo ad ogni major release.

L’editor di Godot è un gioco sviluppato in Godot

L’editor di Godot gira sul motore di gioco. Esso utilizza l’interfaccia propria del motore, può ricaricare codice e scene in maniera veloce quando esegui i test dei tuoi progetti, oppure eseguire codice di gioco nell’editor. Questo significa che tu puoi usare lo stesso codice e scene per i tuoi giochi, o costruire plugin e estendere l’editor.

Questo conduce a un sistema d’interfaccia affidabile e flessibile, dato che esso supporta l’editor stesso. Con lo strumento keyword, puoi eseguire qualsiasi codice di gioco nell’editor.

image5

RPG in a Box é un editor di GDR voxel fatto con Godot 2. Usa gli strumenti dell’interfaccia di Godot per il suo sistema di programmazione basato sui nodi e per il resto dell’interfaccia.

Metti la parola chiave tool in cima a qualsiasi file GDScript e verrá eseguto nell’editor. Questo ti consente di importare ed esportare plugin, creare plugin come editor di livello personalizzati, o creare script con gli stessi nodi e API che usi nei tuoi progetti.

Motori 2D e 3D separati

Godot offre motori di rendering 2D e 3D dedicati. Di conseguenza, l’unità di base per le scene 2D è il pixel. Anche se i motori sono separati, è possibile renderizzare il 2D in 3D, il 3D in 2D, e sovrapporre gli sprite e le interfacce 2D nel tuo mondo 3D.