Domande frequenti¶
Cosa posso fare con Godot? Quanto costa? Quali sono le condizioni di licenza?¶
Godot è ` Software Libero e Open-Source <https://en.wikipedia.org/wiki/Free_and_open-source_software>`_ disponibile sotto la ` licenza approvata dalla OSI <https://opensource.org/licenses/MIT>`_. Questo significa che è libero come in "discorso libero" così come in "birra gratis."
In breve:
Sei libero di scaricare e utilizzare Godot per qualsiasi scopo: personale, non-profit, commerciale o altro.
Sei libero di modificare, distribuire, ridistribuire e remixare Godot a tuo piacimento, per qualsiasi motivo, sia non commerciale che commerciale.
Tutti i contenuti della documentazione sono coperti dalla licenza permissiva Creative Commons Attribution 3.0 (CC-BY 3.0), con attribuzione a "Juan Linietsky, Ariel Manzur and the Godot Engine community"
Loghi e icone sono in linea generale coperti dalla stessa licenza Creative Commons. Alcune librerie di terze parti incluse con il codice sorgente di Godot possono però essere coperte da diverse licenze.
Per tutti i dettagli, guardate il COPYRIGHT.txt così come il LICENSE.txt e LOGO_LICENSE.txt file nel repository di Godot.
Inoltre, vedi ` la pagina della licenza sul sito di Godot <https://godotengine.org/license>`_.
Quali piattaforme sono supportate da Godot?¶
Per l'editor:
Windows
macOS
X11 (Linux, *BSD)
Android (sperimentale)
Per esportare i tuoi giochi:
Windows (e UWP)
macOS
X11 (Linux, *BSD)
Android
iOS
Web
I binari a 32 e 64 bit sono entrambi supportati qualora abbia senso, con la versione a 64 bit di default.
Alcuni utenti hanno riportato di aver compilato e usato Godot con successo su sistemi ARM-based con Linux, come il Raspberry Pi.
Inoltre, c'è un po' di lavoro non ufficiale di terze parti che viene fatto sulla compilazione per alcune console. Tuttavia, niente di tutto ciò è incluso negli script di compilazione o nei modelli di esportazione di default in questo momento.
Per saperne di più, vedi le sezioni su exporting e compilare Godot da solo.
Quali sono i linguaggi di programmazione supportati in Godot?¶
I linguaggi supportati ufficialmente da Godot sono GDScript, Visual Scripting, C# e C++. Vedi le sottocategorie per ogni linguaggio nella sezione scripting.
Se si sta appena iniziando con Godot o lo sviluppo di giochi in generale, GDScript è il linguaggio consigliato da imparare e utilizzare dal momento che è nativo di Godot. Mentre i linguaggi di scripting tendono ad essere meno performanti di quelli di livello inferiore nel lungo periodo, per la prototipazione, lo sviluppo di prodotti a basso costo (MVP), e concentrandosi sul time-to-market (TTM), GDScript fornirà un modo veloce, facile e funzionale di sviluppare i vostri giochi.
Si noti che il supporto C# è ancora relativamente nuovo, e come tale, si possono incontrare alcuni problemi. La nostra comunità di sviluppo amichevole e laboriosa è sempre pronta ad affrontare i nuovi problemi che si presentano, ma poiché questo è un progetto open-source, si consiglia di fare prima un po' di dovuta diligenza. La ricerca tra le discussioni sui problemi aperti <https://github.com/godotengine/godot/issues>`_ è un ottimo modo per iniziare la risoluzione dei problemi.
Per quanto riguarda le nuove lingue, il supporto è possibile tramite terze parti utilizzando i servizi GDNative / NativeScript / PluginScript. (Vedere domanda sui plugin qui sotto.) Attualmente sono in corso lavori, ad esempio, su binding non ufficiali per Godot e Python <https://github.com/touilleMan/godot-python>`_ e Nim.
Cos'è GDScript e perché dovrei usarlo?¶
GDScript è il linguaggio di script integrato di Godot. E' stato costruito da zero per massimizzare il potenziale di Godot nella minor quantità di codice, offrendo sia ai principianti che agli sviluppatori esperti di sfruttare al meglio i punti di forza di Godot. Se avete già scritto qualcosa in un linguaggio come Python allora vi sentirete subito a vostro agio. Per esempi, evoluzione e una panoramica completa delle capacità che GDScript offre, potete leggere GDScript scripting guide.
Ci sono diverse ragioni per usare GDScript--specialmente quando si sta prototipando, in stadi alfa/beta del progetto, o non si sta creando il prossimo titolo AAA--ma la ragione più saliente è la generale ** riduzione della complessità**.
L'intento originale di creare un linguaggio di scripting strettamente integrato e personalizzato per Godot era duplice: in primo luogo, riduceva la quantità di tempo necessaria per mettersi in funzione con Godot, dando agli sviluppatori un modo rapido di esporsi al motore con un focus sulla produttività; in secondo luogo, riduce l'onere complessivo della manutenzione, attenua la dimensione dei problemi, e permette agli sviluppatori del motore di concentrarsi sulla correzione dei bug e migliorare le funzionalità relative al motore, piuttosto che spendere molto tempo cercando di ottenere un piccolo insieme di nuove caratteristiche lavorando su un grande insieme di linguaggi.
Essendo Godot un progetto Open Source, era imperativo sin dall'inizio dare prioritá ad una esperienza il piú possibile integrata e fluida piuttosto che cercare di attirare piú utenti supportando i linguaggi di programmazione piú famosi, specialmente quando il supporto a tali linguaggi risulterebbe in un'esperienza peggiore. Capiamo se volete utilizzare un altro linguaggio in Godot (vedere la lista delle opzioni supportate sopra). Detto questo, se non avete ancora provato GDScript, provatelo per tre giorni. Esattamente come per Godot, una volta che avrete constatato quanto è potente, e quanto velocizza lo sviluppo, pensiamo che GDScript vi piacerá sempre di piú.
Ulteriori informazioni su come prendere mano con GDScript o altri linguaggi tipizzati dinamicamente possono essere trovate nel tutorial GDScript: An introduction to dynamic languages.
Quali sono state le motivazioni alla base della creazione di GDScript?¶
All'inizio, il motore usava il linguaggio di scripting Lua. Lua è veloce, ma creare binding per un sistema orientato agli oggetti (usando i fallback) fu complicato e lento e ha richiesto una grande quantità di codice. Dopo aver sperimentato con Python, anch'esso si era dimostrato difficile da integrare.
I motivi principali per la creazione di un linguaggio di scripting personalizzato per Godot sono stati:
Cattivo supporto ai thread nella maggior parte delle VM degli altri linguaggi, e Godot usa thread (Lua, Python, Squirrel, JS, AS, ecc.).
Non esiste un buon supporto per l'estensione delle classi nella maggior parte delle VM degli altri linguaggi, e adattarle al funzionamento di Godot è altamente inefficiente (Lua, Python, JS).
Molti linguaggi già esistenti hanno interfacce orribili per lavorare in C++, e ciò risulta in una quantità enorme di codice, bug, colli di bottiglia e inefficienze in generale (Lua, Python, Squirrel, JS, ecc.). Volevamo concentrarci nel fare un ottimo motore di gioco, non una grande quantità di integrazioni.
Nessun tipo nativo per i vettori (vector3, matrix4, ecc.), che risulta in prestazioni ridotte quando si usano tipi personalizzati (Lua, Python, Squirrel, JavaScript, ActionScript, ecc.).
Il garbage collector produce rallentamenti o un uso della memoria inutilmente alto (Lua, Python, JavaScript, ActionScript, ecc.).
Difficoltà nell'integrazione con l'editor di codice per fornire l'auto-completamento del codice, live editing e tutte le altre funzionalità. GDScript ha un ottimo supporto per questo.
GDScript è stato progettato per ridurre i problemi di cui sopra e altri ancora.
Che tipo di formati per i modelli 3D supporta Godot?¶
Godot supporta Collada tramite l'OpenCollada <https://github.com/KhronosGroup/OpenCOLLADA/wiki/OpenCOLLADA-Tools>`_exporter (Maya, 3DSMax). Se stai usando Blender, dai un'occhiata al nostro `Better Collada Exporter.
A partire da Godot 3.0, glTF è supportato.
FBX è supportato tramite la libreria Open Asset Import. Tuttavia, FBX è proprietario, quindi ti consigliamo di utilizzare altri formati sopra elencati, se adatti al tuo flusso di lavoro.
Sarà [inserire SDK proprietari come FMOD, Gameworks, ecc] supportato in Godot?¶
Godot ha l'obiettivo di creare una motore per videogiochi libero, open source, modulare ed estensibile. Non é previsto, da parte della comunitá di sviluppo del motore, il supporto per SDK di terze parti, a codice chiuso o proprietari in quanto integrarli andrebbe contro lo spirito di Godot.
Detto questo, essendo Godot open source e modulare, niente impedisce a te, o a chiunque altro sia interessato, di aggiungere queste librerie come moduli e rilasciare il tuo gioco usandole, sia come progetto open source che closed source.
Per vedere come possa essere fornito il supporto per il SDK scelto, vedi la domanda sui Plugins poco sotto.
Se conosci un SDK di terze parti che non é attualmente supportato da Godot ma che offre un'integrazione open source, puoi considerare di iniziare a lavorare sull'integrazione. Godot non é un progetto di proprietá di una persona, appartiene alla comunitá e cresce attraverso il lavoro di ambiziosi contributori come te.
Come installo l'editor di Godot sul mio Sistema Operativo (per l'integrazione col desktop)?¶
Visto che non devi installare Godot sul tuo sistema per usarlo, l'integrazione col desktop non è automatica. Ci sono due modi per superare questo problema. È possibile installare Godot da Steam (tutte le piattaforme), Scoop (Windows), Homebrew (macOS) or Flathub (Linux). Questo eseguirà automaticamente i passaggi necessari per l'integrazione col desktop.
Alternativamente, puoi eseguire manualmente i passaggi che un installer eseguirebbe per te:
Windows¶
Sposta l'eseguibile di Godot in una posizione stabile (cioè fuori della cartella Download), così da non spostarlo accidentalmente e rompere il collegamento in futuro.
Fai clic con il pulsante destro sull'eseguibile di Godot e scegli Crea collegamento.
Sposta il collegamento creato in
%LOCALAPPDATA%\Microsoft\Windows\Start Menu\Programs
. Questa è la posizione a livello di utente per le scorciatoie che appariranno nel menu Start. Puoi anche bloccare Godot nella barra delle applicazioni facendo clic con il pulsante destro sull'eseguibile e scegliendo Aggiungi alla barra delle applicazioni.
macOS¶
Trascina l'applicazione Godot estratta su /Applicazioni/Godot.app
, quindi trascinala sul Dock se lo desideri. Spotlight sarà in grado di trovare Godot fintanto che si trova in /Applicazioni
o in ~/Applicazioni
.
Linux¶
Sposta l'eseguibile di Godot in una posizione stabile (cioè al di fuori della cartella Download), in modo da non spostarlo accidentalmente e rompere il collegamento in futuro.
Rinomina e sposta l'eseguibile di Godot in una posizione presente nella tua variabile d'ambiente
PATH
. Di solito è/usr/local/bin/godot
o/usr/bin/godot
. Questo metodo richiede i privilegi d'amministratore, ma ti pemette di eseguire Godot da un terminale scrivendo``godot``.Se non puoi spostare l'eseguibile dell'editor Godot in una posizione protetta, puoi tenerlo da qualche parte nella tua cartella home e modificare la riga
Path=
del file.desktop
linkato qui sotto andando a inserire l'intero percorso assoluto del file eseguibile Godot.
Salva questo file .desktop in
$HOME/.local/ condividi/applicazioni/
. Se hai i privilegi d'amministratore, puoi anche salvare il file.desktop
in/usr/local/share/applications
per rendere il collegamento disponibile per tutti gli utenti.
L'editor Godot è un'applicazione portabile?¶
Nella configurazione di default, Godot è semi-portatile. Il suo eseguibile può partire da ogni luogo (incluso luoghi non scrivibili) e non richiede mai privilegi di amministratore.
Tuttavia, i file di configurazione verranno scritti nella configurazione a livello di utente o nella cartella dei dati. Questo di solito è un buon approccio, ma questo significa che i file di configurazione non verranno trasferiti tra le macchine se si copia la cartella contenente l'eseguibile Godot. Vedi File paths in Godot projects per maggiori informazioni.
Se si è interessati a operazioni veramente portabili (ad esempio per l'uso su una chiavetta USB), seguire i passaggi in Self-contained mode.
Perché Godot usa Vulkan o OpenGL invece di Direct3D?¶
Godot mira innanzitutto alla compatibilità multipiattaforma e agli standard aperti. OpenGL e Vulkan sono le tecnologie aperte e disponibili su (quasi) tutte le piattaforme. Grazie a questa decisione progettuale, un progetto sviluppato con Godot su Windows verrà eseguito immediatamente su Linux, macOS e altro.
Poiché Godot ha solo poche persone che lavorano sul suo renderer, preferiremmo avere meno backend di rendering da mantenere. Inoltre, l'utilizzo di una singola API su tutte le piattaforme permette maggiore consistenza e meno problemi riguardanti una piattaforma specifica.
Nel lungo termine, potremmo sviluppare un renderer Direct3D 12 per Godot (principalmente per Xbox), ma Vulkan e OpenGL rimarranno i backend di rendering predefiniti su tutte le piattaforme, incluso Windows.
Perché Godot cerca di mantenere piccolo il suo set di funzionalità principali?¶
Godot non include intenzionalmente funzionalità che possono essere implementate da componenti aggiuntivi, a meno che non siano utilizzate molto spesso. Un esempio di questo sarebbe una funzionalità avanzata di intelligenza artificiale.
Ci sono diverse ragioni per questo:
Manutenzione del codice e ricerca di bug Ogni volta che accettiamo nuovo codice nel repository di Godot, contributori già esistenti spesso si assumono la responsabilità di mantenerlo. Alcuni contributori però non rimangono sempre dopo che il loro codice sia stato accettato, il che può renderci difficile mantenere il codice in questione. Questo può portare a funzionalità non sufficientemente mantenute con dei bug mai risolti. In aggiunta, la "superficie API" che ha bisogno di essere testata e controllata per regressioni continua a crescere nel corso del tempo.
Facilità di contribuire Mantenendo il repository piccolo e ordinato, rimane facile e veloce compilare dalla risorsa principale. Questo rende molto più facile per i nuovi contributori iniziare con Godot, senza che devano acquistare hardware di alto livello.
Mantenere una dimensione piccola del file binario dell'editor. Non tutti hanno una connessione veloce ad internet. Assicurarsi che chiunque possa scaricare l'editor di Godot, estrarlo ed eseguirlo in meno di 5 minuti rende Godot più accessibile agli sviluppatori.
Mantenere una dimensione piccola dei template di export. Questo impatta direttamente la dimensione dei progetti esportati con Godot. Sulle piattaforme mobile e web, mantenere piccole le dimensioni dei file è molto importante per assicurare un'installazione ed un caricamento rapido anche su device con poca potenza. Ancora, ci sono molti stati in cui internet ad alta velocità non è disponibile. In aggiunta, in questi stati generalmente ci sono dei limiti stringenti sulla quantità di dati utilizzabili.
Per tutte le ragioni dette precedentemente, dobbiamo essere selettivi sulle funzionalità principali da accettare in Godot. Questo è il motivo per cui, in future versioni di Godot, stiamo puntando a spostare alcune caratteristiche principali in componenti aggiuntivi supportati ufficialmente. In termini di dimensione del file binario, questo ha anche il vantaggio di includere solo quello che è usato nel tuo progetto. (Nel frattempo, puoi :ref:`compilare dei template di esportazione personalizzati con le funzionalità non usate disabilitate <doc_optimizing_for_size> per ottimizzare la dimensione di distribuzione del tuo progetto.)
Come devono essere creati i contenuti per gestire più risoluzioni e proporzioni?¶
Questa domanda si presenta spesso ed è probabilmente grazie al malinteso creato da Apple quando originariamente ha raddoppiato la risoluzione dei loro dispositivi. Ha fatto pensare alla gente che avere i stessi contenuti in diverse risoluzioni fosse una buona idea, così tanti hanno continuato su quella strada. Inizialmente funzionava fino a un certo punto e solo per i dispositivi Apple, ma poi sono stati creati diversi dispositivi Android e Apple con risoluzioni e proporzioni diverse, con una gamma molto ampia di dimensioni e DPI.
Il modo più comune e corretto per ottenere questo è invece, usare una singola risoluzione di base per il gioco e gestire solamente le differenti proporzioni dello schermo. Questo è sopratutto necessario per il 2D, poiché nel 3D è solo una questione di Camera XFov o YFov.
Scegli una singola risoluzione di base per il tuo gioco. Anche se ci sono dispositivi che arrivano fino a 2K e dispositivi che scendono a 400p, il normale ridimensionamento dell'hardware nel tuo dispositivo si occuperà di questo a costi ridotti o nulli. Le scelte più comuni sono a 1080p (1920x1080) o 720p (1280x720). Tieni presente che maggiore è la risoluzione, più grandi sono i tuoi contenuti, più memoria impiegheranno e maggiore sarà il tempo necessario per il caricamento.
Utilizza le opzioni di adattamento in Godot; l'allungamento 2D con il mantenimento dell'aspetto dà i migliori risultati. Controlla il tutorial Multiple resolutions su come ottenere questo risultato.
Determina una risoluzione minima e quindi decidi se vuoi che il tuo gioco si adatti verticalmente o orizzontalmente per i diversi aspect ratio, o se ce n'è una minima e vuoi invece che appaiano delle barre nere. Questo è anche spiegato nello step precedente: Multiple resolutions .
Per le interfacce utente, usa anchoring in modo da decidere dove i controlli dovrebbero essere e muoversi. Se la UI è più complessa, considera i Containers.
E questo è tutto! Il tuo gioco dovrebbe funzionare con più risoluzioni.
Se davvero desideri che il tuo gioco funzioni anche su vecchi device con piccoli schermi (meno di 300 pixel in larghezza), puoi usare l'opzione di esportazione per ridurre la dimensione delle immagini, e impostarla per essere usata con schermi di determinate dimensioni nell' App Store o in Google Play.
Come posso estendere Godot?¶
Per estendere Godot, ad esempio creando plugin per Godot Editor o aggiungere il supporto per ulteriori linguaggi, fai riferimento a EditorPlugins e ai tool script.
Vedi anche i post del blog ufficiale su questi argomenti:
Puoi anche dare un'occhiata all'implementazione di GDScript, ai moduli di Godot e al supporto non ufficiale per Python per Godot. Questo é un buon punto di inizio per capire come librerie di terze parti si integrano in Godot.
Quando uscirà la prossima versione di Godot?¶
Quando è pronta! Vedi Quando uscirà la prossima versione? per maggiori informazioni.
Vorrei contribuire! Come posso iniziare?¶
Stupendo! Essendo un progetto open source, Godot prospera attraverso l'innovazione e l'ambizione di sviluppatori come te.
Il primo posto da cui iniziare é la sezione issues. Trova una issue che trovi particolarmente adatta a te, poi procedi alla guida Come Contribuire per imparare come fare fork, modifiche e inoltrare una Pull Request (PR) con le tue modifiche.
È possibile utilizzare Godot per creare applicazioni che non siano giochi?¶
Sì! Godot dispone di un ampio sistema di UI integrato, e la sua piccola dimensione di distribuzione può renderlo un'alternativa adatta a framework come Electron o Qt.
Quando si crea un'applicazione non di gioco, assicurarsi di abilitare modalità basso-uso processore nelle impostazioni del progetto per diminuire l'uso di CPU e GPU.
Detto questo, non raccomandiamo l'uso di Godot per la creazione di un'applicazione mobile poiché la modalità low-processor non è ancora supportata sulle piattaforme mobile.
Controlla Material Maker e Pixelorama per esempi di applicazioni open source fatte con Godot.
È possibile utilizzare Godot come libreria?¶
Godot è pensato per essere usato con il suo editor. Ti consigliamo di provarlo, perché molto probabilmente ti farà risparmiare tempo a lungo termine. Non ci sono piani per rendere Godot utilizzabile come libreria, in quanto renderebbe il resto del motore più contorto e difficile da usare per gli utenti occasionali.
Se si desidera utilizzare una libreria di rendering, considera invece l'utilizzo di un motore di rendering stabilito. Tieni presente che i motori di rendering di solito hanno comunità più piccole rispetto a quella di Godot. Ciò renderà più difficile trovare le risposte alle tue domande.
Quale toolkit di interfaccia utente usa Godot?¶
Godot non usa un toolkit standard GUI come GTK, Qt o wxWidgets. Invece, usa il proprio toolkit di interfaccia utente, renderizzato usando OpenGL ES o Vulkan. Questo toolkit è esposto sotto forma di nodi Control, che sono usati per visualizzare l'editor (che è scritto in C++). Questi nodi Control possono anche essere utilizzati nei progetti da qualsiasi linguaggio di scripting supportato da Godot.
Questo toolkit personalizzato permette di beneficiare dell'accelerazione hardware e di avere un aspetto coerente su tutte le piattaforme. Oltre a questo, non ha a che fare con le limitazioni della licenza LGPL che vengono con GTK o Qt. Infine, questo significa che Godot sta "mangiando il suo stesso cibo per cani" poiché l'editor stesso è uno degli utilizzatori più complessi del sistema UI di Godot.
Questo toolkit UI personalizzato non può essere usato come libreria, ma puoi ancora usare Godot per creare applicazioni che non siano giochi usando l'editor.
Perchè Godot non usa STL (Standard Template Library)?¶
Come molte altre librerie (Qt ne è un esempio), Godot non fa uso si STL. Noi crediamo che STL sia una magnifica libreria ad utilizzo generico, ma noi abbiamo bisogno di requisiti particolari per Godot.
I modelli STL creano simboli molto grandi, il che si traduce in un enorme codice binario di debug. Utilizziamo invece alcuni modelli con nomi molto brevi.
La maggior parte dei nostri contenitori soddisfa esigenze particolari, come Vector, che utilizza la copia in scrittura e che usiamo per passare i dati, o il sistema RID, che richiede tempo di accesso O (1) per le prestazioni. Allo stesso modo, le nostre implementazioni di mappe hash, sono implementate per integrarsi perfettamente con i tipi di motori interni.
I nostri contenitori hanno un tracciamento della memoria integrato, che aiuta a monitorare meglio l'utilizzo della memoria.
Per array di grandi dimensioni, utilizziamo la memoria in pool, che può essere mappata su un buffer preallocato o su una memoria virtuale.
Utilizziamo il nostro tipo String personalizzato, in quanto quello fornito da STL è troppo elementare e manca di un adeguato supporto all'internazionalizzazione.
Perché Godot non utilizza le eccezioni?¶
Noi crediamo che i giochi non debbano "crashare", qualunque cosa accada. Se si verifica una situazione inaspettata si verifica, Godot genererà e stamperà un errore (che può essere ricondotto anche allo script), ma poi cercherà di gestirlo nel modo più armonioso possibile e andare avanti.
Inoltre, le eccezioni aumentano significativamente le dimensioni del file binario per l'eseguibile.
Perché Godot non applica il RTTI?¶
Godot fornisce il proprio sistema di casting del tipo, che può facoltativamente utilizzare il RTTI internamente. Disabilitare RTTI in Godot, significa che è possibile ottenere dimensioni dei file binari considerevolmente più piccoli, con un costo di prestazioni ridotto.
Perché Godot non obbliga gli utenti ad implementare il DoD (Data Oriented Design)?¶
Mentre Godot, per molte delle attività che richiedono un alto carico prestazionale, internamente tenta di utilizzare la coerenza della cache nel miglior modo possibile, riteniamo che la maggior parte degli utenti non debbano essere costretti ad usare le pratiche DoD.
DoD, è principalmente un'ottimizzazione della coerenza della cache che può ottenere significativi miglioramenti delle prestazioni quando si ha a che fare con dozzine di migliaia di oggetti (che vengono elaborati ogni fotogramma con poche modifiche). Se stai spostando alcune centinaia di sprite o nemici per frame, il DoD non ti aiuterà e dovresti considerare un approccio diverso all'ottimizzazione.
La stragrande maggioranza dei giochi non ne ha bisogno e Godot fornisce pratici aiutanti per fare il lavoro per la maggior parte dei casi in cui lo fai.
Se un gioco ha davvero bisogno di elaborare una tale quantità di oggetti, la nostra raccomandazione è di usare C+++ e GDNative per le parti che richiedono alte prestazioni e GDScript (o C#) per il resto del gioco.
Come posso supportare lo sviluppo o contribuire a Godot?¶
Vedi Ways to contribute.
Chi sta lavorando su Godot? Come posso contattarvi?¶
Vedi la pagina corrispondente sul ` sito web di Godot <https://godotengine.org/contact>`_.