Build and ship from the app
Check and export your game, then upload it to itch.io, Steam or the Epic Games Store.
What a build does
The stages run in order. The optional ones run only when you tick them.
- 01
Validate
Engine, platform, channel and credentials are checked before any work starts.
- 02
Copy the project
Into a temporary folder. Your working tree is never touched by a build.
- 03Optional
Check
Every scene is loaded and instantiated. Any error stops the build.
- 04Optional
Add the SDKs
The analytics SDK, and on Godot the feedback form, are added to the copy.
- 05Optional
Obfuscate
GDScript names are scrambled with GDMaim before packaging.
- 06
Export
The engine's own headless build, in release mode unless you choose debug.
- 07Optional
Share
Upload the build to your own storage so teammates can download it.
- 08
Announce
Post the release notes to your Slack and Discord channels.
What each engine can do
| Capability | Godot | Unity | Unreal |
|---|---|---|---|
| Headless build | Yes | Yes | Yes |
| Windows | Yes | Yes | Yes |
| Linux | Yes | Yes | Yes |
| macOS | No | Yes | No |
| WebListed, not selectable yet. | No | No | No |
| Upload to itch.io, Steam and Epic | Yes | Yes | Yes |
| Announce to Slack and Discord | Yes | Yes | Yes |
| Analytics SDK | Yes | Yes | Yes |
| In-game feedback form | Yes | No | No |
| Pre-build checks | Yes | No | No |
| Script obfuscation | Yes | No | No |
Where a build can go
Uploading is its own step, so you can retry an upload or send one build to a second channel without building again.
- itch.io
- Uploaded with butler, on the build's channel.
- Steam
- Uploaded with steamcmd. Players get it when you set it live on a branch in Steamworks.
- Epic Games Store
- Uploaded with BuildPatch Tool. It stays under Inactive Binaries unless the project has a sandbox set. Owners only.
- Your own storage
- Any S3-compatible bucket. Teammates download from the Builds list, and links last seven days.
A trigger builds and uploads in one go, because nobody is there to press the second button. That is how a nightly reaches your playtest channel.
A log you can read
- Grouped by stage, each with its duration and its error and warning counts
- Lines from the engine, butler and steamcmd are labelled as theirs
- A failed build opens on the stage that failed
- API keys and tokens are redacted before they reach the log
What it does not do
- No resuming. A failed build starts again from the beginning.
- One build at a time per machine. Stages run in order, not in parallel.
- No custom stages or build scripts.
- No Android, iOS or console targets. Web is not available yet.
- Your GdUnit4 tests are not run. Checks are a scene walk plus your own rules.