R: Sì, il motore e l’editor di Defold con funzionalità complete sono completamente gratuiti. Nessun costo nascosto, commissioni o royalties. Solo gratuito.
R: Uno degli obiettivi della Defold Foundation è garantire che il software Defold sia disponibile per gli sviluppatori in tutto il mondo e che il codice sorgente sia disponibile gratuitamente.
R: Siamo profondamente impegnati in Defold. La Defold Foundation è stata costituita in modo tale da garantire che esista come proprietario responsabile di Defold per molti anni a venire. Non andrà via.
R: Assolutamente. Defold è utilizzato da un numero crescente di sviluppatori di giochi professionisti e studi di sviluppo. Dai un’occhiata alla vetrina dei giochi per esempi di giochi creati con Defold.
R: Registriamo dati anonimi sull’utilizzo dai nostri siti web e dall’editor Defold per migliorare i nostri servizi e prodotti. Non c’è tracciamento degli utenti nei giochi che crei (a meno che tu non aggiunga un servizio di analisi tu stesso). Leggi di più su questo nella nostra Politica sulla privacy.
R: Defold è stato creato da Ragnar Svensson e Christian Murray. Hanno iniziato a lavorare sul motore, sull’editor e sui server nel 2009. King e Defold hanno iniziato una partnership nel 2013 e King ha acquisito Defold nel 2014. Leggi la storia completa qui.
R: Assolutamente! Il motore è un vero e proprio motore 3D. Tuttavia, gli strumenti sono progettati per il 2D, quindi dovrai fare molto lavoro manuale. È previsto un miglior supporto per il 3D.
R: La logica di gioco nel tuo progetto Defold è scritta principalmente utilizzando il linguaggio Lua (specificamente Lua 5.1/LuaJIT, consulta il manuale Lua per i dettagli). Lua è un linguaggio dinamico leggero che è veloce e molto potente. Puoi anche utilizzare codice nativo (C/C++, Objective-C, Java e JavaScript a seconda della piattaforma) per estendere il motore Defold con nuove funzionalità. Quando crei materiali personalizzati, viene utilizzato il linguaggio shader OpenGL ES SL per scrivere vertex e fragment shaders.
R: Le seguenti piattaforme sono supportate per l’editor/strumenti e il runtime del motore:
Sistema | Versione | Architetture | Supportato |
---|---|---|---|
macOS | 11 Big Sur | x86-64 , arm-64 |
Editor |
macOS | 10.15 | x86-64 , arm-64 |
Motore |
Windows | Vista | x86-32 , x86-64 |
Editor e Motore |
Ubuntu (1) | 18.04 | x86-64 |
Editor |
Linux (2) | Qualsiasi | x86-64 , arm-64 |
Motore |
iOS | 11.0 | arm-64 |
Motore |
Android | 4.4 (API level 19) | arm-32 , arm-64 |
Motore |
HTML5 | asm.js , wasm |
Motore |
(1 L’editor è costruito e testato per Ubuntu 18.04 a 64 bit. Dovrebbe funzionare anche su altre distribuzioni ma non diamo garanzie.)
(2 Il runtime del motore dovrebbe funzionare sulla maggior parte delle distribuzioni Linux a 64 bit purché i driver grafici siano aggiornati, vedi sotto per ulteriori informazioni sulle API grafiche)
R: Con un solo clic puoi pubblicare su PS4™, Nintendo Switch, iOS, Android e HTML5, oltre che su macOS, Windows e Linux. È davvero una base di codice unica con più piattaforme supportate.
R: Come sviluppatore devi preoccuparti solo di una singola API di rendering utilizzando una pipeline di rendering completamente scriptabile. L’API di script di rendering di Defold traduce le operazioni di rendering nelle seguenti API grafiche:
System | Graphics API | Note |
---|---|---|
macOS | OpenGL 3.3 or Metal | Vulkan via MoltenVK |
Windows | OpenGL 3.3 or Vulkan 1.1 | |
Linux | OpenGL 3.3 or Vulkan 1.1 | |
Android | OpenGLES 3.0 or Vulkan 1.1 | Fallback to OpenGLES 2.0 |
iOS | OpenGLES 3.0 or Metal | Vulkan via MoltenVK |
HTML5 | WebGL 2.0 or WebGPU | Fallback to WebGL 1.0 |
R: Sì, seleziona l’opzione “Informazioni” nel menu Aiuto. Il popup mostra chiaramente la versione beta di Defold e, più importante, lo specifico SHA1 di rilascio. Per il lookup della versione runtime, usa sys.get_engine_info()
.
L’ultima versione beta disponibile per il download da http://d.defold.com/beta può essere verificata aprendo http://d.defold.com/beta/info.json (lo stesso file esiste anche per le versioni stabili: http://d.defold.com/stable/info.json)
R: Sì, consulta sys.get_sys_info()
.
A: The editor will use up to 75% of the available memory of the system. On a computer with 4 GB of RAM this should be enough for smaller Defold projects. For mid-sized or large projects it is recommended to use 6 GB or more of RAM.
A: Yes. The Defold beta editor checks for an update at startup, just like the Defold stable version does.
java.awt.AWTError: Assistive Technology not found
when launching the editor?
A: This error is related to problems with Java assistive technology such as the NVDA screen reader. You probably have an .accessibility.properties
file in your home folder. Remove the file and try launching the editor again. (Note: If you do use any assistive technology and require that file to be present then please reach out to us at info@defold.se to discuss alternative solutions).
Discussed here on the Defold forum.
sun.security.validator.ValidatorException: PKIX path building failed
when launching the editor?
A: This exception occurs when the editor tries to make an https connection but the certificate chain provided by the server cannot be verified.
See this link for details on this error.
java.lang.OutOfMemoryError: Java heap space
when performing certain operations?
A: The Defold editor is built using Java and in some cases the default memory configuration of Java might not be sufficient. If this happens you can manually configure the editor to allocate more memory by editing the editor configuration file. The configuration file, named config
, is located in the Defold.app/Contents/Resources/
folder on macOS. On Windows it is located next to Defold.exe
executable and on Linux next to the Defold
executable. Open the config
file and add -Xmx6gb
to the line starting with vmargs
. Adding -Xmx6gb
will set the max heap size to 6 gigabytes (the default is usually 4Gb). It should look something like this:
vmargs = -Xmx6gb,-Dfile.encoding=UTF-8,-Djna.nosys=true,-Ddefold.launcherpath=${bootstrap.launcherpath},-Ddefold.resourcespath=${bootstrap.resourcespath},-Ddefold.version=${build.version},-Ddefold.editor.sha1=${build.editor_sha1},-Ddefold.engine.sha1=${build.engine_sha1},-Ddefold.buildtime=${build.time},-Ddefold.channel=${build.channel},-Ddefold.archive.domain=${build.archive_domain},-Djava.net.preferIPv4Stack=true,-Dsun.net.client.defaultConnectTimeout=30000,-Dsun.net.client.defaultReadTimeout=30000,-Djogl.texture.notexrect=true,-Dglass.accessible.force=false,--illegal-access=warn,--add-opens=java.base/java.lang=ALL-UNNAMED,--add-opens=java.desktop/sun.awt=ALL-UNNAMED,--add-opens=java.desktop/sun.java2d.opengl=ALL-UNNAMED,--add-opens=java.xml/com.sun.org.apache.xerces.internal.jaxp=ALL-UNNAMED
A: Change the scaling factor before running Defold. source
$ gsettings set org.gnome.desktop.interface scaling-factor 2
$ ./Defold
A: An alternative solution, especially when you wish to scale up by a fraction, is to modify the Defold/config
file and on the vmargs
line add glass.gtk.uiScale
: source
vmargs = -Dglass.gtk.uiScale=1.5,-Dfile.encoding=UTF-8,...
vmargs = -Dglass.gtk.uiScale=175%,-Dfile.encoding=UTF-8,...
vmargs = -Dglass.gtk.uiScale=192dpi,-Dfile.encoding=UTF-8,...
More on this value in the Arch Linux HiDPI wiki article.
A: Start the editor like this:
$ GTK_CSD=0 ./Defold
com.jogamp.opengl
A: On certain distributions (like Ubuntu 18) there is an issue with the version of jogamp
/jogl
Defold uses vs. the version of Mesa on the system. You can override which GL version that gets reported when calling glGetString(GL_VERSION)
by setting the MESA_GL_VERSION_OVERRIDE
to 2.1 or a larger value but less than or equal to the version of your driver. You can check which is the maximum OpenGL version your driver supports using glxinfo
:
glxinfo | grep version
Example output (look for “OpenGL version string: x.y”):
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
Max core profile version: 4.6
Max compat profile version: 4.6
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
OpenGL core profile version string: 4.6 (Core Profile) Mesa 20.2.6
OpenGL core profile shading language version string: 4.60
OpenGL version string: 4.6 (Compatibility Profile) Mesa 20.2.6
OpenGL shading language version string: 4.60
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 20.2.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
GL_EXT_shader_implicit_conversions, GL_EXT_shader_integer_mix,
Use version 2.1 or version matching your graphics driver:
$ MESA_GL_VERSION_OVERRIDE=2.1 ./Defold
$ MESA_GL_VERSION_OVERRIDE=4.6 ./Defold
com.jogamp.opengl.GLException: Graphics configuration failed
” when launching Defold?
A: On certain distributions (for instance Ubuntu 20.04) there is an issue with the new Mesa drivers (Iris) when running Defold. You can try using an older driver version when running Defold:
$ MESA_LOADER_DRIVER_OVERRIDE=i965 ./Defold
libffi.so
A: The libffi version of your distribution and the one required by Defold (version 6 or 7) does not match. Make sure libffi.so.6
or libffi.so.7
is installed under /usr/lib/x86_64-linux-gnu
. You can download libffi.so.7
like this:
$ wget http://ftp.br.debian.org/debian/pool/main/libf/libffi/libffi7_3.3-6_amd64.deb
$ sudo dpkg -i libffi7_3.3-6_amd64.deb
Next you specify the path to this version in the LD_PRELOAD
environment variable when running Defold:
$ LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libffi.so.7 ./Defold
A: Yes, it might be possible to use Defold if you enable software rendering. You can enable software rendering by setting the LIBGL_ALWAYS_SOFTWARE
environment variable to 1:
$ LIBGL_ALWAYS_SOFTWARE=1 ./Defold
A: Check the console output in the editor. If you get the following message:
dmengine: error while loading shared libraries: libopenal.so.1: cannot open shared object file: No such file or directory
Then you need to install libopenal1
. The package name varies between distributions, and in some cases you might have to install the openal
and openal-dev
or openal-devel
packages.
$ apt-get install libopenal-dev
A: This is likely caused by the window manager used (for instance Qtile
or i3). This is a known issue in JavaFX and it can either be solved by setting the GDK_DISPLAY
environment variable to 1:¨
$ GDK_DISPLAY=1 ./Defold
D=2
Or by modifying the Defold/config
file and on the vmargs
line add -Djdk.gtk.version=2
:
vmargs = -Djdk.gtk.version=2,-Dfile.encoding=UTF-8,...
A: If you are running Defold from Steam using Flatpak you need to give Steam permission to access your other drives. You can modify the permissions of your Flatpak applications using Flatseal or similar tool.
A: It is likely that an internal call to Desktop.getDesktop().browse(new URI(url));
fails since no browser is detected on non-Gnome systems. Try installing libgnome
.
$ apt-get install libgnome
A: Yes, set the immersive_mode setting in the Android section of your game.project file. This lets your app take over the whole screen and capture all touch events on the screen.
A: Android detects that you try to install the app with a new certificate. When bundling debug builds, each build will be signed with a temporary certificate. Uninstall the old app before installing the new version:
$ adb uninstall com.defold.examples
Success
$ adb install Defold\ examples.apk
4826 KB/s (18774344 bytes in 3.798s)
pkg: /data/local/tmp/Defold examples.apk
Success
A: This can happen when two or more extensions provide an Android Manifest stub containing the same property tag but with different values. This has for instance happened with Firebase and AdMob. The build error looks similar to this:
SEVERE: /tmp/job4531953598647135356/upload/AndroidManifest.xml:32:13-58
Error: Attribute property#android.adservices.AD_SERVICES_CONFIG@resource
value=(@xml/ga_ad_services_config) from AndroidManifest.xml:32:13-58 is also
present at AndroidManifest.xml:92:13-59 value=(@xml/gma_ad_services_config).
Suggestion: add 'tools:replace="android:resource"' to <property> element at
AndroidManifest.xml to override.
You can read more about the issue and the workaround in reported Defold issue #9453 and Google issue #327696048.
A: In some cases it is not possible to run a game in the browser locally from the filesystem. Running from the editor serves the game from a local web server. You can, for instance, use SimpleHTTPServer
in Python:
$ python -m SimpleHTTPServer [port]
A: This usually happens when you are using Windows and make a build and commit it to Git. If you have the wrong line-ending configuration in Git it will change your line endings and thus also the data size. Follow these instructions to solve the problem: https://docs.github.com/en/free-pro-team@latest/github/using-git/configuring-git-to-handle-line-endings
A: Make sure that you are using the same bundle identifier in your Defold project as you used in the Xcode project when you generated the mobile provisioning profile.
A: From Inspect the entitlements of a built app:
codesign -d --ent :- /path/to/the.app
A: From Inspecting a profile’s entitlements:
security cms -D -i /path/to/iOSTeamProfile.mobileprovision
A: This error can happen on computers using AMD Radeon GPUs. Make sure to update your graphics drivers.
com.sun.jna.Native.open.class java.lang.Error: Access is denied
when opening an atlas or a scene view?
A: Try running Defold as administrator. Right-click on the Defold executable and select “Run as Administrator”.
A: Make sure to update your driver to a version higher than or equal to 27.20.100.8280. Check with the Intel Driver Support Assistant. Additional information can be found in this forum post.
AWTError: Assistive Technology not found
If the editor crashes with a log mentioning Caused by: java.awt.AWTError: Assistive Technology not found: com.sun.java.accessibility.AccessBridge
then follow these steps:
C:\Users\<username>
.accessibility.properties
using a standard text editor (Notepad is fine)assistive_technologies=com.sun.java.accessibility.AccessBridge
screen_magnifier_present=true
#
`) in front of theses linesA: You will be able to create application bundles from the editor and command line tools. Information about how to test on PlayStation®4, PlayStation®5 and Nintendo Switch hardware will be provided to you when you are given access to the respective platforms.
A: Yes, all of the standard Defold API functions are available also for the console platforms. In addition to the standard functionality you will also have access to a couple of PlayStation®4, PlayStation®5 and Nintendo Switch specific functions, but in general the code should be able to remain exactly the same across multiple platforms.
R: Quando invii, Apple ha tre caselle di controllo per i loro tre casi d’uso validi per l’IDFA:
Se selezioni l’opzione 1, il revisore dell’app cercherà annunci da mostrare nell’app. Se il tuo gioco non mostra annunci, il gioco potrebbe essere rifiutato. Defold stesso non utilizza l’ID pubblicitaria.
R: Defold supporta acquisti in-app e varie soluzioni pubblicitarie. Controlla la categoria Monetizzazione nel portale delle risorse per un elenco aggiornato delle opzioni di monetizzazione disponibili.
R: Il processo di build può non riuscire a ricostruire i file in rari casi in cui ha precedentemente incontrato errori di build che hai risolto. Forza una ricostruzione completa selezionando Progetto > Ricostruisci e avvia dal menu.
R: Sì, li supporta. Si chiamano collections. Ti permettono di creare gerarchie complesse di oggetti di gioco e memorizzarli come blocchi separati che puoi istanziare nell’editor o a runtime (tramite il caricamento di collezioni). Per i nodi GUI c’è supporto per i modelli GUI.
R: Probabilmente stai cercando di aggiungere un figlio nel file dell’oggetto di gioco e ciò non è possibile. Per capire perché, devi ricordare che le gerarchie genitore-figlio sono strettamente una gerarchia di trasformazione del scene-graph. Un oggetto di gioco che non è stato posizionato (o generato) in una scena (collezione) non fa parte di un scene-graph e quindi non può far parte di una gerarchia scene-graph.
R: Le relazioni genitore-figlio non esprimono altro che le relazioni di trasformazione del scene-graph e non devono essere confuse con gli aggregati di orientamento agli oggetti. Se ti concentri sui dati del tuo gioco e su come trasformarli al meglio mentre il tuo gioco cambia stato, troverai probabilmente meno bisogno di inviare messaggi con dati di stato a molti oggetti tutto il tempo. Nei casi in cui avrai bisogno di gerarchie di dati, queste sono facilmente costruite e gestite in Lua.
R: Questo è un artefatto visivo chiamato “edge bleeding” in cui i pixel di bordo dei pixel adiacenti in un atlas si mescolano nell’immagine assegnata al tuo sprite. La soluzione è imbottire il bordo delle tue immagini dell’atlas con righe e colonne extra di pixel identici. Fortunatamente questo può essere fatto automaticamente dall’editor di atlas in Defold. Apri il tuo atlas e imposta il valore Extrude Borders su 1.
R: Lo shader sprite integrato che viene utilizzato per impostazione predefinita per tutti gli sprite ha una costante “tint” definita:
local red = 1
local green = 0.3
local blue = 0.55
local alpha = 1
go.set("#sprite", "tint", vmath.vector4(red, green, blue, alpha))
R: La posizione Z di un oggetto di gioco controlla l’ordine di rendering. I valori bassi vengono disegnati prima dei valori alti. Nello script di rendering predefinito, gli oggetti di gioco con una profondità compresa tra -1 e 1 vengono disegnati, qualsiasi valore inferiore o superiore non verrà disegnato. Puoi leggere di più sullo script di rendering nella documentazione ufficiale Render. Sui nodi GUI il valore Z viene ignorato e non influisce sull’ordine di rendering. Invece, i nodi vengono renderizzati nell’ordine in cui sono elencati e secondo le gerarchie di figli (e i livelli). Leggi di più sul rendering GUI e sull’ottimizzazione delle chiamate di disegno utilizzando i livelli nella documentazione ufficiale GUI.
R: No. L’unico effetto è la precisione. Il buffer Z è logaritmico e ha una risoluzione molto fine dei valori Z vicini a 0 e meno risoluzione lontano da 0. Ad esempio, con un buffer a 24 bit i valori 10.0 e 10.000005 possono essere differenziati mentre 10000 e 10005 no.
R: In realtà c’è coerenza. Gli angoli sono espressi in gradi ovunque nell’editor e nelle API di gioco. Le librerie matematiche utilizzano i radianti. Attualmente la convenzione si interrompe per la proprietà fisica angular_velocity
che è attualmente espressa in radianti/s. Ci si aspetta che cambi.
R: È semplicemente una forma colorata con vertici. Tieni presente che costerà comunque in termini di fill-rate.
R: Tutte le risorse sono conteggiate internamente. Non appena il conteggio delle referenze è zero, la risorsa viene rilasciata.
R: Tutto è basato su componenti. È possibile creare un oggetto di gioco senza testa con più suoni e riprodurre i suoni inviando messaggi all’oggetto controller del suono.
R: In generale tutte le risorse sono dichiarate staticamente con il vantaggio che ottieni la gestione delle risorse gratuitamente. Puoi usare le proprietà delle risorse per cambiare quale risorsa è assegnata a un componente.
R: No, attualmente non è possibile.
R: Sì, imposta il flag physics.debug in game.project. (Consulta la documentazione ufficiale Project settings)
R: Defold esegue una versione modificata di Box2D in background e il costo delle prestazioni dovrebbe essere abbastanza simile. Puoi sempre vedere quanto tempo il motore trascorre sulla fisica aprendo il profilatore. Dovresti anche considerare quale tipo di oggetti di collisione utilizzi. Gli oggetti statici sono più economici in termini di prestazioni, ad esempio. Consulta la documentazione ufficiale Physics in Defold per ulteriori dettagli.
R: Dipende se stanno suonando o meno. Un ParticleFx che non sta suonando non ha alcun costo in termini di prestazioni. L’impatto sulle prestazioni di un ParticleFx in riproduzione deve essere valutato utilizzando il profilatore poiché il suo impatto dipende da come è configurato. Come per la maggior parte delle altre cose, la memoria è allocata in anticipo per il numero di ParticleFx definito come max_count in game.project.
R: Ogni collezione caricata tramite proxy ha il proprio stack di input. L’input viene instradato dallo stack di input della collezione principale tramite il componente proxy agli oggetti nella collezione. Ciò significa che non basta che l’oggetto di gioco nella collezione caricata acquisisca il focus dell’input, l’oggetto di gioco che detiene il componente proxy deve acquisire anche il focus dell’input. Consulta la documentazione Input per i dettagli.
R: No. Defold supporta proprietà di tipo hash. Queste possono essere utilizzate per indicare tipi, identificatori di stato o chiavi di qualsiasi tipo. Gli hash possono anche essere utilizzati per memorizzare ID degli oggetti di gioco (percorsi) sebbene le proprietà url siano spesso preferibili poiché l’editor popola automaticamente un menu a discesa con gli URL rilevanti per te. Consulta la documentazione Script properties per i dettagli.
R: Accedi alle celle usando mymatrix.m11
, mymatrix.m12
, mymatrix.m21
ecc
Not enough resources to clone the node
quando uso gui.clone() o gui.clone_tree()
R: Aumenta il valore Max Nodes
del componente GUI. Trovi questo valore nel pannello Proprietà quando selezioni la radice del componente nel Riepilogo.
R: Certamente! Abbiamo una categoria speciale “Work for hire” per questo. Incoraggeremo sempre tutto ciò che beneficia la comunità, e offrire i tuoi servizi alla comunità—a pagamento o meno—è un buon esempio di ciò.
R: Per ridurre il bumping dei thread “Work for hire”, non puoi pubblicare più di una volta ogni 14 giorni nel tuo thread (a meno che non sia una risposta diretta a un commento nel thread, nel qual caso puoi rispondere). Se vuoi aggiungere ulteriori lavori al tuo thread entro il periodo di 14 giorni, devi modificare i tuoi post esistenti con il contenuto aggiunto.
R: Certo, sentiti libero! Può essere utilizzata sia per offerte che per richieste, ad esempio “Programmatore cerca artista pixel 2D; sono ricco e ti pagherò bene”.