答: 对, Defold 引擎与编辑器和所有功能完全免费. 没有暗扣费, 手续费和使用权费用. 完全免费.
答: Defold 基金会 的一大目标就是让 Defold 软件能够被世界上所有开发者免费使用并且源码也是公开免费的.
答: 我们承诺维护 Defold. Defold 基金会 的成立就是为了保证 Defold 能够被持续维护. 我们不会放弃.
答: 必须值得信赖. Defold 已被越来越多的职业开发者和工作室所采用. 可以参考位于 游戏展示页 上的用 Defold 开发的各种样例.
答: 我们的网站和 Defold 编辑器会使用匿名回报一些数据用以提升我们的服务和产品质量. 你编译出版的游戏里不带任何用户跟踪 (除非你自己加入分析服务功能). 详情请见我们的 隐私政策.
答: Defold 由 Ragnar Svensson 和 Christian Murray 开发. 他们从2009年就开始了游戏引擎, 编辑器和配套服务的开发. King 和 Defold 在2013年建立了合作关系然后并于2014年获得 Defold. 详情请见 这里.
答: 可以! 游戏引擎纯 3D. 然而, 工具都是针对 2D 游戏设计的, 所以 3D 游戏工具你得自己开发. 提升 3D 支持的计划进行中.
答: Defold 项目游戏逻辑基本使用 Lua 语言 (特指 Lua 5.1/LuaJIT, 详情请见 Lua 教程). Lua 是一种强大快速的动态语言. 同时也支持使用原生 (C/C++, Objective-C, Java 和 JavaScript等) 语言来扩展 Defold 引擎功能. 自定义材质, 使用 OpenGL ES SL 语言编写的顶点和片元着色程序.
答: 下表列出了编辑器工具与游戏引擎运行环境的支持情况:
System | Version | Architectures | Supported |
---|---|---|---|
macOS | 11 Big Sur | x86-64, arm-64 | Editor and Engine |
Windows | Vista | x86-32, x86-64 | Editor and Engine |
Ubuntu (1) | 18.04 | x86-64 | Editor |
Linux (2) | Any | x86-64 | Engine |
iOS | 11.0 | arm-64 | Engine |
Android | 4.4 (API level 19) | arm-32, arm-64 | Engine |
HTML5 | asm.js, wasm | Engine |
(1 编辑器在 64-bit Ubuntu 18.04 平台上通过编译和测试. 其他版本应该同样可以运行但是未经过测试.)
(2 游戏引擎在大多数 64-bit Linux 版本上只要更新显卡驱动支持 OpenGL ES 2.0 的基本都能运行.)
答: 可以一键发布到 PS4™, 任天堂 Switch, iOS, Android 和 HTML5 游戏, 外加 macOS, Windows 和 Linux 游戏. 真正的一套代码平台通用.
A: 作爲開發者只需要關心可編程渲染管綫所支持的一種渲染 API 完全可程式化渲染管线. Defold 渲染脚本 API 会把渲染操作转换为如下图形 API:
System | Graphics API | Note |
---|---|---|
macOS | Metal (via MoltenVK) | |
Windows | OpenGL 3.1 or Vulkan 1.1 | |
Linux | OpenGL 3.1 or Vulkan 1.1 | |
Android | OpenGLES 3.0 or Vulkan 1.1 | Fallback to OpenGLES 2.0 |
iOS | Metal (via MoltenVK) | |
HTML5 | WebGL 2.0 | Fallback to WebGL 1.0 |
答: 点击菜单栏 “About” 项. 弹出窗口详细列出了 Defold 版本号, 和文件哈希 SHA1. 对于游戏引擎版本, 调用 sys.get_engine_info()
获取.
最新测试版位于 http://d.defold.com/beta 可以查看 http://d.defold.com/beta/info.json (正式版同样也有: http://d.defold.com/stable/info.json) 文件获取最新版本信息.
答: 调用 sys.get_sys_info()
获取.
答: 编辑器最多占用 75% 的空闲系统内存. 一般 4 GB 内存的电脑就可以运行 Defold 小项目了. 中大型项目建议配备 6 GB 或更多内存.
答: Defold 测试版编辑器会在启动时检查并自动更新, 正式版也是.
A: 该报错与 Java 辅助技术比如 NVDA screen reader 相关. 在你的 home 文件夹下可能有个 .accessibility.properties
文件. 删除该文件尝试重新启动编辑器. (注意: 如果你确实用了辅助技术需要保留这个文件请发消息至 info@defold.se 来探讨其他解决办法).
在 Defold 论坛这里 讨论过.
答: 检查 Defold 安装路径里是否有空格. 比如, 把编辑器放在mac系统 Applications 中的 Defold-macosx 文件夹里, 就能运行. 改成 Defold macosx 就无法运行. 在 Windows 上, 像 C:\Program Files\ 这样的路径都不行. 这归因于 Eclipse 框架的一个已知 bug.
答: 这个错是由于编辑器尝试建立 https 连接而服务器证书无法验证导致.
详情请见 这里.
答: Defold 编辑器基于 Java, 所以某种情况下可能会造成内存不足. 可以尝试手动编辑配置文件来增加内存使用量. 配置文件叫做 config
, 在 macOS 位于 Defold.app/Contents/Resources/
文件夹下. 在 Windows 位于 Defold.exe
可执行文件同一个文件夹下, 在 Linux 位于 Defold
可执行文件同一个文件夹下. 打开 config
文件, 在 vmargs
后顶头加入 -Xmx6gb
参数. 加入 -Xmx6gb
的意思是使用 6 GB 内存 (默认 4GB). 如下所示:
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: 启动 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,...
A: 有, 在你的 game.project 文件的 Android 部分的 immersive_mode 项. 这项可以使你获得全部的屏幕及屏幕触摸事件.
A: 安卓系统发现你的更新app使用了新的证书. 打包调试版本时, 使用的是一个临时证书. 所以在更新版本前要删除旧版本:
$ 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: 很多浏览器不允许从本地磁盘文件来启动程序. 从编辑器里运行就能自动生成临时本地服务器. 另外, 你也可以使用 Python 之类的程序快速搭建本地服务器 SimpleHTTPServer:
$ python -m SimpleHTTPServer [port]
A: 这种情况可能发生在使用 Windows 编译并且提交到 Git 上的时候. 如果 Git 配置文件里含有不正确的行尾符上传的时候就会被自动改正造成数据大小变化. 解决方案详见: https://docs.github.com/en/free-pro-team@latest/github/using-git/configuring-git-to-handle-line-endings
A: 請確保游戲包 id 與 Defold 導出的 Xcode 項目檔案裏設置的 id 是一致的.
A: 参见 应用的权限检查:
$ codesign -d –ent :- /path/to/the.app
A: 参见 档案设置的权限检查:
$ security cms -D -i /path/to/iOSTeamProfile.mobileprovision
A: 这个错误发生在 使用 AMD Radeon GPU 的机器 上. 注意更新显卡驱动.
A: 试试以管理员身份打开 Defold. 右键点击 Defold 可执行程序选择 “以管理员身份运行”.
A: 確保你的驅動版本大於等於 27.20.100.8280. 參見 Intel Driver Support Asistant. 更多信息請見 這個帖子.
如果编辑器崩溃, 日志提示 Caused by: java.awt.AWTError: Assistive Technology not found: com.sun.java.accessibility.AccessBridge
请参考如下步骤:
C:\Users\<username>
.accessibility.properties
的文件assistive_technologies=com.sun.java.accessibility.AccessBridge
screen_magnifier_present=true
#
`)A: 使用 Defold 编辑器和命令行工具都可以打包主机游戏. 一旦你取得了相应开发资格, 关于如何调试 PlayStation®4, PlayStation®5 和 Nintendo Switch 游戏的方法也会发送给你.
A: 够用, 所有标准 Defold API 功能在主机游戏平台同样有效. 除此之外也许需要调用一些 PlayStation®4, PlayStation®5 和 Nintendo Switch 的原生功能, 但总体上讲一套代码跨平台没问题.
答: 提交游戏时, Apple 为广告商提供了3种 IDFA 用例:
如果选择第一个, 编辑会在你的游戏里找广告. 如果没找到, 游戏很可能会被拒. Defold 本身不使用广告商id.
答: Defold 支持游戏内付费和多种广告服务. 最新相关信息详见 资源中心的盈利类目.
答: 如果二次编译不通过很肯能由你最后做的改动导致. 从菜单栏选择 Project > Rebuild And Launch 试试.
答: 有. Defold 里叫 集合. 它能帮助建立储存游戏内容为树形结构以便在编辑器或者游戏运行时创建实例. 对于 GUI 节点类似结构称为 GUI 模板.
答: 有一种可能是因为父级游戏对象是一个文件引用. 对于父子结构的游戏对象来说它们的位移关系通过 场景结构 表达. 没有被加入到场景里的游戏对象无法于其他对象建立父子关系.
答: 父子关系除了场景结构中表现相对位移以外别无其他特别之处. 如果需要跟踪子对象状态无需时刻向所有子对象发送消息. 这种情况下你需要使用 Lua 编写数据结构.
答: 这被称作 “边缘出血” 现象, 渲染精灵对象的时候把纹理旁边的一些像素也加入进来了. 解决办法是用纹理边缘的像素再扩充一圈. 好在 Defold 编辑器有工具能自动做这件事. 尝试打开图集并且设置 Extrude Borders 的值为 1.
A: 精灵默认着色程序包含 “tint” 属性:
local red = 1
local green = 0.3
local blue = 0.55
local alpha = 1
go.set("#sprite", "tint", vmath.vector4(red, green, blue, alpha))
答: z值表示深度方向的遮挡关系. z值小的位于z值大的游戏对象前面. 默认渲染程序的z值范围是 -1 到 1, 此范围之外的不被渲染. 关于渲染脚本详情请见 渲染教程. 对于 GUI 节点来说z值毫无作用. 节点的遮挡顺序取决于树形结构 (以及层次设置). 关于用户界面节点的渲染详情请见 GUI 教程.
答: 不影响性能但是影响精度. z缓存是一种对数结构靠近 0 差别明显, 远离 0 差别不明显. 比如说, 用 24 位缓存 10.0 对比 10.000005 区别明显但是 10000 对比 10005 区别不明显.
答: 实际上一致. 编辑器和游戏API使用角度制. 数学计算库使用弧度制. 目前对于物理 angular_velocity
是个例外使用了弧度制. 以后可能会矫正.
答: 作为顶点着色形状渲染, 注意其性能消耗.
答: 引擎对所有资源都有引用计数. 一旦引用为0则资源自动被释放.
答: 游戏引擎设计模式基于组件. 可以建立一个不可见游戏对象把声音组件放入然后需要播放时给它发消息即可.
答: 一般资源都是静态声明随意管理的. 可以使用 资源属性 来修改与组件关联的资源.
答: 目前尚未支持.
答: 有, 要在 game.project 里设置 physics.debug 项. (参见 项目设置教程)
答: Defold 包含的是 Box2D 略微修改版本, 所以性能应该和原版差不多. 可以使用 调试器 跟踪物理碰撞数量. 确保用对碰撞对象. 比如静态碰撞对象性能高些. 详情请见 Defold 的 物理教程.
答: 这取决于粒子效果是否正在播放. 没有播放的粒子效果不消耗性能. 播放中的粒子效果性能消耗取决于其配置情况, 可以用调试器来观察. 粒子效果的内存消耗基本上取决于项目设置的 max_count 数.
答: 每个集合都有自己的输入栈. 输入从主集合通过代理组件传递到被载入集合里的游戏对象. 换句话说仅游戏对象获得输入焦点是不够的, 那个代理组件 所在的 游戏对象同样需要获得输入焦点. 详情请见 输入教程.
答: 没有. Defold 只有 哈希 类型的脚本属性. 用来表示枚举, 表示状态, 表示各种类型都没问题. 而且游戏对象的 id (路径) 也是用其 url 属性的哈希来保存, 遇到这样的属性时编辑器会自动建立相关路径弹框供你选择. 详情请见 脚本属性教程.
答: 使用 mymatrix.m11
, mymatrix.m12
, mymatrix.m21
之类的属性可以访问内部数据.
Not enough resources to clone the node
的错误信息?
答: 增加gui组件的 Max Nodes
值. 在大纲视图gui根节点的属性面板上就能看到.
答: 可以! 论坛有一个 “Work for hire” 类目. 能充实社区论坛的所有信息都欢迎, 这里可以发布求职广告.
答: 为避免 “Work for hire” 类目论坛被爆, 至少14天内不许再加广告 (除非有人回复找你, 此时你可以立即回复这个人). 14天内, 只能通过更新帖子的方式加入新内容.
答: 可以, 自己找! 招聘也行求职也行, 比如 “程序员找美工; 高价求不差钱”.