Skip to content
cccskills
FreePublished on GitHub

godot-export

Prepare Godot 4.7 games for desktop, web, and mobile distribution. Covers export templates, platform presets, automated command-line builds, and common setup issues for browser games and servers that run without a window.

OriginalShow the original description

Export and build a Godot 4.7 project for distribution: install export templates, define export presets (Windows/macOS/Linux/Web/Android), run headless command-line exports for CI, and handle web (HTML5) COOP/COEP and dedicated-server/headless builds. Use when exporting a Godot game, configuring export_presets.cfg, building for web/desktop/mobile, or automating builds from the command line.

Run score Not tested

See how to install

Good for

  • Exporting desktop and mobile game builds
  • Automating builds from the command line
  • Troubleshooting web export settings
  • Building a server that runs without a window

Files included (2)

  • SKILL.md5.9 KB
  • references/presets-and-cli.md4.8 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Godot Export & Builds (4.x)

Turn a project into runnable platform builds via export presets and the command line, and handle the web/dedicated-server gotchas. Targets Godot 4.7.

When to use

  • Use when producing a shippable build: installing export templates, creating/editing export presets, exporting from the editor or headless CLI (CI), or troubleshooting web (HTML5) and dedicated-server exports.

When not to use: storefront publishing flows → steam-publish/itch-publish; the networking code of a server → godot-multiplayer (this skill covers building it headless).

Core workflow

  1. Install export templates matching your engine version: Editor menu > Manage Export Templates (download), or install the .tpz offline. Versions must match the editor exactly. Since 4.7 the downloader can fetch templates for a single platform or architecture instead of the full set.
  2. Add export presets in Project > Export: pick a platform (Windows Desktop, macOS, Linux, Web, Android, iOS), set the export path, icons, features, and resource include/exclude filters. Presets are saved to export_presets.cfg.
  3. Export from the editor with Export Project (release) or Export PCK/ZIP.
  4. Or export headless from the CLI for automation/CI using --export-release "<preset name>" <output path>.
  5. Per platform: Web needs cross-origin isolation (COOP/COEP) only if the preset's Thread Support is on (off by default); Android needs the SDK/keystore; macOS/iOS need signing for distribution.
  6. Smoke-test the build on the target before shipping — exported builds use res:// read-only; write to user://.

Patterns

1. Headless CLI export (CI-friendly)

# Preset name must match exactly what's in Project > Export (quote it).
# Run from the project directory (where project.godot lives).
godot --headless --export-release "Windows Desktop" build/windows/game.exe
godot --headless --export-release "Linux"           build/linux/game.x86_64
godot --headless --export-release "Web"             build/web/index.html

# Debug build (includes debug symbols / remote debug):
godot --headless --export-debug "Windows Desktop" build/windows/game_debug.exe

# Export only the data pack (no executable):
godot --headless --export-pack "Linux" build/game.pck

# Export only files changed since the given base pack(s):
godot --headless --export-patch "Linux" build/patch1.pck --patches build/game.pck

2. Run a project headless (dedicated server / tests)

# No window/GPU — for a server build or automated runs.
godot --headless --path . res://server_main.tscn
# Quit after N main-loop iterations (frames, NOT seconds) — handy for a headless smoke test:
godot --headless --path . --quit-after 600

3. Detect the build context at runtime

func _ready() -> void:
    if OS.has_feature("dedicated_server") or DisplayServer.get_name() == "headless":
        _start_server_only()          # skip rendering/UI on a headless server
    if OS.has_feature("web"):
        _apply_web_tweaks()
    # Custom feature tags (added per preset) are also queryable:
    # if OS.has_feature("demo"): limit_content()

4. Choose write paths that survive export

# res:// is READ-ONLY in exported games. Always write to user://.
func save_path() -> String:
    return "user://savegame.tres"     # resolves to the OS app-data dir

func _ready() -> void:
    print(OS.get_user_data_dir())     # where user:// actually lives

Pitfalls

  • "No export template found". Templates must match the exact editor version (incl. beta/rc). Re-download via Manage Export Templates after upgrading Godot.
  • Preset name mismatch in CLI. --export-release "Windows" fails if the preset is named "Windows Desktop". Names are case- and space-sensitive; quote them.
  • Web build shows a blank page / threads error. Builds with the preset's Thread Support option enabled require the server to send Cross-Origin-Opener-Policy: same-origin and Cross-Origin-Embedder-Policy: require-corp (cross-origin isolation for SharedArrayBuffer). Must be served over HTTP(S), not opened as a file://. itch.io has a "SharedArrayBuffer support" toggle for this. If the host cannot set headers (GitHub Pages), leave Thread Support off — the default since 4.3.
  • Writing to res:// at runtime fails in exports (read-only, packed). Use user://.
  • Missing resources in the build. Non-resource files (e.g. external .json, .txt) are not auto-included — add them via the preset's Resources > Filters to export non-resource files (e.g. *.json).
  • Android export needs setup: Android SDK/JDK paths in Editor Settings, a debug or release keystore, and the INTERNET permission for networked games.
  • macOS/iOS distribution requires signing/notarization; unsigned macOS apps are blocked by Gatekeeper.
  • Debug vs release. --export-debug enables remote debugging and debug checks; ship --export-release.

References

  • For the export_presets.cfg structure, all useful CLI flags, custom feature tags, PCK/expansion patching, encryption, and per-platform setup (Android keystore, macOS signing, web headers), read references/presets-and-cli.md.

Related skills

  • godot-multiplayer — the dedicated-server code you export headless.
  • steam-publish / itch-publish — getting the build to players.
  • prototype-fast / game-jam — quick web/desktop builds for sharing.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Implement reusable decision systems for game characters using behavior trees, which organize conditional actions, and Utility AI, which scores available choices. Build either approach or combine them to control patrols, combat, targeting, and needs-based behavior.

  • Build a reusable behavior tree runtime
  • Choose attacks or targets using action scores
  • Combine patrol and combat trees with Utility AI
gamedev-skills/awesome-gamedev-agent-skills4KUpdated Oct 24, 2026

audio-design

FreeSummary

Design game audio with grouped volume controls, music that responds to gameplay, and varied sound effects. Plan how music lowers during dialogue and how events follow the beat, using principles that can be adapted to different game engines.

  • Plan grouped volume controls for music, effects, and dialogue
  • Lower background music while dialogue plays
  • Change music layers or segments with gameplay intensity
gamedev-skills/awesome-gamedev-agent-skills4KUpdated Oct 24, 2026

bevy-ecs

FreeSummary

Build and debug Rust games in Bevy using ECS, a way to separate game data from behavior. Organize apps and plugins, query entities, control execution order, and fix conflicting data access or frame-dependent movement.

  • Organizing a Bevy app with plugins
  • Defining components and shared resources
  • Fixing conflicting queries and execution order
gamedev-skills/awesome-gamedev-agent-skills4KUpdated Oct 24, 2026

camera-systems

FreeSummary

Build and tune game cameras for smooth 2D following and 3D viewing. Covers motion smoothing, look-ahead, level boundaries, wall avoidance, and framing multiple targets, with techniques that apply across engines.

  • Smooth player-follow cameras in 2D games
  • Keep the camera view within level boundaries
  • Prevent third-person cameras from clipping through walls
gamedev-skills/awesome-gamedev-agent-skills4KUpdated Oct 24, 2026

card-game

FreeSummary

Design the core rules of a card game, including decks, hands, discards, drawing, shuffling, turns, and resource costs. Represent card effects as data and define their resolution order so card movement and gameplay outcomes follow explicit rules.

  • Building a deckbuilder or trading card game
  • Implementing draws and discard reshuffling
  • Defining turn phases and card costs
gamedev-skills/awesome-gamedev-agent-skills4KUpdated Oct 24, 2026

Plan and prepare consistent game artwork, from sprites and backgrounds to UI icons and 3D briefs. Organize asset requirements, generate or source related visuals, standardize files, and check their appearance and technical fit inside the game.

  • Create sprites and backgrounds with a consistent visual style
  • Check asset dimensions, transparency, and tile seams
  • Track asset sources and licenses before release
gamedev-skills/awesome-gamedev-agent-skills4KUpdated Oct 24, 2026

See all skills by gamedev-skills

Report a problem with this skill