layout: manual language: zh github: https://github.com/defold/doc title: Defold 开发 Linux 游戏 brief: 本教程介绍了如何在 Linux 上编译运行 Defold 游戏 —
在 Linux 上编译运行 Defold 游戏十分简单.
Linux 相关设置位于 game.project 文件的 Linux 部分.
A: 启动 Defold 之前修改缩放参数. 参见
$ gsettings set org.gnome.desktop.interface scaling-factor 2
$ ./Defold
A: 另一种办法, 尤其是在你希望把界面放大到非整数倍时, 可以修改 Defold/config
文件, 在vmargs
一行加入 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,...
此值的意义参见 Arch Linux HiDPI wiki 文章.
A: 尝试这样启动编辑器:
$ GTK_CSD=0 ./Defold
A: 某些Linux版本 (如 Ubuntu 18) 下 Mesa 版所使用的 jogamp/jogl Defold 版本有冲突. 可以在调用 glGetString(GL_VERSION)
是设置MESA_GL_VERSION_OVERRIDE
为2.1或者更高的值以覆盖 GL 默认的驱动版本. 可以使用如下命令查看系统上支持 glxinfo
的最高 OpenGL 版本:
glxinfo | grep version
输出举例 (注意 “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,
使用版本 2.1 或者更高的匹配显卡的版本:
$ MESA_GL_VERSION_OVERRIDE=2.1 ./Defold
$ MESA_GL_VERSION_OVERRIDE=4.6 ./Defold
A: 某些Linux版本 (如 Ubuntu 20.04) 在運行 Defold 時會出現新的 Mesa 驅動程序 (Iris) 的問題. 可以嘗試使用舊版本驅動程序:
$ export MESA_LOADER_DRIVER_OVERRIDE=i965 ./Defold
A: 这是由于Linux系统的 libffi 版本与 Defold (版本 6 或 7) 需要的版本不一致. 确保 libffi.so.6
或 libffi.so.7
已安装在 /usr/lib/x86_64-linux-gnu
路径下. 可以使用如下命令下载 libffi.so.7
:
$ 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
然后需要在环境变量 LD_PRELOAD
中指定安装路径再启动 Defold:
$ LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libffi.so.7 ./Defold
A: 能用, 但是需要打开 Defold 软件渲染. 可以设置环境变量 LIBGL_ALWAYS_SOFTWARE 值为 1:
~/bin/Defold$ LIBGL_ALWAYS_SOFTWARE=1 ./Defold
A: 看看 Defold 编辑器控制台. 如果有下面这样的输出:
dmengine: error while loading shared libraries: libopenal.so.1: cannot open shared object file: No such file or directory
就需要安装 libopenal1. 不同版本包名不同, 另外某些用户也需要安装 openal 和 openal-dev 或者 openal-devel 包.
$ apt-get install libopenal-dev
A: 这很可能是窗口管理器 (比如 Qtile 或 i3) 造成的. 这是一个 JavaFX 已知问题 解决方法其一, 设置 GDK_DISPLAY
环境变量为 1:¨
$ GDK_DISPLAY=1 ./Defold
D=2
解决方法其二, 修改 Defold/config
文件在 vmargs
行添加 -Djdk.gtk.version=2
:
vmargs = -Djdk.gtk.version=2,-Dfile.encoding=UTF-8,...