exporting_projects.rst 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. .. _doc_exporting_projects:
  2. Exporting projects
  3. ==================
  4. .. highlight:: none
  5. Why export?
  6. -----------
  7. Originally, Godot did not have any means to export projects. The
  8. developers would compile the proper binaries and build the packages for
  9. each platform manually.
  10. When more developers (and even non-programmers) started using it, and
  11. when our company started taking more projects at the same time, it
  12. became evident that this was a bottleneck.
  13. On PC
  14. ~~~~~
  15. Distributing a game project on PC with Godot is rather easy. Drop
  16. the Godot binary in the same directory as the ``project.godot`` file,
  17. then compress the project directory and you are done.
  18. It sounds simple, but there are probably a few reasons why the developer
  19. may not want to do this. The first one is that it may not be desirable
  20. to distribute loads of files. Some developers may not like curious users
  21. peeking at how the game was made, others may find it inelegant, and so on.
  22. Another reason is that the developer might prefer a specially-compiled
  23. binary, which is smaller in size, more optimized and does not include
  24. tools like the editor and debugger.
  25. Finally, Godot has a simple but efficient system for
  26. :ref:`creating DLCs as extra package files <doc_exporting_pcks>`.
  27. On mobile
  28. ~~~~~~~~~
  29. The same scenario on mobile platforms is a little worse.
  30. To distribute a project on those devices, a binary for each of
  31. those platforms is built, then added to a native project together
  32. with the game data.
  33. This can be troublesome because it means that the developer must be
  34. familiarized with the SDK of each platform before even being able to
  35. export. While learning each SDK is always encouraged, it can be
  36. frustrating to be forced to do it at an undesired time.
  37. There is also another problem with this approach: different devices
  38. prefer some data in different formats to run. The main example of this
  39. is texture compression. All PC hardware uses S3TC (BC) compression and
  40. that has been standardized for more than a decade, but mobile devices
  41. use different formats for texture compression, such as ETC1 and ETC2.
  42. Export menu
  43. -----------
  44. After many attempts at different export workflows, the current one has
  45. proven to work the best. At the time of this writing, not all platforms are
  46. supported yet, but the supported platforms continue to grow.
  47. To open the export menu, click the **Export** button:
  48. .. image:: img/export.webp
  49. The export menu will open. However, it will be completely empty.
  50. This is because we need to add an export preset.
  51. .. image:: img/export_dialog.webp
  52. To create an export preset, click the **Add…** button at the top
  53. of the export menu. This will open a drop-down list of platforms
  54. to choose from for an export preset.
  55. .. image:: img/export_preset.webp
  56. The default options are often enough to export, so tweaking them is
  57. usually not necessary. However, many platforms require additional
  58. tools (SDKs) to be installed to be able to export. Additionally, Godot
  59. needs export templates installed to create packages. The export menu
  60. will complain when something is missing and will not allow the user to
  61. export for that platform until they resolve it:
  62. .. image:: img/export_error.webp
  63. At that time, the user is expected to come back to the documentation and follow
  64. instructions on how to properly set up that platform.
  65. The buttons at the bottom of the menu allow you to export the project in a few
  66. different ways:
  67. - Export All: Export the project as a playable build (Godot executable and project data)
  68. for all the presets defined. All presets must have an **Export Path** defined for this
  69. to work.
  70. - Export Project: Export the project as a playable build
  71. (Godot executable and project data) for the selected preset.
  72. - Export PCK/ZIP: Export the project resources as a PCK or ZIP package.
  73. This is not a playable build, it only exports the project data without a Godot executable.
  74. Export templates
  75. ~~~~~~~~~~~~~~~~
  76. Apart from setting up the platform, the export templates must be
  77. installed to be able to export projects. They can be obtained as a
  78. TPZ file (which is a renamed ZIP archive) from the
  79. `download page of the website <https://www.godotengine.org/download>`_.
  80. Once downloaded, they can be installed using the **Install Export Templates**
  81. option in the editor:
  82. .. image:: img/export_templates.webp
  83. .. _doc_exporting_projects_export_mode:
  84. Resource options
  85. ~~~~~~~~~~~~~~~~
  86. When exporting, Godot makes a list of all the files to export and then
  87. creates the package. There are 5 different modes for exporting:
  88. - Export all resources in the project
  89. - Export selected scenes (and dependencies)
  90. - Export selected resources (and dependencies)
  91. - Export all resources in the project except resources checked below
  92. - Export as dedicated server
  93. .. image:: img/export_resources.webp
  94. **Export all resources in the project** will export every resource in the
  95. project. **Export selected scenes** and **Export selected resources** gives
  96. you a list of the scenes or resources in the project, and you have to
  97. select every scene or resource you want to export.
  98. .. image:: img/export_selected.webp
  99. **Export all resources in the project except resources checked below** does
  100. exactly what it says, everything will be exported except for what you select
  101. in the list.
  102. **Export as dedicated server** will remove all visuals from a project and replace
  103. them with a placeholder. This includes Cubemap, CubemapArray, Material, Mesh,
  104. Texture2D, Texture2DArray, Texture3D. You can also go into the list of files and
  105. specify specific visual resources that you do wish to keep.
  106. .. note::
  107. Files and folders whose name begin with a period will never be included in
  108. the exported project. This is done to prevent version control folders like
  109. ``.git`` from being included in the exported PCK file.
  110. Below the list of resources are two filters that can be setup. The first allows
  111. non-resource files such as ``.txt``, ``.json`` and ``.csv`` to be exported with
  112. the project. The second filter can be used to exclude every file of a certain
  113. type without manually deselecting every one. For example, ``.png`` files.
  114. Configuration files
  115. -------------------
  116. The export configuration is stored in two files that can both be found in the project
  117. directory:
  118. - ``export_presets.cfg``: This file contains the vast majority of the export
  119. configuration and can be safely committed to version control. There is nothing
  120. in here that you would normally have to keep secret.
  121. - ``.godot/export_credentials.cfg``: This file contains export options that are
  122. considered confidential, like passwords and encryption keys. It should generally
  123. **not** be committed to version control or shared with others unless you know
  124. exactly what you are doing.
  125. Since the credentials file is usually kept out of version control systems, some
  126. export options will be missing if you clone the project to a new machine. The easiest
  127. way to deal with this is to copy the file manually from the old location to the new one.
  128. Exporting from the command line
  129. -------------------------------
  130. In production, it is useful to automate builds, and Godot supports this
  131. with the ``--export-release`` and ``--export-debug`` command line parameters.
  132. Exporting from the command line still requires an export preset to define
  133. the export parameters. A basic invocation of the command would be:
  134. .. code-block:: shell
  135. godot --export-release "Windows Desktop" some_name.exe
  136. This will export to ``some_name.exe``, assuming there is a preset
  137. called "Windows Desktop" and the template can be found. (The export preset name
  138. must be written within quotes if it contains spaces or special characters.)
  139. The output path is *relative to the project path* or *absolute*;
  140. **it does not respect the directory the command was invoked from**.
  141. The output file extension should match the one used by the Godot export process:
  142. - Windows: ``.exe``
  143. - macOS: ``.app`` or ``.zip`` (or ``.dmg`` when exporting *from* macOS)
  144. - Linux: Any extension (including none). ``.x86_64`` is typically used for 64-bit x86 binaries.
  145. - HTML5: ``.zip``
  146. - Android: ``.apk``
  147. - iOS: ``.zip``
  148. You can also configure it to export *only* the PCK or ZIP file, allowing
  149. a single exported main pack file to be used with multiple Godot executables.
  150. When doing so, the export preset name must still be specified on the command line:
  151. .. code-block:: shell
  152. godot --export-pack "Windows Desktop" some_name.pck
  153. It is often useful to combine the ``--export-release`` flag with the ``--path``
  154. flag, so that you do not need to ``cd`` to the project folder before running
  155. the command:
  156. .. code-block:: shell
  157. godot --path /path/to/project --export-release "Windows Desktop" some_name.exe
  158. .. seealso::
  159. See :ref:`doc_command_line_tutorial` for more information about using Godot
  160. from the command line.
  161. .. _doc_exporting_projects_pck_versus_zip:
  162. PCK versus ZIP pack file formats
  163. --------------------------------
  164. Each format has its upsides and downsides. PCK is the default and recommended
  165. format for most use cases, but you may want to use a ZIP archive instead
  166. depending on your needs.
  167. **PCK format:**
  168. - Uncompressed format. Larger file size, but faster to read/write.
  169. - Not readable and writable using tools normally present on the user's
  170. operating system, even though there are
  171. `third-party tools <https://github.com/hhyyrylainen/GodotPckTool>`__
  172. to extract and create PCK files.
  173. **ZIP format:**
  174. - Compressed format. Smaller file size, but slower to read/write.
  175. - Readable and writable using tools normally present on the user's operating system.
  176. This can be useful to make modding easier (see also :ref:`doc_exporting_pcks`).
  177. .. warning::
  178. Due to a `known bug <https://github.com/godotengine/godot/pull/42123>`__,
  179. when using a ZIP file as a pack file, the exported binary will not try to use
  180. it automatically. Therefore, you have to create a *launcher script* that
  181. the player can double-click or run from a terminal to launch the project:
  182. ::
  183. :: launch.bat (Windows)
  184. @echo off
  185. my_project.exe --main-pack my_project.zip
  186. # launch.sh (Linux)
  187. ./my_project.x86_64 --main-pack my_project.zip
  188. Save the launcher script and place it in the same folder as the exported binary.
  189. On Linux, make sure to give executable permissions to the launcher script using
  190. the command ``chmod +x launch.sh``.