Perché ho scommesso sul Godot Engine

Fin da piccolo, mi sono interessato allo sviluppo di videogiochi: volevo capire come fosse possibile realizzare opere multimediali interattive in grado di emozionare ed influenzare un’intera generazione. Questo mi ha portato ad avvicinarmi a diversi strumenti tecnologici, fino a quando non ho trovato il Godot Engine, tool che mi ha conquistato. Dopo averlo provato, mi sono convinto ad usarlo come strumento principale.

Ormai sono diversi anni che uso Godot e da più di un anno realizzo tutorial sul canale Youtube Crystal Bit.

Con questo post voglio raccontarvi il processo che mi ha portato a scegliere Godot, analizzando gli aspetti positivi e negativi, così da potervi dare delle informazioni di base nel caso siate in dubbio su questo software.

Come sviluppare un gioco?

Per realizzare giochi al giorno d’oggi esistono moltissime strade diverse, ma parlare di tutte queste richiederebbe troppo tempo. Per questo oggi prenderò in considerazione solamente i Game Engine.

Cosa fa nello specifico un game engine?

Un game engine offre funzionalità (relativamente) semplici da utilizzare per creare videogiochi. Se siete videogiocatori consapevoli, avrete sicuramente sentito nominare qualche nome tra Unreal Engine, Unity3D, idTech, Decima, Fox Engine, Source engine e così via.

Ecco, questi strumenti offrono funzionalità di alto livello che gli sviluppatori possono utilizzare per realizzare l’esperienza di gioco. Tra le funzionalità comuni ci sono: gestione della camera, gestione delle collisioni, animazioni, simulazione fisica, effetti particellari, tile map, gestione di suoni, ecc. Per farla semplice, potete pensare ad un game engine come un software simile a RPG Maker o Super Mario Maker, ma senza le limitazioni che questi programmi hanno.

Super mario maker

La scoperta di Godot

Un giorno, nel 2016, stavo leggendo Phoronix per vedere le news del mondo open source.

Una notizia cattura la mia attentionze: si tratta della release 2.0 di di un game engine chiamato Godot.

Apro la notizia e scopro che si tratta di un engine open source (licenza MIT) disponibile per Windows, OSX e… anche Linux!

Lo scarico sul mio notebook dell’epoca, un Acer 5750G (4GB di RAM, CPU i7 2630 QM, Nvidia 540M) con Linux Mint Cinnamon edition e comincio a provarlo. Apprezzo fin da subito le sue qualità: leggero e facile da usare. Motori 2D e 3D separati (non come Unity dove si è obbligati ad usare il motore 3D anche per giochi 2D). Scripting semplice con un linguaggio (GDScript) ispirato a Lua e Python.

Quando si va ad esportare il gioco, è possibile scegliere diverse piattaforme: PC (Windows, Linux, OSX), mobile (iOS e Android), web (HTML5, webassembly).

Documentandosi online si trovano anche indicazioni sul fatto che Godot supporta anche le console PS4, Nintendo Switch ed Xbox One. Queste però non sono supportate dalla versione open source che per motivi legali (contratti di NDA che le software house fanno sottoscrivere) non può incudere il codice proprietario per integrare l’engine con il software delle console.

Prima di scoprire Godot, avevo già provato varie librerie e game engine tra cui: SFML, Allegro, libGDX, Phaser, Blender Game Engine, Unreal Engine e Unity. Nessuna di queste tecnologie mi aveva mai convinto a pieno (evito di dilungarmi sulle motivazioni).

Come è possibile quindi che un engine così giovane risulti così competitivo?

La risposta sta nel fatto che Godot non è affatto così giovane come sembra, infatti ha avuto un lungo periodo (15 anni) nel quale è stato un prodotto utilizzato privatamente dagli sviluppatori originali. Il versionamento per come lo conosciamo noi attualmente (Godot v1.0, v2.0, v3.0, …) è cominciato con la release open source che è avvenuta nel Dicembre 2015.

Se siete interessati, potete approfondire la storia di Godot da questo post blog di Juan Linietsky, lo sviluppatore principale del progetto.

Perché ho scommesso su Godot

Come ho detto poco su, con Godot mi sono trovato bene fin dall’inizio ma questa non deve essere l’unica motivazione per affidarsi ad uno strumento. D’altronde non basta una settimana di prove per decidere di affidarsi ad un engine per gli anni a seguire.

All’inizio è quindi stata una vera e propria scommessa. Con la versione 2.0 l’engine offriva un’ottimo renderer 2D basato su OpenGl, ma la parte 3D era molto indietro rispetto ai motori proprietari (nota: la situazione è migliorata notevolmente con la versione 3.0, se siete interessati date un’occhiata al post ufficiale della release).

3D rendering example

Questo per me era un rischio calcolato

in quanto volevo concentrarmi principalmente sul 2D per poter apprendere tutte le basi prima di spostarmi sul 3D. Godot in quel momento offriva esattamente tutto ciò di cui avevo bisogno: uno strumento leggero, semplice, che mi permettesse di iterare velocemente sui miei prototipi. Di fatto è stato un ottimo strumento didattico, il quale mi ha trasmesso un insieme di buone pratiche che ho potuto utilizzare anche in altri contesti.

Ad esempio, l’utilizzo di Scene e Nodi permette di avere una buona organizzazione di progetto e riusabilità degli oggetti di gioco che si realizzano. Di fatto progettare la struttura e la comunicazione tra di essi è molto simile a quanto si fa nel paradigma di programmazione orientata agli oggetti.

Un altro esempio sono i Segnali, di fatto un’implementazione dell’Observer pattern con il quale si possono inviare eventi e dati da un punto del codice ad un altro senza aggiungere dipendenze. Questo concetto è utilizzato non solo in Godot ma anche nel game framework Phaser, oppure nelle librerie grafiche desktop Qt o ancora nel framework web Django.

Quali sono gli aspetti negativi?

L’aspetto forse più critico è che nessun gioco famoso o AAA è stato realizzato con il Godot Engine, per questo molte compagnie ancora guardano con diffidenza questo strumento. Questo porta ad avere poche compagnie (e posti di lavoro) che richiedono Godot come competenza.

In realtà le cose stanno cambiando, sopratutto leggendo il resoconto della GDC 2019 dove viene messo in risalto il fatto che:

it seems at this point a majority of the industry has heard of Godot. Most of those we casually talked to definitely had heard of it and many expressed interest in developing games with it in the future.

Un altro aspetto da considerare è che non esistono ancora moltissimi libri, plugin e risorse su Godot, ma anche in questo caso la situazione sta migliorando notevolmente. D’altronde state leggendo questo articolo su un sito web completamente Italiano dedicato a questo engine!

Conclusioni

In questi ultimi anni Godot si è distinto come il miglior game engine open source, andando a rappresentare una valida alternativa ad altri engine molto più maturi. La community è attiva, sana e aperta ad aiutare i nuovi utenti, inoltre il progetto è in ottima salute, affermazione basata su due dati disponibili pubblicamente.

Il primo è il numero di contributi sul repository Github, dove decine di sviluppatori creano pull request e bug report. Tra questi ci sono anche diversi ragazzi Italiani che fanno parte di questa community!

Il secondo punto riguarda le donazioni che permetteono al progetto di investire sulla sua crescita: su Patreon arrivano circa $11’000 mensili ed inoltre ci sono anche donazioni occasionali, principalmente da Microsoft e Mozilla.

Quindi se volete cominciare a sviluppare videogiochi, non posso fare altro che consigliarvi di scaricare gratuitamente Godot e provare qualcuna delle demo ufficiali così potrete valutare voi stessi la bontà di questo tool.

-Davide “DavCri” Cristini