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.
Checking the stable version of the documentation...
Informazioni su godot-cpp
godot-cpp sono i binding ufficiali di C++ per GDExtension, gestiti come parte del progetto Godot.
godot-cpp è costruito con il sistema GDExtension, che consente di accedere a Godot in modo quasi identico ai moduli: è possibile usare molto codice del motore nel proprio progetto godot-cpp quasi esattamente così com'è.
In particolare, godot-cpp ha accesso a tutte le funzioni di GDScript e C#, oltre ad alcune funzioni in più accedere più rapidamente ai dati a basso livello o per un'integrazione più profonda con Godot.
Differenze tra godot-cpp e i moduli C++
È possibile utilizzare sia godot-cpp sia i moduli C++ per eseguire codice C o C++ in un progetto Godot.
Entrambi consentono inoltre di integrare librerie di terze parti in Godot. La scelta dipende dalle proprie esigenze.
Vantaggi di godot-cpp
A differenza dei moduli, godot-cpp (e le GDExtension in generale) non richiede di ricompilare il codice sorgente del motore, rendendo più facile distribuire il proprio lavoro. Offre accesso alla maggior parte delle API disponibili per GDScript e C#, consentendo di programmare la logica di gioco con il pieno controllo sulle prestazioni. È ideale se si necessita di codice ad alte prestazioni da distribuire come componente aggiuntivo nella libreria dei contenuti.
Inoltre:
È possibile utilizzare la stessa libreria compilata godot-cpp sia nell'editor sia in un progetto esportato. Con i moduli C++, invece, è necessario ricompilare tutti i modelli di esportazione che si intende utilizzare la loro funzionalità è richiesta in fase di esecuzione.
godot-cpp richiede solo di compilare la libreria, non l'intero motore. Non è come i moduli C++, che sono compilati staticamente all'interno del motore. Ogni volta che un modulo cambia, è necessario ricompilare il motore. Anche con compilazioni incrementali, questo processo risulta più lento rispetto all'uso di godot-cpp.
Vantaggi dei moduli C++
Consigliamo i moduli C++ nei casi in cui godot-cpp (o un altro sistema GDExtension) non sia sufficiente:
I moduli C++ offrono un'integrazione più profonda con il motore. L'accesso tramite GDExtension non è altrettanto profondo quanto quello dei moduli statici.
È possibile utilizzare i moduli C++ per fornire funzionalità in più a un progetto senza dover includere file di librerie native. Questo vale anche per i progetti esportati.
Nota
Se si nota che alcuni sistemi non sono accessibili tramite godot-cpp ma lo sono tramite moduli personalizzati, non esitare ad aprire una segnalazione sul repository di godot-cpp per discutere le opzioni di implementazione per esporre la funzionalità mancante.
Compatibilità tra versioni
Le GDExtension destinate a una versione precedente di Godot dovrebbero funzionare anche nelle versioni minori successive, ma non viceversa. Ad esempio, una GDExtension destinata a Godot 4.2 dovrebbe funzionare perfettamente anche in Godot 4.3, ma una destinata a Godot 4.3 non funzionerà in Godot 4.2.
Per questo motivo, quando si creano GDExtensions, si consiglia di puntare alla versione di Godot più bassa che include le funzionalità di cui c'è bisogno, non la versione più recente. Questo eviterà di dover creare più build per le diverse versioni di Godot.
C'è una sola eccezione a questa regola: le estensioni destinate a Godot 4.0 non funzioneranno con Godot 4.1 e versioni successive (consultare Aggiornamento di GDExtension per 4.1).
Le GDExtensions sono compatibili solo con le build del motore che utilizzano lo stesso livello di precisione in virgola mobile per cui l'estensione è stata compilata. Ciò significa che se si utilizza una build del motore con numeri in virgola mobile a doppia precisione, anche l'estensione deve essere compilata per numeri in virgola mobile a doppia precisione e utilizzare un file extension_api.json generato dalla build personalizzata del motore. Consultare Coordinate di mondi ampi per ulteriori dettagli.
In generale, se si compila una versione personalizzata di Godot, è consigliabile generare un file extension_api.json per le proprie GDExtensions, poiché potrebbe avere alcune differenze rispetto alle build ufficiali di Godot. Per ulteriori informazioni sull'utilizzo di file extension_api.json personalizzati, consultare la sezione build system.