2
0

compiling_for_web.rst 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. .. _doc_compiling_for_web:
  2. Compiling for the Web
  3. =====================
  4. .. seealso::
  5. This page describes how to compile HTML5 editor and export template binaries from source.
  6. If you're looking to export your project to HTML5 instead, read :ref:`doc_exporting_for_web`.
  7. .. highlight:: shell
  8. Requirements
  9. ------------
  10. To compile export templates for the Web, the following is required:
  11. - `Emscripten 3.1.39+ <https://emscripten.org>`__.
  12. - `Python 3.6+ <https://www.python.org/>`__.
  13. - `SCons 3.0+ <https://scons.org/pages/download.html>`__ build system.
  14. .. seealso:: To get the Godot source code for compiling, see
  15. :ref:`doc_getting_source`.
  16. For a general overview of SCons usage for Godot, see
  17. :ref:`doc_introduction_to_the_buildsystem`.
  18. .. note:: Emscripten 3.1.39+ is recommended, but older 3.x versions are known to work.
  19. Please note that the minimum requirement for GDExtension support is 3.1.14.
  20. Building export templates
  21. -------------------------
  22. Before starting, confirm that ``emcc`` is available in your PATH. This is
  23. usually configured by the Emscripten SDK, e.g. when invoking ``emsdk activate``
  24. and ``source ./emsdk_env.sh``/``emsdk_env.bat``.
  25. Open a terminal and navigate to the root directory of the engine source code.
  26. Then instruct SCons to build the Web platform. Specify ``target`` as
  27. either ``template_release`` for a release build or ``template_debug`` for a debug build::
  28. scons platform=web target=template_release
  29. scons platform=web target=template_debug
  30. By default, the :ref:`JavaScriptBridge singleton <doc_web_javascript_bridge>` will be built
  31. into the engine. Official export templates also have the JavaScript singleton
  32. enabled. Since ``eval()`` calls can be a security concern, the
  33. ``javascript_eval`` option can be used to build without the singleton::
  34. scons platform=web target=template_release javascript_eval=no
  35. scons platform=web target=template_debug javascript_eval=no
  36. The engine will now be compiled to WebAssembly by Emscripten. Once finished,
  37. the resulting file will be placed in the ``bin`` subdirectory. Its name is
  38. ``godot.web.template_release.wasm32.zip`` for release or ``godot.web.template_debug.wasm32.zip``
  39. for debug.
  40. Finally, rename the zip archive to ``web_release.zip`` for the
  41. release template::
  42. mv bin/godot.web.template_release.wasm32.zip bin/web_release.zip
  43. And ``web_debug.zip`` for the debug template::
  44. mv bin/godot.web.template_debug.wasm32.zip bin/web_debug.zip
  45. GDExtension
  46. -----------
  47. The default export templates do not include GDExtension support for
  48. performance and compatibility reasons. See the
  49. :ref:`export page <doc_javascript_export_options>` for more info.
  50. You can build the export templates using the option ``dlink_enabled=yes``
  51. to enable GDExtension support::
  52. scons platform=web dlink_enabled=yes target=template_release
  53. scons platform=web dlink_enabled=yes target=template_debug
  54. Once finished, the resulting file will be placed in the ``bin`` subdirectory.
  55. Its name will have ``_dlink`` added.
  56. Finally, rename the zip archives to ``web_dlink_release.zip`` and
  57. ``web_dlink_release.zip`` for the release template::
  58. mv bin/godot.web.template_release.wasm32.dlink.zip bin/web_dlink_release.zip
  59. mv bin/godot.web.template_debug.wasm32.dlink.zip bin/web_dlink_debug.zip
  60. Building the editor
  61. -------------------
  62. It is also possible to build a version of the Godot editor that can run in the
  63. browser. The editor version is not recommended
  64. over the native build. You can build the editor with::
  65. scons platform=web target=editor
  66. Once finished, the resulting file will be placed in the ``bin`` subdirectory.
  67. Its name will be ``godot.web.editor.wasm32.zip``. You can upload the
  68. zip content to your web server and visit it with your browser to use the editor.
  69. Refer to the :ref:`export page <doc_javascript_export_options>` for the web
  70. server requirements.
  71. .. tip::
  72. The Godot repository includes a
  73. `Python script to host a local web server <https://raw.githubusercontent.com/godotengine/godot/master/platform/web/serve.py>`__.
  74. This can be used to test the web editor locally.
  75. After compiling the editor, extract the ZIP archive that was created in the
  76. ``bin/`` folder, then run the following command in the Godot repository
  77. root:
  78. ::
  79. # You may need to replace `python` with `python3` on some platforms.
  80. python platform/web/serve.py
  81. This will serve the contents of the ``bin/`` folder and open the default web
  82. browser automatically. In the page that opens, access ``godot.tools.html``
  83. and you should be able to test the web editor this way.
  84. Note that for production use cases, this Python-based web server should not
  85. be used. Instead, you should use an established web server such as Apache or
  86. nginx.