Godot Export

作者 gamedev-skillsd4b0e35550c5無授權條款1.3K 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫11 天前更新

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.

AI 產生的概覽

指導如何匯出與建置 Godot 4.7 專案,涵蓋桌面、Web、行動裝置與無頭目標。

功能
說明如何安裝與編輯器版本相符的匯出範本、在 export_presets.cfg 中定義匯出預設集,以及透過編輯器或無頭命令列匯出 Windows、macOS、Linux、Web 與 Android 版本。內容涵蓋 CI 自動化、Web 的 COOP/COEP 跨來源隔離、專用伺服器無頭建置,以及執行時判斷建置環境。也列出常見問題,例如預設集名稱不符、res:// 唯讀路徑與非資源檔案遺漏。
適用情境
適用於產出可發佈的 Godot 建置、設定匯出預設集、為 CI 執行命令列匯出,或排查 Web 與專用伺服器匯出問題。不適用於商店上架流程,也不用於撰寫伺服器的網路程式碼。
執行需求
需要 Godot 4.7 編輯器及版本相符的匯出範本;Android 匯出需要 Android SDK/JDK 與金鑰庫,macOS/iOS 發佈需要簽章。Web 建置需要伺服器送出 COOP/COEP 標頭。僅為說明文件,未附任何指令碼。

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.
  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) for threads; 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)

bash
# 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.exegodot --headless --export-release "Linux/X11"       build/linux/game.x86_64godot --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/X11" build/game.pck

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

bash
# 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

gdscript
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

gdscript
# 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. HTML5 builds that use threads 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.
  • 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.

來源與署名

來源:gamedev-skills/awesome-gamedev-agent-skills位於skills/godot/godot-export提交d4b0e35

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架