为Web平台编译

需求

要编译Web的导出模板,需要以下内容:

参见

有关Godot的SCons用法的一般概述,请参阅 构建系统介绍

构建导出模板

在开始之前,请确认Emscripten配置文件存在并正确指定所有设置。这个文件在类UNIX系统上为 ~/.emscripten,在Windows上为 %USERPROFILE%\.emscripten 。它通常由Emscripten SDK编写,例如当调用 emsdk activate latest 时,或者由您的包管理器调用。如果文件不存在,它也会在启动Emscripten的 emcc 程序时创建。

注意

在Windows平台上,确保将Emscripten配置文件中的路径反斜杠,转义为双反斜杠 \\,或者使用带有单个正斜杠 / 的Unix式的路径。

打开终端并导航到引擎源代码的根目录。然后指示SCons构建JavaScript平台。为发布版本将 target 指定 release,或为调试版本将 target 指定 release_debug

  1. scons platform=javascript tools=no target=release
  2. scons platform=javascript tools=no target=release_debug

By default, the JavaScript singleton will be built into the engine. Official export templates also have the JavaScript singleton enabled. Since eval() calls can be a security concern, the javascript_eval option can be used to build without the singleton:

  1. scons platform=javascript tools=no target=release javascript_eval=no
  2. scons platform=javascript tools=no target=release_debug javascript_eval=no

现在,引擎将由Emscripten编译为WebAssembly。完成后,生成的文件将放在 bin 子目录中。针对发布版本的名字是 godot.javascript.opt.zip,或针对调试版本的是 godot.javascript.opt.debug.zip

最后,将zip存档重命名为 webassembly_release.zip 以获取发布版本的模板:

  1. mv bin/godot.javascript.opt.zip bin/webassembly_release.zip

调试模板的 webassembly_debug.zip

  1. mv bin/godot.javascript.opt.debug.zip bin/webassembly_debug.zip

构建每个asm.js转换或LLVM后端

WebAssembly可以用两种方式编译:默认是首先使用Emscripten的 fastcomp LLVM分支编译为asm.js,这是一个高度可优化的JavaScript子集。然后使用名为 asm2wasm 的工具将此代码转换为WebAssembly。Emscripten会自动处理这两个进程,我们只需运行SCons。

另一种方法是使用LLVM的WebAssembly后端。此后端可从LLVM 8开始或在开发版本中使用。Emscripten也管理此过程,因此我们仅调用SCons。

为了选择两种方法中的一种,使用Emscripten配置文件中的 LLVM_ROOT 变量。如果它指向包含Emscripten的 fastcomp 分叉的clang的二进制文件的目录,则使用 asm2wasm。这是常规Emscripten安装中的默认设置。否则,将使用WebAssembly后端构建的LLVM二进制文件,并使用LLVM的WebAssembly后端。