compiling_for_web.rst 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  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.62+ <https://emscripten.org>`__.
  12. - `Python 3.8+ <https://www.python.org/>`__.
  13. - `SCons 4.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. Building export templates
  19. -------------------------
  20. Before starting, confirm that ``emcc`` is available in your PATH. This is
  21. usually configured by the Emscripten SDK, e.g. when invoking ``emsdk activate``
  22. and ``source ./emsdk_env.sh``/``emsdk_env.bat``.
  23. Open a terminal and navigate to the root directory of the engine source code.
  24. Then instruct SCons to build the Web platform. Specify ``target`` as
  25. either ``template_release`` for a release build or ``template_debug`` for a debug build:
  26. ::
  27. scons platform=web target=template_release
  28. scons platform=web target=template_debug
  29. By default, the :ref:`JavaScriptBridge singleton <doc_web_javascript_bridge>` will be built
  30. into the engine. Official export templates also have the JavaScript singleton
  31. enabled. Since ``eval()`` calls can be a security concern, the
  32. ``javascript_eval`` option can be used to build without the singleton:
  33. ::
  34. scons platform=web target=template_release javascript_eval=no
  35. scons platform=web target=template_debug javascript_eval=no
  36. By default, WebWorker threads support is enabled. To disable it and only use a single thread,
  37. the ``threads`` option can be used to build the web template without threads support:
  38. ::
  39. scons platform=web target=template_release threads=no
  40. scons platform=web target=template_debug threads=no
  41. The engine will now be compiled to WebAssembly by Emscripten. Once finished,
  42. the resulting file will be placed in the ``bin`` subdirectory. Its name is
  43. ``godot.web.template_release.wasm32.zip`` for release or ``godot.web.template_debug.wasm32.zip``
  44. for debug.
  45. Finally, rename the zip archive to ``web_release.zip`` for the
  46. release template:
  47. ::
  48. mv bin/godot.web.template_release.wasm32.zip bin/web_release.zip
  49. And ``web_debug.zip`` for the debug template:
  50. ::
  51. mv bin/godot.web.template_debug.wasm32.zip bin/web_debug.zip
  52. GDExtension
  53. -----------
  54. The default export templates do not include GDExtension support for
  55. performance and compatibility reasons. See the
  56. :ref:`export page <doc_javascript_export_options>` for more info.
  57. You can build the export templates using the option ``dlink_enabled=yes``
  58. to enable GDExtension support:
  59. ::
  60. scons platform=web dlink_enabled=yes target=template_release
  61. scons platform=web dlink_enabled=yes target=template_debug
  62. Once finished, the resulting file will be placed in the ``bin`` subdirectory.
  63. Its name will have ``_dlink`` added.
  64. Finally, rename the zip archives to ``web_dlink_release.zip`` and
  65. ``web_dlink_release.zip`` for the release template:
  66. ::
  67. mv bin/godot.web.template_release.wasm32.dlink.zip bin/web_dlink_release.zip
  68. mv bin/godot.web.template_debug.wasm32.dlink.zip bin/web_dlink_debug.zip
  69. Building the editor
  70. -------------------
  71. It is also possible to build a version of the Godot editor that can run in the
  72. browser. The editor version is not recommended
  73. over the native build. You can build the editor with:
  74. ::
  75. scons platform=web target=editor
  76. Once finished, the resulting file will be placed in the ``bin`` subdirectory.
  77. Its name will be ``godot.web.editor.wasm32.zip``. You can upload the
  78. zip content to your web server and visit it with your browser to use the editor.
  79. Refer to the :ref:`export page <doc_javascript_export_options>` for the web
  80. server requirements.
  81. .. tip::
  82. The Godot repository includes a
  83. `Python script to host a local web server <https://raw.githubusercontent.com/godotengine/godot/master/platform/web/serve.py>`__.
  84. This can be used to test the web editor locally.
  85. After compiling the editor, extract the ZIP archive that was created in the
  86. ``bin/`` folder, then run the following command in the Godot repository
  87. root:
  88. ::
  89. # You may need to replace `python` with `python3` on some platforms.
  90. python platform/web/serve.py
  91. This will serve the contents of the ``bin/`` folder and open the default web
  92. browser automatically. In the page that opens, access ``godot.editor.html``
  93. and you should be able to test the web editor this way.
  94. Note that for production use cases, this Python-based web server should not
  95. be used. Instead, you should use an established web server such as Apache or
  96. nginx.