export-pipeline について
Godot 4.3+ のエクスポート手順を扱うスキルです。プラットフォーム設定から CLI ビルド、配布までを説明し、ローカルや CI でゲームをリリースする開発者を対象としています。
主な機能
- 01複数プラットフォームのプリセット設定
- 02ヘッドレス CLI によるエクスポート
- 03GitHub Actions のビルドマトリクス設定
- 04バージョン注入と認証情報の管理
- 05Shader Baker と PCK の利用
活用シーン
- 01Windows、Linux、Web 向けのビルド生成
- 02CI でのビルドと成果物アップロードの自動化
- 03パッチや DLC 用の PCK エクスポート
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jame581/ godotprompter --skill export-pipelineインストール後、Claude Code で/export-pipelineを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/ci-cd-github-actions.mddistribution-itch-steam.mdsteam-release-planning.mdversioning.md詳細
Godot 4.3+ のエクスポートパイプライン
すべての例は、非推奨 API を使用せずに Godot 4.3+ を対象としています。まず GDScript を示し、該当する場合は C# も続けて示します。
関連スキル: CI/CD テスト統合については godot-testing、エクスポート前のパフォーマンスチェックについては godot-optimization、プラットフォーム固有の解像度設定については responsive-ui、Android/iOS のエクスポートの詳細については mobile-development、ブラウザー向けビルドとホスティングについては web-export を参照してください。
1. エクスポートプリセット
エディターでプリセットを作成する
Project → Export を開き、Add… をクリックして、対象のプラットフォームを選択します。各プリセットは、export_presets.cfg 内の1つのエントリに対応します。同じプラットフォームに複数のプリセットを作成できます(例:Windows のデバッグビルドとリリースビルド)。
プラットフォームごとに必要な初回設定:
- Export Templates は、Editor → Export Templates からダウンロードする必要があります。
- プラットフォーム固有のツールチェーン(Android SDK、Xcode など)は、別途インストールする必要があります。
export_presets.cfg
Godot は、プロジェクトのルートに export_presets.cfg を書き込みます。このファイルはコミットしてください。シークレットとしてマークされたオプション(キーストアとコード署名のパスおよびパスワード、暗号化キー)は代わりに .godot/export_credentials.cfg に保存されます。このファイルは絶対にコミットしないでください。CI では、GODOT_ANDROID_KEYSTORE_RELEASE_PASSWORD などの環境変数を使って値を渡します。
プリセットの構造例(Windows リリース):
[preset.0]
name="Windows Desktop"
platform="Windows Desktop"
runnable=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="build/windows/MyGame.exe"
encryption_include_filters=""
encryption_exclude_filters=""
encrypt_pck=false
encrypt_directory=false
[preset.0.options]
custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=1
binary_format/embed_pck=true
texture_format/s3tc_bptc=true
texture_format/etc2_astc=false
binary_format/architecture="x86_64"
codesign/enable=false
codesign/timestamp=true
codesign/timestamp_server_url=""
codesign/digest_algorithm=1
codesign/description=""
codesign/custom_options=PackedStringArray()
application/icon=""
application/console_wrapper_icon=""
application/icon_interpolation=4
application/file_version=""
application/product_version=""
application/company_name=""
application/product_name=""
application/file_description=""
application/copyright=""
application/trademarks=""
application/export_angle=0
application/export_d3d12=0
application/d3d12_agility_sdk_multiarch=true
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
ssh_remote_deploy/extra_args_ssh=""
ssh_remote_deploy/extra_args_scp=""
ssh_remote_deploy/run_script="#!/usr/bin/env bash\nexport DISPLAY=:0\n\"{temp_dir}/{exe_name}\" {cmd_args}"
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash\nkill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")\nrm -rf \"{temp_dir}\""
プリセットが変更されるたびに、エディターは
export_presets.cfgを書き換えます。エディターを開いたまま手動で編集しないでください。
⚠️ Godot 4.7 での変更点: 「runnable」フラグはエクスポートプリセットから切り離されました。
runnable=(上記の例では 4.3~4.6 用に表示)は、export_presets.cfgのプリセットごとのプロパティではなくなりました。4.7 のエディターは、同じファイル内にトップレベルの[runnable_presets]セクション(プラットフォーム名 → プリセット名)を書き込み、従来のキーも引き続き読み込みます。4.7 のエディターで保存した後、ファイルからこの行が消えていても問題ありません。GH-114930 を参照してください。
Godot 4.7+: スパース PCK エクスポート(パッチパック)では、既存の
encrypt_pck/encrypt_directoryプリセットオプションに加えて、ファイルインデックスを暗号化できます。(GH-113920)
2. プラットフォーム固有の設定
| プラットフォーム | 主な設定/考慮事項 |
|---|---|
| Windows | application/icon(.ico ファイル)を設定します。コード署名には .pfx 証明書が必要です。codesign/enable=true を設定し、環境変数で codesign/identity と codesign/password を指定します。コード署名がない場合、Windows SmartScreen によってユーザーに警告が表示されます。 |
| Linux | コード署名は不要です。バイナリは実行可能ファイル(0755)として書き込まれます。アップロードやアーカイブの手順で実行ビットが失われた場合は、chmod +x を再実行してください。配布には tarball または AppImage を使用します。 |
| macOS | Gatekeeper が警告なしで起動を許可するには、公証が必要です。codesign/codesign(rcodesign、または Mac 上の Xcode codesign)と notarization/notarization(rcodesign または Xcode notarytool)を設定します。エクスポート時に公証が申請されます。Info.plist のエントリは application/*(バンドル ID、バージョン)と privacy/*(使用目的の説明)です。 |
| Web | 互換性レンダラーのみで、C# は使用できません。プリセットの variant/thread_support はデフォルトでオフ(Godot 4.3+)のため、ビルドは任意の静的ホストで実行できます。スレッドを有効にしたビルドでは、Cross-Origin-Opener-Policy: same-origin と Cross-Origin-Embedder-Policy: require-corp ヘッダーが必要です。エクスポートされた出力は .html + .js + .wasm + .pck のバンドルです。詳細:web-export。 |
| Android | リリース署名にはキーストアが必要です。keystore/release に .keystore のパスを設定し、環境変数で keystore/release_user と keystore/release_password を指定します。プリセットの permissions/* で権限を宣言します。package/unique_name には、逆 DNS 形式の文字列(例:com.studio.mygame)を設定します。 |
| iOS | 有効な Apple プロビジョニングプロファイル(.mobileprovision)が必要です。application/bundle_identifier、application/code_sign_identity_release、application/provisioning_profile_uuid_release を設定します。配布用ビルドには App Store 配布証明書が必要です。 |
3. CLI からのエクスポート
Godot をヘッドレスモードで実行すると、GUI を開かずにエクスポートできます。これは CI/CD で標準的な方法です。
リリースエクスポート
godot --headless --export-release "Windows Desktop" build/windows/MyGame.exe
デバッグエクスポート
godot --headless --export-debug "Windows Desktop" build/windows/MyGame.exe
.pck のみをエクスポート(実行ファイルなし)
固定のエンジンバイナリと一緒に更新されたゲームデータのみを配布する場合(例:DLC やパッチの配布)は、--export-pack を使用します。
godot --headless --export-pack "Windows Desktop" build/windows/MyGame.pck
Godot 4.7+: Android 用のパッチ PCK をエクスポートする際、APK または AAB をベースパックとして指定でき、PCK パッチのワークフローを Android ビルドにも拡張できます。(GH-116553)
メモリ内データのパッキング(Godot 4.7+)
PCKPacker.add_file_from_buffer(target_path, data, encrypt = false) は、PackedByteArray をディスク上に一時ファイルを作成せずに PCK に直接パックします。ビルドスクリプトからパッチコンテンツを生成する場合に便利です。
var build_info: String = "v" + ProjectSettings.get_setting("application/config/version", "dev")
var packer := PCKPacker.new()
packer.pck_start("user://patch_1.pck")
packer.add_file_from_buffer("res://data/build_info.txt", build_info.to_utf8_buffer())
packer.flush()
string buildInfo = "v" + ProjectSettings.GetSetting("application/config/version", "dev").AsString();
var packer = new PckPacker();
packer.PckStart("user://patch_1.pck");
packer.AddFileFromBuffer("res://data/build_info.txt", buildInfo.ToUtf8Buffer());
packer.Flush();
主な CLI フラグ
| フラグ | 用途 |
|---|---|
--headless | ディスプレイサーバーなしで実行します。サーバー/CI 環境で必要です |
--export-release "Preset Name" path | リリーステンプレートを使用してエクスポートします |
--export-debug "Preset Name" path | デバッグテンプレートを使用してエクスポートします |
--export-pack "Preset Name" path | .pck リソースパックのみをエクスポートします |
--quit-after N | N 回のメインループ反復後に終了します(エクスポートで必要になることはほとんどありません) |
CLI フラグのプリセット名は、
export_presets.cfgのname=と、大文字・小文字やスペースも含めて完全に一致させる必要があります。
4. GitHub Actions による CI/CD
GitHub Actions のマトリックス内で godot --headless --export-release を実行し、プッシュやタグ付きリリースのたびに Windows、Linux、Web 向けの成果物をビルドします。chickensoft-games/setup-godot@v2 を使ってエンジンとエクスポートテンプレートをインストールします(C# プロジェクトでは use-dotnet: true を設定してください)。エクスポート前に git describe からバージョンを注入し、バイナリ内の application/config/version が正しい値になるようにします。
マトリックスプリセット、成果物のアップロード、Linux の実行ビットの処理を含む .github/workflows/export.yml の全体については、references/ci-cd-github-actions.md を参照してください。
5. バージョン管理
application/config/version にバージョンを設定し、実行時に ProjectSettings.get_setting() で読み取ります。エクスポート時に Git からバージョンを注入するには、エクスポート手順の前に、SceneTree を拡張したスクリプトである --script ツールを実行し、OS.execute() を通じて git describe --tags --always --dirty を呼び出します。タグにはセマンティックバージョニング(v1.2.3)を使用します。
実行時のバージョンラベル、
inject_version.gdツール、タグの規則については、references/versioning.md を参照してください。
6. 配布:itch.io と Steam
itch.io では Butler CLI を使用します:butler push build/windows/ my-studio/my-game:windows --userversion "$VERSION"。チャンネル名には規則があります(windows、linux、macos、web、android)。CI では Ayowel/butler-to-itch@v1 アクションを使うと、すべての成果物を一度にアップロードできます。API キーは BUTLER_API_KEY シークレットとして保存してください。
Steam には、Steamworks SDK(再配布不可のため、公開リポジトリに含めないでください)、エンジンバインディング用の GodotSteam アドオン、そして steamcmd +run_app_build app_build.vdf で実行するデポ構成の 3 つが必要です。Steam の統合はエクスポートパイプライン自体の対象外です。
butler のインストール手順全体、チャンネル名の一覧、deploy-itch GitHub Actions ジョブ、Steam の構成要素の内訳については、references/distribution-itch-steam.md を参照してください。リリースに関する項目(アプリ料金の支払いから 21 日間の待機期間、Coming Soon の最低 2 週間の掲載期間、審査期間、ストアアセットのサイズ、デモと Next Fest の締め切り、割引のルール)については、references/steam-release-planning.md を参照してください。
7. シェーダーベイカー(Godot 4.5 以降)
Godot 4.5 では、エクスポート時に対象プラットフォーム向けのシェーダーを事前コンパイルするツール、Shader Baker が導入されています。主に初回起動時の読み込み時間を短縮します。シェーダー変換に時間がかかる Direct3D 12 と Metal で最も効果があります。パイプラインコンパイルによるスタッターは解消されないため、引き続きパイプラインの事前コンパイルが必要です。
有効化
Project → Export でプリセットを開き、Shader Baker セクションを探します。Enabled(shader_baker/enabled。デフォルトでは無効)にチェックを入れます。バックエンドを選択する項目はありません。Forward+ レンダラーと Mobile レンダラーのみが対象で、対象プラットフォームの rendering/rendering_device/driver 設定に従ってベイクされます。
Shader Baker を使うと、エクスポートに少し時間がかかり、PCK のサイズが数メガバイト大きくなります。ベイク済みシェーダーは
.pckファイルに埋め込まれます。
プラットフォーム別の効果
| プラットフォーム | バックエンド | 効果 |
|---|---|---|
| macOS / iOS | Metal | 最も大きな効果 — 初回読み込み時の遅い SPIR-V → Metal シェーダー変換を省略します |
| Windows | D3D12 | 大きな効果 — SPIR-V → DXIL 変換を省略します。パイプラインの作成は引き続き実行時に行われます |
| Android(Mobile レンダラー) | Vulkan | 初回読み込みが短縮されます。Compatibility(GLES3)レンダラーには効果がありません |
| Linux / Windows | Vulkan | 効果は小さめです — Vulkan は SPIR-V を直接使用します |
CI ワークフローに関する注意
Shader Baker は、エディターの GUI または CLI(--export-release)からエクスポートすると自動的に実行されます。設定はプリセットで行い、独立した CLI フラグはありません。注意点として、エディターがベイクできるのは、その OS がサポートするドライバーに限られます。Linux ランナーでベイクできるのは Vulkan のみのため、D3D12 のプリセットには Windows ランナー、Metal のプリセットには macOS ランナーが必要です。
# Shader Baker runs as part of normal export (no extra flag needed).
godot --headless --export-release "Windows Desktop" build/windows/MyGame.exe
8. Windows エクスポート — ネイティブなリソース編集(Godot 4.5 以降)
Godot 4.5 より前は、Windows で .exe のメタデータ(バージョン情報、アイコン、著作権、会社名)を変更するには、外部ツールの rcedit が必要でした。Godot 4.5 では、エクスポート時にこれらすべてをネイティブに処理できるため、rcedit のダウンロードや設定は不要です。
ネイティブに編集される項目
| エクスポートプリセットのフィールド | .exe への反映内容 |
|---|---|
application/file_version | プロパティ → 詳細に表示されるファイルバージョン |
application/product_version | 製品バージョン |
application/company_name | 会社名 |
application/product_name | 製品名 |
application/file_description | 説明 |
application/copyright | 法的著作権表示 |
application/icon | アイコン画像(ICO、PNG、WebP、SVG)を変換して、実行ファイルのアイコンとして埋め込みます |
セットアップ
- プロジェクト → エクスポート → Windows デスクトップのプリセットを開きます。
- プリセットオプションの アプリケーション にある
application/*フィールドに値を入力します。 - 通常どおりエクスポートすると、Godot がメタデータを
.exeに直接書き込みます。
CI からの rcedit の削除: 以前、プロジェクトの CI で
rceditをダウンロードし、エクスポート後の手順として実行していた場合、その手順は削除できます。Godot 4.5 以降では、エクスポートプリセットのフィールドがその役割を完全に置き換えます。
9. チェックリスト
- 対象の Godot バージョン用のエクスポートテンプレートをダウンロード済み(エディター → エクスポートテンプレート)
-
export_presets.cfgをバージョン管理にコミット済み - シークレット(キーストアのパスワード、codesign のパスワード、API キー)はファイルに保存せず、環境変数または CI のシークレットに保存済み
- 各プリセットに一意の
name=を設定し、CLI の--export-release引数と完全に一致 - エクスポートコマンドの実行前に出力ディレクトリを作成済み(
mkdir -p) - パッケージ化後も Linux バイナリが実行可能(実行ビットが失われた場合は
chmod +x) - プロジェクトの
project.godotにあるapplication/config/versionに、エクスポート時に Git タグから値を設定 - Web エクスポート:スレッドのサポートをオフにするか、ホストが
COOPとCOEPヘッダーを送信(web-export を参照) - Android のリリースプリセットで、デバッグ用キーストアではなく署名済みキーストアを使用
- 配布を予定している macOS ビルドにコード署名と公証を実施
- 個々のプラットフォームビルドをダウンロードできるよう、CI でプラットフォームごとにアーティファクトをアップロード
- itch.io のチャンネルが命名規則(windows、linux、macos、web、android)に従っている
- Butler の API キーをハードコードせず、CI のシークレットに保存
- Steam のデポ設定を公開リポジトリに含めない
- Steam のリリース日が所定のリードタイム(手数料の待機期間 21 日、Coming Soon の表示期間 2 週間、審査期間 7 営業日)に照らして確認済み
- D3D12 および Metal の対象(Forward+/Mobile のみ)で Shader Baker を有効にし、それぞれ Windows/macOS ホストからエクスポート(Godot 4.5 以降)
- Windows の
.exeメタデータ(バージョン、アイコン、会社名)をエクスポートプリセットに設定 — rcedit は不要(Godot 4.5 以降)