Compilarsi Godot…

Prima ancora di iniziare, siamo già finiti fuori tema, giusto? No. L’uso di GDExtension1 passa, necessariamente, dalla compilazione di Godot eseguita direttamente sulla propria macchina, per cui conviene trattare l’argomento sul piano generale. Come funziona GDExtension in soldoni? E’ un trucco abbastanza vecchio. Per liquidarla velocemente, sfrutta l’uso di file esterni che contengono codice eseguibile già compilato: le librerie a collegamento dinamico. Le DLL2 (Dynamic-Link Library), in particolare, fanno parte del mondo Windows e sono nate assieme al sistema operativo, ma esistono altri formati, come ELF3 ( Executable and Linkable Format) che assolvono allo stesso compito in sistemi operativi diversi. Per semplicità, mi riferirò a questi tipi di files sempre come DLL, ma funziona tutto più o meno allo stesso modo in tutti i casi simili.

Altra considerazione: sono un utente di vecchia data di Windows. Il mio primo computer è stato un Commodore VIC20, poi è stata la volta del Commodore 64, poi mi sono passato tutte le versioni si MS-DOS e, infine, tutte quelle di Windows. In breve: ne ho le scatole piene di studiare sistemi operativi… Non me ne vogliano gli utenti di Linux e MacOS. E’ ovvio, dunque, che questo tutorial è incentrato sul mondo Windows e richiede un certo sforzo per essere trasposto altrove. Ad ogni modo, discende direttamente dalla documentazione ufficiale di Godot, a cui ci si può riferire sempre. Il valore aggiunto sta solo in una spiegazione più rilassata e nel fatto che è scritto in italiano.

Prima di entrare nel dettaglio con GDExtension, è il caso di imparare a compilare Godot per conto proprio. Vi tranquillizzo assicurandovi che, nonostante nella realtà dei fatti sia un’operazione discretamente complessa, noi utilizzeremo un approccio abbastanza automatico, lo stesso riportato nella guida ufficiale. In pratica, non studieremo a fondo strumenti come git e SCons, che comunque andremo ad utilizzare. Ci limiteremo, piuttosto, a scopiazzare le istruzioni forniteci direttamente dai creatori di Godot. Il motivo è che occorre fare un po’ di economia: non possiamo imparare proprio tutto, tutto! Qualche volta, conviene concentrarsi sul proprio obiettivo e lasciar correre qualcos’altro…

Serve uno Scoop

Scoop4 è un installer per Windows basato su riga di comando. Si tratta di un programma open-source davvero leggero e facile da utilizzare, che possiede la capacità di scaricare pacchetti software direttamente dalla fonte e renderli subito fruibili. Può essere installato, a sua volta, direttamente da PowerShell di Windows. Lo utilizzeremo per preparare il nostro computer con tutto l’occorrente necessario per compilare Godot. Senza indugiare oltre, quindi, apriamo PowerShell di Windows. Facciamo una verifica inserendo questo comando:

PS C:\> $PSVersionTable.PSVersion

Scopo del codice è di stampare a video la versione della vostra PowerShell, che deve essere almeno la 5.1 per essere compatibile con Scoop, cosa molto probabile visto che il suo rilascio risale al 2016.

Se tutto fila liscio come l’olio, dovreste vedere un report simile all’immagine in figura 1.

A questo punto dobbiamo consentire a PowerShell di eseguire script locali, nel caso non fosse ancora possibile per qualche motivo. Inseriamo questo codice:

PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Ora possiamo procedere all’installazione vera e propria di Scoop direttamente dalla PowerShell:

PS C:\> irm get.scoop.sh | iex

Scoop si installerà nel sistema e potrà essere chiamato da riga di comando in qualsiasi momento. Per sapere come funziona nel dettaglio, potete far riferimento al link in calce e consultare direttamente il sito ufficiale, da cui passare al wiki su GitHub.

git

git è un Distributed Version Control System, il cui scopo principale è quello di gestire la collaborazione di più sviluppatori che lavorano allo stesso progetto. In pratica, consente a più persone di lavorare contemporaneamente agli stessi sorgenti, prendendosi carico di ricomporre il lavoro finale, tenendo conto di quali siano i files più recenti e gestendo eventuali conflitti.

E’ naturale che un software come Godot, su cui lavorano centinaia di persone in giro per il mondo, usi un sistema come questo per coordinare tutti questi programmatori… git viene utilizzato per depositare i sorgenti in un archivio remoto di qualche tipo, un repository. Godot utilizza uno dei più famosi ed apprezzati servizi di hosting online dedicato al codice sorgente: GitHub5. La prima cosa da farsi, quindi, è scaricarsi questo benedetto git, se non ce l’avete già. Visto che abbiamo a disposizione il nostro nuovo amico Scoop, facciamone buon uso. Dalla PowerShell inseriamo questo comando:

PS C:\> scoop install git

Scoop installerà una versione leggera e a riga di comando di git, comoda e sufficiente per tutte le operazioni che andremo a svolgere dopo. Esiste una versione di git installabile tramite il solito sistema di Windows, ma la sconsiglio perché inutilmente pesante.

Una volta installato git, create una cartella da qualche parte nel vostro disco fisso, per esempio una cartella “godot” direttamente nella root del disco C, come ho fatto io. Aprite la PowerShell di WIndows, e digitate questi due comandi in serie:

PS C:\> cd godot
PS C:\godot> git clone https://github.com/godotengine/godot.git -b 4.4-stable

git, a questo punto, entrerà in azione. Subito, potrebbe sembrare che non succeda nulla, ma non dovete preoccuparvi. Vedrete che, immediatamente, viene creata una cartella godot figlia della vostra, e poi sembrerà come bloccato. In realtà, git crea una cartella con nome .git invisibile per default, in cui scarica una serie di dati prima di ricostruire il contenuto finale. La cartella finale si trova all’interno della cartella godot creata da git. Da notare quel -b 4.4-stable alla fine del comando. Mentre scrivo, la versione stabile ufficiale è la 4.4. Ovviamente, se voi leggete questo tutorial un po’ più in la nel tempo, scaricherete la versione stabile del momento. Consiglio di scaricare solo ed esclusivamente versioni stabili, se volete lavorare con GDExtension, anche se mi riservo di illustrarvi il motivo più avanti nel tutorial.

Servirà un po’ di tempo, prima che git finisca il suo lavoro, ma alla fine sotto la cartella “godot” ci sarà una copia completa del repository remoto. Questa cartella contiene tutto il codice sorgente di Godot, scritto in C++, e ci tornerà utile per compilare la nostra versione personalizzata, di qualsiasi cosa ci serva relativamente al game engine.

Python e Mingw

Python è il noto linguaggio di programmazione interpretato, da cui discende per filosofia GDScript. Mingw6, invece, è un compilatore C++ proveniente dal mondo open-source. Python fine a se stesso non è di nostro interesse, ma ci serve perché SCons, un’applicazione che andremo ad installare dopo e ci interessa davvero tantissimo, è stata scritta proprio in Python, il che ci rende necessario l’uso dell’interprete.

Una delle cose più carine di Scoop è che ci permette di installare anche più pacchetti contemporaneamente. Approfittiamone, scrivendo questo comando nella PowerShell:

PS C:\godot> scoop install python mingw

Ho dato per scontato che foste ancora nella cartella godot creata da noi, ma scoop funziona da ogni parte, esattamente come un comando nativo di Windows. Se tutto è andato bene, avremo disponibili in linea di comando sia il compilatore C++ che l’interprete di Python.

SCons

SCons7 è un software straordinario, difficile da liquidare in due parole. Si tratta di un sistema di build tool che utilizza programmini Python per la configurazione. Senza tirarla per le lunghe, con l’aiuto dei programmi di configurazione per SCons creati dal team dei creatori di Godot, è possibile tirare fuori dai sorgenti sia le versioni release che le versioni debug di Godot, per qualsiasi sistema operativo, così come i template per l’esportazione dei giochi, ma anche… le librerie necessarie a GDExtension. Capito perché tutto ‘sto casino?!

SCons è un applicativo per Python e, quindi, la sua installazione va fatta in maniera un pochetto diversa. Useremo pip che è sempre un installatore di pacchetti software, ma relativo al mondo di Python. Lo facciamo in questo modo:

PS C:\godot> python -m pip install scons

In questo modo avremo installato SCons nel nostro sistema. Finalmente, possiamo passare alla compilazione di Godot. Molto semplicemente, ci basterà digitare, in sequenza:

PS C:\godot> cd godot
PS C:\godot\godot> scons platform=windows

Questa volta rigorosamente dalla cartella di godot proveniente dal repository, altrimenti SCons non troverebbe i sorgenti. Resteremo a guardare per un bel po’, per tutto il tempo necessario alla compilazione. Alla fine, troveremo i programmi compilati e pronti per essere eseguiti, sotto la cartella bin in C:\godot\godot. Noterete che hanno dei nomi chilometrici, per quanto fortemente descrittivi, ma corrispondono esattamente alla versione con e senza console così come siete abituati a scaricarli direttamente dal sito ufficiale di Godot. Se provate ad avviarne uno, noterete anche che, nell’apposito spazio, queste versioni sono identificate come custom_build.


  1. Link alla documentazione ufficiale di GDExtension per Godot ver. 4.4 ↩︎
  2. Un articolo più dettagliato sulle DLL di Microsoft su Wikipedia. ↩︎
  3. Un articolo sui file ELF su Wikipedia: fare particolare attenzione alla moltitudine di estensioni utilizzate per identificare questo tipo di files. ↩︎
  4. Link al sito ufficiale di Scoop ↩︎
  5. Link a GitHub. ↩︎
  6. Link ufficiale al sito di Mingw ↩︎
  7. Link ufficiale al sito di Scons ↩︎

Compilarsi Godot…

Prima ancora di iniziare, siamo già finiti fuori tema, giusto? No. L’uso di GDExtension1 passa, necessariamente, dalla compilazione di Godot eseguita direttamente sulla propria macchina, per cui conviene trattare l’argomento sul piano generale. Come funziona GDExtension in soldoni? E’ un trucco abbastanza vecchio. Per liquidarla velocemente, sfrutta l’uso di file esterni che contengono codice eseguibile già compilato: le librerie a collegamento dinamico. Le DLL2 (Dynamic-Link Library), in particolare, fanno parte del mondo Windows e sono nate assieme al sistema operativo, ma esistono altri formati, come ELF3 ( Executable and Linkable Format) che assolvono allo stesso compito in sistemi operativi diversi. Per semplicità, mi riferirò a questi tipi di files sempre come DLL, ma funziona tutto più o meno allo stesso modo in tutti i casi simili.

Altra considerazione: sono un utente di vecchia data di Windows. Il mio primo computer è stato un Commodore VIC20, poi è stata la volta del Commodore 64, poi mi sono passato tutte le versioni si MS-DOS e, infine, tutte quelle di Windows. In breve: ne ho le scatole piene di studiare sistemi operativi… Non me ne vogliano gli utenti di Linux e MacOS. E’ ovvio, dunque, che questo tutorial è incentrato sul mondo Windows e richiede un certo sforzo per essere trasposto altrove. Ad ogni modo, discende direttamente dalla documentazione ufficiale di Godot, a cui ci si può riferire sempre. Il valore aggiunto sta solo in una spiegazione più rilassata e nel fatto che è scritto in italiano.

Prima di entrare nel dettaglio con GDExtension, è il caso di imparare a compilare Godot per conto proprio. Vi tranquillizzo assicurandovi che, nonostante nella realtà dei fatti sia un’operazione discretamente complessa, noi utilizzeremo un approccio abbastanza automatico, lo stesso riportato nella guida ufficiale. In pratica, non studieremo a fondo strumenti come git e SCons, che comunque andremo ad utilizzare. Ci limiteremo, piuttosto, a scopiazzare le istruzioni forniteci direttamente dai creatori di Godot. Il motivo è che occorre fare un po’ di economia: non possiamo imparare proprio tutto, tutto! Qualche volta, conviene concentrarsi sul proprio obiettivo e lasciar correre qualcos’altro…

Serve uno Scoop

Scoop4 è un installer per Windows basato su riga di comando. Si tratta di un programma open-source davvero leggero e facile da utilizzare, che possiede la capacità di scaricare pacchetti software direttamente dalla fonte e renderli subito fruibili. Può essere installato, a sua volta, direttamente da PowerShell di Windows. Lo utilizzeremo per preparare il nostro computer con tutto l’occorrente necessario per compilare Godot. Senza indugiare oltre, quindi, apriamo PowerShell di Windows. Facciamo una verifica inserendo questo comando:

PS C:\> $PSVersionTable.PSVersion

Scopo del codice è di stampare a video la versione della vostra PowerShell, che deve essere almeno la 5.1 per essere compatibile con Scoop, cosa molto probabile visto che il suo rilascio risale al 2016.

Se tutto fila liscio come l’olio, dovreste vedere un report simile all’immagine in figura 1.

A questo punto dobbiamo consentire a PowerShell di eseguire script locali, nel caso non fosse ancora possibile per qualche motivo. Inseriamo questo codice:

PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Ora possiamo procedere all’installazione vera e propria di Scoop direttamente dalla PowerShell:

PS C:\> irm get.scoop.sh | iex

Scoop si installerà nel sistema e potrà essere chiamato da riga di comando in qualsiasi momento. Per sapere come funziona nel dettaglio, potete far riferimento al link in calce e consultare direttamente il sito ufficiale, da cui passare al wiki su GitHub.

git

git è un Distributed Version Control System, il cui scopo principale è quello di gestire la collaborazione di più sviluppatori che lavorano allo stesso progetto. In pratica, consente a più persone di lavorare contemporaneamente agli stessi sorgenti, prendendosi carico di ricomporre il lavoro finale, tenendo conto di quali siano i files più recenti e gestendo eventuali conflitti.

E’ naturale che un software come Godot, su cui lavorano centinaia di persone in giro per il mondo, usi un sistema come questo per coordinare tutti questi programmatori… git viene utilizzato per depositare i sorgenti in un archivio remoto di qualche tipo, un repository. Godot utilizza uno dei più famosi ed apprezzati servizi di hosting online dedicato al codice sorgente: GitHub5. La prima cosa da farsi, quindi, è scaricarsi questo benedetto git, se non ce l’avete già. Visto che abbiamo a disposizione il nostro nuovo amico Scoop, facciamone buon uso. Dalla PowerShell inseriamo questo comando:

PS C:\> scoop install git

Scoop installerà una versione leggera e a riga di comando di git, comoda e sufficiente per tutte le operazioni che andremo a svolgere dopo. Esiste una versione di git installabile tramite il solito sistema di Windows, ma la sconsiglio perché inutilmente pesante.

Una volta installato git, create una cartella da qualche parte nel vostro disco fisso, per esempio una cartella “godot” direttamente nella root del disco C, come ho fatto io. Aprite la PowerShell di WIndows, e digitate questi due comandi in serie:

PS C:\> cd godot
PS C:\godot> git clone https://github.com/godotengine/godot.git -b 4.4-stable

git, a questo punto, entrerà in azione. Subito, potrebbe sembrare che non succeda nulla, ma non dovete preoccuparvi. Vedrete che, immediatamente, viene creata una cartella godot figlia della vostra, e poi sembrerà come bloccato. In realtà, git crea una cartella con nome .git invisibile per default, in cui scarica una serie di dati prima di ricostruire il contenuto finale. La cartella finale si trova all’interno della cartella godot creata da git. Da notare quel -b 4.4-stable alla fine del comando. Mentre scrivo, la versione stabile ufficiale è la 4.4. Ovviamente, se voi leggete questo tutorial un po’ più in la nel tempo, scaricherete la versione stabile del momento. Consiglio di scaricare solo ed esclusivamente versioni stabili, se volete lavorare con GDExtension, anche se mi riservo di illustrarvi il motivo più avanti nel tutorial.

Servirà un po’ di tempo, prima che git finisca il suo lavoro, ma alla fine sotto la cartella “godot” ci sarà una copia completa del repository remoto. Questa cartella contiene tutto il codice sorgente di Godot, scritto in C++, e ci tornerà utile per compilare la nostra versione personalizzata, di qualsiasi cosa ci serva relativamente al game engine.

Python e Mingw

Python è il noto linguaggio di programmazione interpretato, da cui discende per filosofia GDScript. Mingw6, invece, è un compilatore C++ proveniente dal mondo open-source. Python fine a se stesso non è di nostro interesse, ma ci serve perché SCons, un’applicazione che andremo ad installare dopo e ci interessa davvero tantissimo, è stata scritta proprio in Python, il che ci rende necessario l’uso dell’interprete.

Una delle cose più carine di Scoop è che ci permette di installare anche più pacchetti contemporaneamente. Approfittiamone, scrivendo questo comando nella PowerShell:

PS C:\godot> scoop install python mingw

Ho dato per scontato che foste ancora nella cartella godot creata da noi, ma scoop funziona da ogni parte, esattamente come un comando nativo di Windows. Se tutto è andato bene, avremo disponibili in linea di comando sia il compilatore C++ che l’interprete di Python.

SCons

SCons7 è un software straordinario, difficile da liquidare in due parole. Si tratta di un sistema di build tool che utilizza programmini Python per la configurazione. Senza tirarla per le lunghe, con l’aiuto dei programmi di configurazione per SCons creati dal team dei creatori di Godot, è possibile tirare fuori dai sorgenti sia le versioni release che le versioni debug di Godot, per qualsiasi sistema operativo, così come i template per l’esportazione dei giochi, ma anche… le librerie necessarie a GDExtension. Capito perché tutto ‘sto casino?!

SCons è un applicativo per Python e, quindi, la sua installazione va fatta in maniera un pochetto diversa. Useremo pip che è sempre un installatore di pacchetti software, ma relativo al mondo di Python. Lo facciamo in questo modo:

PS C:\godot> python -m pip install scons

In questo modo avremo installato SCons nel nostro sistema. Finalmente, possiamo passare alla compilazione di Godot. Molto semplicemente, ci basterà digitare, in sequenza:

PS C:\godot> cd godot
PS C:\godot\godot> scons platform=windows

Questa volta rigorosamente dalla cartella di godot proveniente dal repository, altrimenti SCons non troverebbe i sorgenti. Resteremo a guardare per un bel po’, per tutto il tempo necessario alla compilazione. Alla fine, troveremo i programmi compilati e pronti per essere eseguiti, sotto la cartella bin in C:\godot\godot. Noterete che hanno dei nomi chilometrici, per quanto fortemente descrittivi, ma corrispondono esattamente alla versione con e senza console così come siete abituati a scaricarli direttamente dal sito ufficiale di Godot. Se provate ad avviarne uno, noterete anche che, nell’apposito spazio, queste versioni sono identificate come custom_build.


  1. Link alla documentazione ufficiale di GDExtension per Godot ver. 4.4 ↩︎
  2. Un articolo più dettagliato sulle DLL di Microsoft su Wikipedia. ↩︎
  3. Un articolo sui file ELF su Wikipedia: fare particolare attenzione alla moltitudine di estensioni utilizzate per identificare questo tipo di files. ↩︎
  4. Link al sito ufficiale di Scoop ↩︎
  5. Link a GitHub. ↩︎
  6. Link ufficiale al sito di Mingw ↩︎
  7. Link ufficiale al sito di Scons ↩︎

Ultima modifica: