compiling_for_web.rst 4.9 KB

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