exporting_projects.rst 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. .. _doc_exporting_projects:
  2. Exporting projects
  3. ==================
  4. Why exporting?
  5. --------------
  6. Originally, Godot did not have any means to export projects. The
  7. developers would compile the proper binaries and build the packages for
  8. each platform manually.
  9. When more developers (and even non-programmers) started using it, and
  10. when our company started taking more projects at the same time, it
  11. became evident that this was a bottleneck.
  12. On PC
  13. ~~~~~
  14. Distributing a game project on PC with Godot is rather easy. Drop
  15. the godot.exe (or godot) binary together in the same place as the
  16. engine.cfg file, zip it and you are done. This can be taken advantage of to
  17. make custom installers.
  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,
  22. etc.
  23. Another reason is that, for distribution, the developer might prefer a
  24. specially compiled binary, which is smaller in size, more optimized and
  25. does not include tools inside (like the editor, debugger, etc.).
  26. Finally, Godot has a simple but efficient system for creating DLCs as
  27. extra package files.
  28. On mobile
  29. ~~~~~~~~~
  30. The same scenario in mobile is a little worse. To distribute a project
  31. in those devices, a binary for each of those platforms is built, then
  32. added to a native project together 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 PVRCT (iOS) or
  42. ETC (Android).
  43. Export menu
  44. -----------
  45. After many attempts at different export workflows, the current one has
  46. proven to work the best. At the time of this writing, not all platforms are
  47. supported yet, but the supported platforms continue to grow.
  48. To open the export menu, click the "Export" button:
  49. .. image:: img/export.png
  50. The export menu will open, however it will be completely empty.
  51. .. image:: img/export_dialog.png
  52. That is because we need to add an export preset. To do that click the
  53. `Add..` button at the top of the export menu. This will open a drop down
  54. list of platforms to choose from for an export preset.
  55. .. image:: img/export_preset.png
  56. The default options are often enough to export, so tweaking them is not
  57. necessary, but provide extra control. 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.png
  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. Export templates
  66. ~~~~~~~~~~~~~~~~
  67. Apart from setting up the platform, the export templates must be
  68. installed to be able to export projects. They can be obtained as a
  69. .tpz (a renamed .zip) file from the `download page of the website
  70. <https://www.godotengine.org/download>`_.
  71. Once downloaded, they can be installed using the "Install Export
  72. Templates" option in the editor:
  73. .. image:: img/exptemp.png
  74. Export mode
  75. ~~~~~~~~~~~
  76. When exporting, Godot makes a list of all the files to export and then
  77. creates the package. There are 3 different modes for exporting:
  78. - Export every single file in the project
  79. - Export only resources (+custom filter), this is default.
  80. - Export only selected resources (+custom filter)
  81. .. image:: img/expres.png
  82. - **Export every single file** - This mode exports every single file in
  83. the project. This is good to test if something is being forgotten,
  84. but developers often have a lot of unrelated stuff around in the dev
  85. directory, which makes it a bad idea.
  86. - **Export only resources** - Only resources are exported. For most
  87. projects, this is enough. However many developers like to use custom
  88. datafiles in their games. To compensate for this, filters can be
  89. added for extra extensions (like, *.txt,*.csv, etc.).
  90. - **Export only selected resources** - Only select resources from a
  91. list are exported. This is probably overkill for most projects, but
  92. in some cases it is justified (usually huge projects). This mode
  93. offers total control of what is exported. Individual resources can be
  94. selected and dependency detection is performed to ensure that
  95. everything needed is added. As a plus, this mode allows to
  96. "Bundle" scenes and dependencies into a single file, which is
  97. *really* useful for games distributed on optical media.
  98. .. image:: img/expselected.png
  99. Export from Command Line
  100. ------------------------
  101. In production it is useful to automate builds, and Godot supports this
  102. with the ``--export`` and ``--export-debug`` command line parameters.
  103. Exporting from command line still requires an export template to define
  104. the export parameters. A basic invocation of the export would be
  105. ``godot --export "Windows Desktop" some_name``
  106. Which, assuming there is a preset called "Windows Desktop" and the
  107. template can be found, will export to ``some_name.exe``. The output
  108. path is relative to the project path or absolute. It does not respect
  109. the directory the command was invoked from.
  110. You can also configure it to export only the .pck or .zip file (allowing
  111. a single export to be used with multiple Godot executables). This
  112. takes place if:
  113. - The export preset is not marked as runnable
  114. - The target name ends with `.pck` or with `.zip`
  115. It is often useful to combine the ``--export`` flag with the ``--path``
  116. flag, and to create a dedicated export template for automated export:
  117. ``godot --path path/to/project --export "pck" game_name.pck``