Developing Defold applications for the Linux platform is a straight forward process with very few considerations to make.
Linux specific application configuration is done from the Linux section of the game.project settings file.
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
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
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
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
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB