compiling_for_web.rst 4.6 KB

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