Why exporting?¶
Originally, Godot did not have any means to export projects. Thedevelopers would compile the proper binaries and build the packages foreach platform manually.
When more developers (and even non-programmers) started using it, andwhen our company started taking more projects at the same time, itbecame evident that this was a bottleneck.
On PC¶
Distributing a game project on PC with Godot is rather easy. Dropthe godot.exe (or godot) binary together in the same place as theengine.cfg file, zip it and you are done. This can be taken advantage of tomake custom installers.
It sounds simple, but there are probably a few reasons why the developermay not want to do this. The first one is that it may not be desirableto distribute loads of files. Some developers may not like curious userspeeking at how the game was made, others may find it inelegant,etc.
Another reason is that, for distribution, the developer might prefer aspecially compiled binary, which is smaller in size, more optimized anddoes not include tools inside (like the editor, debugger, etc.).
Finally, Godot has a simple but efficient system for creating DLCs asextra package files.
On mobile¶
The same scenario in mobile is a little worse. To distribute a projectin those devices, a binary for each of those platforms is built, thenadded to a native project together with the game data.
This can be troublesome because it means that the developer must befamiliarized with the SDK of each platform before even being able toexport. While learning each SDK is always encouraged, it can befrustrating to be forced to do it at an undesired time.
There is also another problem with this approach. Different devicesprefer some data in different formats to run. The main example of thisis texture compression. All PC hardware uses S3TC (BC) compression andthat has been standardized for more than a decade, but mobile devicesuse different formats for texture compression, such as PVRCT (iOS) orETC (Android).
Export menu¶
After many attempts at different export workflows, the current one hasproven to work the best. At the time of this writing, not all platforms aresupported yet, but the supported platforms continue to grow.
To open the export menu, click the “Export” button:
The export menu will open, however it will be completely empty.
That is because we need to add an export preset. To do that click theAdd.. button at the top of the export menu. This will open a drop downlist of platforms to choose from for an export preset.
The default options are often enough to export, so tweaking them is notnecessary, but provide extra control. However, many platforms require additionaltools (SDKs) to be installed to be able to export. Additionally, Godotneeds export templates installed to create packages. The export menuwill complain when something is missing and will not allow the user toexport for that platform until they resolve it:
At that time, the user is expected to come back to the documentation and followinstructions on how to properly set up that platform.
Export templates¶
Apart from setting up the platform, the export templates must beinstalled to be able to export projects. They can be obtained as a.tpz (a renamed .zip) file from the download page of the website.
Once downloaded, they can be installed using the “Install ExportTemplates” option in the editor:
Export mode¶
When exporting, Godot makes a list of all the files to export and thencreates the package. There are 3 different modes for exporting:
- Export every single file in the project
- Export only resources (+custom filter), this is default.
- Export only selected resources (+custom filter)
- Export every single file - This mode exports every single file inthe project. This is good to test if something is being forgotten,but developers often have a lot of unrelated stuff around in the devdirectory, which makes it a bad idea.
- Export only resources - Only resources are exported. For mostprojects, this is enough. However many developers like to use customdatafiles in their games. To compensate for this, filters can beadded for extra extensions (like, .txt,.csv, etc.).
- Export only selected resources - Only select resources from alist are exported. This is probably overkill for most projects, butin some cases it is justified (usually huge projects). This modeoffers total control of what is exported. Individual resources can beselected and dependency detection is performed to ensure thateverything needed is added. As a plus, this mode allows to“Bundle” scenes and dependencies into a single file, which isreally useful for games distributed on optical media.
Export from Command Line¶
In production it is useful to automate builds, and Godot supports thiswith the --export
and --export-debug
command line parameters.Exporting from command line still requires an export template to definethe export parameters. A basic invocation of the export would begodot --export "Windows Desktop" some_name
Which, assuming there is a preset called “Windows Desktop” and thetemplate can be found, will export to some_name.exe
. The outputpath is relative to the project path or absolute. It does not respectthe directory the command was invoked from.
You can also configure it to export only the .pck or .zip file (allowinga single export to be used with multiple Godot executables). Thistakes place if:
- The export preset is not marked as runnable
- The target name ends with .pck or with .zip
It is often useful to combine the --export
flag with the --path
flag, and to create a dedicated export template for automated export:godot --path path/to/project --export "pck" game_name.pck