Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Linguaggi di scripting

Questa lezione fornisce una panoramica dei linguaggi di scripting disponibili in Godot. Imparerete i pro e i contro di ogni opzione. Nella prossima parte, scriverete il vostro primo script utilizzando GDScript.

Gli script si collegano a un nodo e ne estendono il comportamento. Ciò significa che gli script ereditano tutte le funzioni e le proprietà del nodo a cui si collegano.

Ad esempio, prendiamo un gioco in cui un nodo Camera2D segue una nave. Il nodo Camera2D segue il suo genitore per impostazione predefinita. Immaginiamo di volere che la telecamera si muova quando il giocatore subisce un danno. Poiché questa funzione non è integrata in Godot, si dovrebbe collegare uno script al nodo Camera2D e codificare il suo movimento.

../../_images/scripting_camera_shake.gif

Linguaggi di scripting disponibili

Godot offre quattro linguaggi di programmazione di gioco: GDScript, C#, e, tramite la tecnologia GDExtension, C e C++. Ci sono altri linguaggi supportati dalla comunità, ma questi sono quelli ufficiali.

È possibile utilizzare più linguaggi in un singolo progetto. Per esempio, in un team, si può programmare la logica di gioco in GDScript, perché è veloce da scrivere, e utilizzare C# o C++ per implementare algoritmi complessi e massimizzarne le prestazioni. Oppure si può scrivere tutto in GDScript o C#. La scelta è personale.

Forniamo questa flessibilità per rispondere alle esigenze di diversi progetti e sviluppatori di giochi.

Quale linguaggio dovrei utilizzare?

Se siete principianti, vi consigliamo di iniziare con GDScript. Abbiamo creato questo linguaggio appositamente per Godot e per le esigenze degli sviluppatori di giochi. Ha una sintassi leggera e semplice e fornisce la più stretta integrazione con Godot.

../../_images/scripting_gdscript.webp

Per C#, è necessario un editor di codice esterno come VSCode o Visual Studio. Sebbene il supporto di C# sia ormai maturo, si trovano meno risorse di apprendimento rispetto a GDScript. Per questo motivo, consigliamo C# soprattutto agli utenti che hanno già esperienza con questo linguaggio.

Analizziamo le caratteristiche di ogni linguaggio , nonché i suoi pro e i suoi contro.

GDScript

GDScript è un linguaggio di programmazione orientato agli oggetti e imperativo e costruito appositamente per Godot. È fatto da e per gli sviluppatori di videogiochi, per risparmiare tempo nella loro creazione. Le sue caratteristiche includono:

  • Una sintassi semplice che porta a file brevi.

  • Tempi di compilazione e di caricamento ultra-rapidi.

  • Integrazione stretta dell'editor, con completamento del codice per i nodi, i segnali e per molte altre informazioni dalla scena a cui è collegato.

  • Tipi di vettore e trasformazione, rendendolo efficace nei calcoli complessi di algebra lineare, indispensabile per i giochi.

  • Supporta più di un thread tanto efficientemente quanto i linguaggi tipizzati staticamente.

  • No tracing garbage collection, as this feature eventually gets in the way when creating games. The engine counts references and manages the memory for you in most cases by default, but you can also control memory if you need to.

  • Gradual typing. Le variabili hanno tipi dinamici per impostazione predefinita, ma si possono usare anche i suggerimenti per i controlli di tipo forte.

GDScript somiglia a Python per quanto riguarda la strutturazione dei blocchi di codice tramite indentazioni, ma in pratica non funziona allo stesso modo. Si ispira a diversi linguaggi, tra cui Squirrel, Lua e Python.

Nota

Perché non usare direttamente Python o Lua?

Anni fa, Godot utilizzava Python, poi Lua. L'integrazione di entrambi i linguaggi richiedeva molto lavoro e presentava forti limitazioni. Ad esempio, il supporto al threading era una grande sfida con Python.

Lo sviluppo di un linguaggio dedicato non ci richiede più lavoro e possiamo adattarlo alle esigenze dei game developer. Siamo ora al lavoro sull'ottimizzazione delle prestazioni e sulle funzionalità che sarebbe stato difficile offrire con i linguaggi di terze parti.

.NET / C#

Dato che il C# di Microsoft è una preferenza per molti sviluppatori di giochi, lo supportiamo ufficialmente. Il C# è un linguaggio maturo con un'enorme quantità di librerie già scritte. Abbiamo potuto aggiungerne supporto grazie a una generosa donazione da Microsoft.

../../_images/scripting_csharp.png

C# è un ottimo compromesso tra prestazioni e facilità di utilizzo, tuttavia bisogna essere consapevoli del suo garbage collector.

Nota

Per creare script in C# è necessario utilizzare l'edizione .NET dell'editor Godot. È possibile scaricarla dalla pagina download del sito web di Godot.

Siccome Godot utilizza .NET 8, in teoria, ogni libreria .NET o framework di terze parti può essere utilizzata in Godot, così come qualsiasi linguaggio di programmazione copatibile con CLI, come F#, Boo o ClojureCLR. Tuttavia, il C# è l'unica opzione .NET ufficialmente supportata.

Nota

Il codice GDScript stesso non viene eseguito così velocemente come il codice C# o C++ compilato. Tuttavia, gran parte del codice di script richiama funzioni scritte con algoritmi veloci nel codice C++ interno al motore. In molti casi, scrivere la logica di gioco in GDScript, C# o C++ non avrà un impatto significativo sulle prestazioni.

Attenzione

I progetti scritti in C# usando Godot 4 non possono essere attualmente esportati per piattaforme web. Per usare C# su tali piattaforme, si consiglia l'uso di Godot 3. Il supporto per piattaforme Android e iOS è disponibile a partire da Godot 4.2, ma tale supporto è sperimentale e si applicano limitazioni.

Vedi anche

Per saperne di più su C#, andare alla pagina basi di C#.

C++ mediante GDExtension

GDExtension permette di scrivere codice di gioco in C++ senza dover ricompilare Godot.

../../_images/scripting_cpp.png

Qualsiasi versione del linguaggio può essere utilizzata, o mescolare diversi compilatori e versioni di questi per le librerie generate, grazie all'utilizzo interno di un'API bridge in C.

GDExtension è la scelta migliore per le prestazioni. Non deve essere per forza utilizzato in tutto il gioco, in quanto altre parti si possono scrivere in GDScript o C#.

Quando si lavora con GDExtension, i tipi, le funzioni e le proprietà disponibili sono strettamente simili all'API vera e propria di Godot in C++.

Riepilogo

Gli script sono file contenenti codice che alleghi a un nodo per estenderne le funzionalità.

Godot supporta ufficialmente quattro linguaggi di scripting, offrendo flessibilità tra prestazioni e facilità d'uso.

È possibile mescolare i linguaggi, ad esempio implementare algoritmi impegnativi con C o C++ e scrivere la maggior parte della logica di gioco con GDScript o C#.