This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
当您打包游戏时,需要选择希望使用的引擎类型。您有三个基本选项:
这些不同版本也被称为 构建变体
当您选择 Project ▸ Build 时,您将始终获得调试版本。
这种类型的可执行文件通常在游戏开发过程中使用,因为它包含几个有用的调试功能:
print()
函数的日志,以及使用 dmLogInfo()
、dmLogError()
等的原生扩展日志记录。了解如何阅读这些日志,请参阅游戏和系统日志手册。此变体禁用了调试功能。当游戏准备发布到应用商店或以其他方式与玩家共享时,应选择此选项。出于多种原因,不建议发布启用了调试功能的游戏:
此可执行文件在没有图形和声音的情况下运行。这意味着您可以在 CI 服务器上运行游戏的单元/冒烟测试,甚至可以将其作为云中的游戏服务器使用。
不但可以为引擎加入原生扩展功能,还可以从引擎中剔除一些部分。比如你不需要物理引擎,就可以从应用中去除。关于如何去除引擎功能参见应用清单手册。
实际上 app manifest 有着与 extension manifest 相同的结构和语法。这使我们能够在最终编译时为每个平台混合上下文配置。
而且,Defold 自身,有其基础 build manifest(build.yml
)。编译每个扩展时,这些文件做如下混合:
manifest = merge(game.appmanifest, ext.manifest, build.yml)
用户可以覆盖引擎和每个扩展的默认行为。而且,对于最终链接阶段,我们混合了 app manifest 与 defold manifest:
manifest = merge(game.appmanifest, build.yml)
这是一个参考示例:
platforms:
x86_64-osx:
context:
excludeLibs: []
excludeSymbols: []
libs: []
linkFlags: []
x86_64-linux:
context:
excludeLibs: []
excludeSymbols: []
libs: []
linkFlags: []
js-web:
context:
excludeLibs: []
excludeJsLibs: []
excludeSymbols: []
libs: []
linkFlags: []
wasm-web:
context:
excludeLibs: []
excludeJsLibs: []
excludeSymbols: []
libs: []
linkFlags: []
x86-win32:
context:
excludeLibs: []
excludeSymbols: []
libs: []
linkFlags: []
x86_64-win32:
context:
excludeLibs: []
excludeSymbols: []
libs: []
linkFlags: []
armv7-android:
context:
excludeLibs: []
excludeJars: []
excludeSymbols: []
libs: []
linkFlags: []
armv7-ios:
context:
excludeLibs: []
excludeSymbols: []
libs: []
linkFlags: []
arm64-ios:
context:
excludeLibs: []
excludeSymbols: []
libs: []
linkFlags: []
对于所有关键字,我们提供白名单过滤。这样可以避免非法路径处理和访问编译上载文件夹之外的文件。
可以在这里添加指定平台的编译标志。
此标志仅在需要添加平台或者 Defold SDK 里的库时使用。应用的扩展库是自动添加的,不应在这里添加。下面是从引擎中剔除 3D 物理的例子:
x86_64-linux:
context:
excludeLibs: ["physics","LinearMath","BulletDynamics","BulletCollision"]
excludeSymbols: []
libs: ["physics_2d"]
linkFlags: []
此标志用于剔除平台上下文已经预先定义的东西。下面是从引擎中剔除 Facebook 扩展的例子(注意 (.*)
是帮助去掉正确元素而使用的正则表达式)。
armv7-android:
context:
excludeLibs: ["facebookext"]
excludeJars: ["(.*)/facebooksdk.jar","(.*)/facebook_android.jar"]
excludeSymbols: ["FacebookExt"]
libs: []
linkFlags: []
与其在这里列举,我们不如努力把 manifest 的编辑功能加入编辑器,让用户使用更方便。
与此同时,Manifestation 工具也会持续更新。
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB