0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GodotのゲームをWebにエクスポートして、プレイできるリンクを共有する方法

0
Posted at

この記事はhttps://ziva.sh/blogs/godot-web-exportの日本語版です(英語の原文はZiva.shが2026年11月5日に公開)。

はじめに

GodotのゲームをWebブラウザーで遊べるようにして、リンクで共有したい人向けの記事です。次の内容を扱います。

  • Godot 4.7.2でのWebエクスポートの手順と、出力されるファイルのサイズ
  • 「Cross Origin Isolation」と「SharedArrayBuffer」がないというエラーの3つの直し方
  • itch.io、GitHub Pages、Netlify、Cloudflare Pages、Lobsite、ZivaのShare Web buildでのリンクの共有と、各ホストの制限

Godot 4のゲームをブラウザーで動かすには、Webプリセット(シングルスレッド。Godot 4.3以降のデフォルト)でエクスポートし、フォルダーをHTTPで配信して、リンクを発行できるホストにアップロードします。ホストには、itch.io、GitHub Pagesのような静的ホスト、またはZivaを使っている場合はZivaのShare Web buildメニュー項目があります。Share Web buildは、Godotエディターの中からエクスポートとアップロードを行い、play.ziva.shのリンクを返します。

このページはZiva.shが公開しており、ZivaもZiva.shが開発しています。他のツールの情報は各ツールの公式ページをもとにした、2026年11月5日時点のものです。

このページのGodotのコマンドはすべて、2026年11月5日にLinux上のGodot 4.7.2で、公開されているStar Catcherサンプルを使って実行し(C#のテストはスクリプトが1つだけのC#プロジェクトで実行)、各ビルドをChromiumで読み込みました。Safariではテストしていません。

プレイできるリンクを得る方法

ホスト 価格 制限 非公開のリンク スレッド対応のビルド
itch.io itch.io:無料 itch.io:展開後500MB、1,000ファイル、1ファイルあたり200MB itch.io:Draftのシークレットリンク、またはパスワード付きのRestricted itch.io:SharedArrayBuffer supportのチェックボックス
GitHub Pages GitHub Pages:公開リポジトリーなら無料 GitHub Pages:1サイトあたり1GB、帯域幅は月100GBのソフトリミット GitHub Pages:この記事では扱わない GitHub Pages:ドキュメントにヘッダー設定の記載なし。PWAの回避策を使う
Netlify Netlify:月ごとのクレジット付きの無料プラン Netlify Drop:「individual files over 10MB may cause your deploy to get stuck」(10MBを超える個別のファイルがあるとデプロイが止まることがある)との記載 Netlify Drop:サイトを自分のアカウントに引き継ぐ(claim)までの一時的なパスワード Netlify:_headersファイル
Cloudflare Pages Cloudflare Pages:無料プラン Cloudflare Pages:1ファイルあたり25MiB、20,000ファイル Cloudflare Pages:この記事では扱わない Cloudflare Pages:_headersファイル
Lobsite Lobsite:無料、Godot 4なら年$20 Lobsiteの無料プラン:1ファイルあたり5MB。Standard:1ファイルあたり100MB、1サイトあたり2GB Lobsite:Standardでパスワードを設定できる Lobsite:CLI経由のlobsite.tomlでヘッダーを設定
Ziva Share Web build Ziva:無料のHobbyを含むすべてのプラン Ziva:圧縮後300MB Ziva:限定公開のプレビューのみ。公開したゲームは誰でも見られる Ziva:ヘッダーは自動で設定。Godot 4.3以降はシングルスレッド

Godot 4.7.2のシングルスレッドのindex.wasmは、圧縮前で39,514,754バイトです。これはCloudflare Pagesの1ファイルあたり25MiBの制限と、Lobsiteの無料プランの5MBの制限を超えており、NetlifyがDropのデプロイが止まることがあるとしている10MBも超えています。そのため、無料のホストを選ぶ前に1ファイルあたりの制限を確認してください。古い回答ではいまでもGodotのゲーム向けに挙げられているGotm.ioは、すでに動いていません。ドメインの登録が切れています。

Godot 4のゲームをWeb向けにエクスポートする

  1. Compatibilityレンダラーを使います。Godotのドキュメントによると、Godot 4は「can only target WebGL 2.0 (using the Compatibility rendering method)」(対象にできるのはWebGL 2.0だけで、Compatibilityレンダリング方式を使う)とされています。
  2. Project > Exportを開き、「Add...」をクリックしてWebを選びます。
  3. エクスポートテンプレートがないとGodotに表示されたら、Manage Export Templatesをクリックしてダウンロードします。Linuxでは~/.local/share/godot/export_templates/4.7.2.stable/に入ります。Godot 4.7.2のテンプレート一式はすべてのプラットフォームに対応しており、約1.2GBです。
  4. Variant > Thread Supportはオフのままにします。Godotのドキュメントでは、Godot 4.3以降、シングルスレッドは「the preferred and now default way to export your games on the Web」(Webでゲームをエクスポートする推奨の方法で、現在はデフォルト)とされています。
  5. Export Projectをクリックし、空のフォルダーにindex.htmlとして保存します。

コマンドラインからは、export_presets.cfgにWebという名前のプリセットがある状態で次のように実行します。

godot --headless --path my-game --export-release "Web" ../build/index.html

手元のマシンでは約3秒かかり、合計39.9MBの9ファイルができました。

ファイル バイト数 gzip -9
index.wasm 39,514,754 10,084,297
index.js 279,815 68,400
index.pck 7,316 3,487
index.html、オーディオワークレット2つ、アイコン3つ 55,307 -

ほとんどはエンジンです。その場でgzip圧縮するホストでは、送られるのはこのバイト数の約4分の1です。Godotのドキュメントでは、GitHub Pagesはその場でgzip圧縮するホスト、itch.ioは圧縮しないホストとして挙げられています。

4.7.2で警告なしにエクスポートできる最小限のexport_presets.cfgです。

[preset.0]

name="Web"
platform="Web"
runnable=true
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="../build/index.html"

[preset.0.options]

variant/thread_support=false

include_filter、exclude_filterと、少なくとも1つのオプションがないと、エクスポート自体は成功しますが、ERROR: Couldn't find the given section "preset.0" and key "include_filter"と出力されます。

ブラウザーでビルドをテストする

index.htmlをダブルクリックしても動きません。ChromiumではGodotのロゴの上にFailed to fetchと表示され、コンソールにはindex.wasmとindex.pckについてURL scheme "file" is not supportedと出ました。代わりにフォルダーを配信します。

cd build
python3 -m http.server 8000

そのあとhttp://localhost:8000を開きます。シングルスレッドのビルドは、追加のヘッダーなしでこの単純なサーバーから動きました。コンソールにはsingle-threadedと出力され、右矢印キーを押し続けるとプレイヤーが星に触れ、スコアが1になりました。Godotのドキュメントには、実行可能なWebプリセットとテンプレートがあるときにStopとPlay Edited Sceneの間に表示され、既定のブラウザーでゲームを開くボタンの説明もあります。

「Cross Origin Isolation」と「SharedArrayBuffer」がないというエラーを直す

Thread Supportをオンにして特別なヘッダーなしで配信すると、Godot 4.7.2はロゴの上に次のエラーを表示して止まりました(Godotのドキュメントによると、Extensions Supportにも同じヘッダーが必要です)。

The following features required to run Godot projects on the Web are missing:
Cross-Origin Isolation - Check that the web server configuration sends the correct headers.
SharedArrayBuffer - Check that the web server configuration sends the correct headers.

スレッド対応のビルドはSharedArrayBufferを使いますが、ブラウザーはクロスオリジン分離されたページでしかSharedArrayBufferを許可しません。直し方は3つあり、試す順に並べると次のとおりです。

  1. シングルスレッドでエクスポートする:Thread SupportとExtensions Supportをオフにして、もう一度エクスポートします。GDExtensionで必要な場合を除けば、これがいちばん簡単な直し方です。Godotのドキュメントでは、シングルスレッドのエクスポートは「more compatible overall with stores like itch.io」(itch.ioのようなストアとの互換性が全体的に高い)とされ、Webポータルについても同様とされています。

  2. 2つのヘッダーを送る:GodotのドキュメントにはCross-Origin-Opener-Policy: same-originとCross-Origin-Embedder-Policy: require-corpが挙げられています。ローカルなら、次の小さなサーバーで十分です。

    import http.server, sys
    
    class COIHandler(http.server.SimpleHTTPRequestHandler):
        def end_headers(self):
            self.send_header("Cross-Origin-Opener-Policy", "same-origin")
            self.send_header("Cross-Origin-Embedder-Policy", "require-corp")
            super().end_headers()
    
    http.server.ThreadingHTTPServer(("127.0.0.1", int(sys.argv[1])), COIHandler).serve_forever()
    

    このサーバーを使うと、スレッド対応のビルドはmulti-threadedと出力して動きました。NetlifyとCloudflare Pagesは、同じヘッダーを_headersファイルから読み込みます。itch.ioでは、Embed options > Frame optionsの下にあるSharedArrayBuffer supportにチェックを入れます。itch.ioのお知らせでは、この機能は実験的とされています。

  3. ヘッダーを設定できない場合はPWAの回避策を使う:エクスポートプリセットでProgressive Web Appを有効にし、Ensure Cross Origin Isolation Headersをオンのままにします(デフォルトでオンです)。するとService Workerがヘッダーを追加します。HTTPSかlocalhostが必要です。今回のテストでは、初回アクセス4回中4回でメッセージのない黒い画面になり、手動で1回再読み込みするとゲームが動きました。そのため、プレイテスターには1回再読み込みするよう伝えてください。

友人やプレイテスターにリンクを共有する

itch.io

  1. シングルスレッドでエクスポートします。
  2. エクスポートしたフォルダーの中身をZIPにして、index.htmlがZIPの最上位に来るようにします。今回の9ファイルのビルドでは、10.2MBのZIPになりました。
  3. itch.ioで新しいプロジェクトを作り、種類をHTMLにして、ZIPをアップロードし、This file will be played in the browserにチェックを入れます。
  4. 埋め込みのサイズをゲームのビューポートに合わせ、スマートフォンで動くならMobile friendlyにチェックを入れます。
  5. プロジェクトをDraftのままにしてシークレットリンクを共有するか、公開します。

itch.ioのドキュメントによると、HTML5のZIPは最大1,000ファイル、展開後500MB、1ファイルあたり200MBまでで、Draftは「only accessible by people who can edit it, and people with the secret link」(編集できる人と、シークレットリンクを持っている人だけがアクセスできる)とされています。承認したテスターだけに見せるには、ページをRestrictedにしてパスワードを追加します。itch.ioによると、「include the password directly in the URL」(パスワードをURLに直接含める)こともできます。Godotの中からアップロードしたい場合、無料でMITライセンスのプラグインであるShipItch、Itch Exporter & Uploader、Greenlightは、itch.ioのbutlerツールを使ってエクスポートとアップロードを行います。Majordomoは、butlerでitch.ioにビルドをプッシュします。

GitHub Pages、Netlify、Cloudflare Pages

エクスポートしたフォルダーをリポジトリーにコミットしてPagesを有効にするか、フォルダーをNetlifyにドロップします。github.com向けのGitHub Pagesのドキュメントには、カスタムのレスポンスヘッダーを設定する方法が書かれていません。そのため、GitHub Pagesでは、シングルスレッドのエクスポートか、前述のPWAの回避策を使います。1ファイルあたりの制限に注意してください。Cloudflare Pagesは1ファイルを25MiBまでに制限しており、Godot 4.7.2のindex.wasmは39.5MBです。

ZivaのShare Web build:エディターからplay.ziva.shのリンクを作る

Zivaは、Godotエディターの中で動くAIアシスタントです。Zivaのチャットヘッダーにある「⋮」メニューのShare Web build項目が、エクスポートとホスティングを代わりに行います。

  1. Zivaは、Ziva自身のアドオンを除いたプロジェクトのコピーに対して、開発者自身のGodotエディターでGodotのWebエクスポートを実行します。プロジェクトにWebエクスポートのプリセットがなければ追加します。
  2. エクスポートテンプレートがない場合、Zivaは先にGodotの公式テンプレートをダウンロードします。
  3. Godot 4.3以降では、Zivaはシングルスレッドでエクスポートします。ただし、GDExtensionがスレッド対応のWebライブラリーしか同梱していない場合は例外で、そのときはゲームがiPhoneやSafariで動かないと警告します。シングルスレッドのテンプレートがないGodot 4.2では、ビルドはスレッド対応になります。
  4. Zivaがビルドを圧縮してアップロードし、試すための限定公開のプレビューリンクが発行されます。
  5. タイトル、説明、カバー画像を追加してApprove and publishを選ぶと、共有用のplay.ziva.shのリンクが発行されます。

2026年11月5日に、エクスポートテンプレートのない新規インストールのZivaにサインインした状態で、Star Catcherサンプルをこの方法で共有しました。Godot 4.7.2のテンプレート(1,222MB)のダウンロードには、手元の回線で約21分かかりました。テンプレートの展開、エクスポート、圧縮した9ファイル(13.5MB)のアップロードには、さらに1分もかかりませんでした。ゲームはhttps://play.ziva.sh/timely-hallway/にあり、Chromiumでサインインせずにプレイできました。

Star Catcherサンプルを、サインアウトした状態のChromiumでplay.ziva.shのページから実行している画面。青緑の四角形が星を1つ取り、ラベルはScore: 1になっている

Share Web buildは、サインインしていれば無料のHobbyプランを含むすべてのZivaのプランで、圧縮後300MBまでのビルドに使えます。再ビルドしても同じリンクのままで、ゲームを削除するまでリンクの期限は切れません。チャットでZivaに公開の準備を頼むこともできます。Zivaはプレビューをビルドして掲載内容を表示し、自動承認がオンでも、承認したあとにだけ公開します。更新、削除、別のコンピューターからゲームをリンクする方法は、Share web buildsのドキュメント(英語)にあります。

Godot 4のC#プロジェクトはWebにエクスポートできる?

できません。Godot 4.7.2の.NETエディターは、スクリプトが1つだけのC#プロジェクトのエクスポートを拒否しました。

Exporting to Web is currently not supported in Godot 4 when using C#/.NET. Use Godot 3 to target Web with C#/Mono instead.

Godotのドキュメントには「Projects written in C# using Godot 4 currently cannot be exported to the web.」(Godot 4でC#を使って書かれたプロジェクトは、現在Webにエクスポートできない)とあります。追跡用のissueであるgodotengine/godot#70796は、2026年6月19日に「The foundation is evaluating solutions for C# web support.」(財団がC#のWeb対応の解決策を検討している)というコメントとともにロックされました。いまブラウザー向けのビルドを作るには、GDScriptを使うか、Godot 3とC#を使います。ZivaのShare Web buildにも同じ制限があります。

ZivaのShare Web buildにできないこと

  • Zivaがアップロードできるのはplay.ziva.shだけで、itch.io、GitHub Pages、その他のホストにはアップロードしません。
  • 公開したZivaのビルドは誰でも見られます。play.ziva.shに掲載され、プレイヤーが評価やコメントでき、新しいゲームはZivaのDiscordで告知されます。限定公開なのはプレビューだけです。
  • Zivaには、独自ドメインやパスワード保護されたビルドの機能はありません。
  • Godot 4がC#プロジェクトをWebにエクスポートできないため、ZivaもC#プロジェクトをWebにエクスポートできません。
  • Share Web buildはGodot専用で、Zivaをインストールした状態のGodotエディターと、Zivaへのサインインが必要です。
  • Zivaがアップロードするのは、GodotのWebエクスポートだけです。プロジェクトのフォルダーやチャットはアップロードしません。どのWebビルドでも同じですが、エクスポートにはゲームのシーンとスクリプトが含まれます。

関連記事(英語)

まとめ

  • シングルスレッドのエクスポート(Godot 4.3以降のデフォルト)なら、特別なヘッダーなしで動きます。index.htmlはダブルクリックで開くのではなく、HTTPで配信して開きます。
  • スレッド対応のビルドにはCross-Origin-Opener-PolicyとCross-Origin-Embedder-Policyの2つのヘッダーが必要です。ヘッダーを設定できないホストではPWAの回避策を使えますが、今回のテストでは初回に1回の再読み込みが必要でした。
  • Godot 4.7.2のindex.wasmは39.5MBあるため、無料のホストを選ぶ前に1ファイルあたりの制限を確認します。Godot 4のC#プロジェクトは、Webにエクスポートできません。

よくある質問

Godot 4のゲームをWebブラウザーでプレイできるようにエクスポートするには?

Compatibilityレンダラーを使い、Project > Exportを開いてWebプリセットを追加します。Godotに求められたらエクスポートテンプレートをインストールし、Thread Supportはオフのまま(Godot 4.3以降のデフォルト)にして、index.htmlにエクスポートします。コマンドラインでは、Webという名前のプリセットがあれば、godot --headless --path my-game --export-release "Web" ../build/index.htmlで同じことができます。index.htmlをファイルとして開くと「Failed to fetch」で失敗するため、たとえばpython3 -m http.serverを使ってフォルダーをHTTPで配信します。Godot 4.7.2でのテストでは、シングルスレッドのエクスポートは特別なヘッダーなしで単純なローカルサーバーから動きました。

Godotのゲームのプレイできるビルドを、友人やプレイテスターにリンクで共有するいちばん速い方法は?

シングルスレッドでエクスポートし、URLを発行してくれるホストにフォルダーをアップロードします。itch.io(無料)は、ルートにindex.htmlがあるZIPを受け付けます。This file will be played in the browserにチェックを入れ、ページをDraftのままにすれば、シークレットリンクを共有できます。Netlify Dropはアカウントなしでドロップしたフォルダーを公開できますが、Netlifyのドキュメントによると10MBを超える個別のファイルがあるとデプロイが止まることがあり、Godot 4.7.2のindex.wasmは39.5MBです。Godotエディター内で動くAIアシスタントのZivaを使っている場合、Share Web buildのメニュー項目がゲームをエクスポートしてアップロードし、play.ziva.shのリンクを返します。これはすべてのZivaのプランで使え、ホスティングの設定は不要です。公開すると、ゲームはplay.ziva.shで一般公開されます。

GodotのHTML5ゲームを無料でホストできる場所は?

2026年11月5日時点の情報です。itch.ioは無料で、展開後500MB、1,000ファイル、1ファイルあたり200MBまでのHTML5のZIPを受け付けます。GitHub Pagesは公開リポジトリーなら無料で、1サイトあたり1GBまで使え、ファイルをその場でgzip圧縮します。Cloudflare Pagesは無料ですが、1ファイルを25MiBまでに制限しており、これはGodot 4.7.2のエクスポートに含まれる39.5MBのindex.wasmより小さい値です。Lobsiteの無料プランは1ファイルあたり5MBまでなので、LobsiteはGodot 4には年$20のStandardプランが必要としています。ZivaのShare Web buildは、Zivaをインストールした状態のGodotエディターからエクスポートしたゲームについて、すべてのZivaのプランで300MBまでのGodotのビルドをplay.ziva.shでホストします。

GodotのWebエクスポートでCross Origin IsolationとSharedArrayBufferがないと表示されます。どう直せばよいですか?

そのビルドはThread Support(またはExtensions Support)をオンにしてエクスポートされており、サーバーがそうしたビルドに必要な2つのヘッダーを送っていません。直し方は3つあります。1つ目は、Webエクスポートのプリセットで両方のオプションをオフにして、もう一度エクスポートする方法です(シングルスレッドはGodot 4.3以降のデフォルトで、ヘッダーは不要です)。2つ目は、Cross-Origin-Opener-Policy: same-originとCross-Origin-Embedder-Policy: require-corpを付けてファイルを配信する方法です。3つ目は、ヘッダーを設定できない場合に、Progressive Web AppとEnsure Cross Origin Isolation Headersを有効にする方法で、HTTPSかlocalhostが必要です。Godot 4.7.2でのテストでは、PWAの回避策は初回アクセスで黒い画面になり、1回再読み込みすると動きました。itch.ioでは、スレッド対応のビルドに埋め込みオプションのSharedArrayBuffer supportのチェックボックスが必要です。

プレイテスターだけが開ける、GodotのWebゲームの非公開テストビルドを共有するには?

itch.ioでは、プロジェクトをDraftのままにします。itch.ioによると、Draftは編集できる人とシークレットリンクを持っている人だけがアクセスできます。さらに細かく管理するには、Restrictedに設定し、相手を承認するかパスワードを追加します。パスワードはURLに含めることもできます。Lobsiteの年$20のStandardプランでは、サイトをパスワードで保護できます。ZivaのShare Web buildのプレビューは検索エンジンにインデックスされない限定公開のリンクですが、公開したZivaのビルドは誰でも見られ、play.ziva.shに掲載されます。Zivaには、非公開のまま公開するモードはありません。

ゲームのWebビルドをエクスポートして公開してくれるAIアシスタントやGodotエディターのプラグインはありますか?

あります。Godotエディター内で動くAIアシスタントのZiva(Godot 4.2以降)には、Share Web buildのメニュー項目があります。開発者のエディターでGodotのWebエクスポートを実行し、エクスポートテンプレートがなければダウンロードして、ビルドをアップロードし、play.ziva.shのリンクを返します。これはすべてのZivaのプランで使えます。チャットでZivaに掲載内容の準備を頼むこともでき、Zivaは承認したあとにだけ公開します。itch.io向けには、無料でMITライセンスのプラグインであるShipItch、Itch Exporter & Uploader、Greenlightが、itch.ioのbutlerツールでエクスポートとアップロードを行います。Majordomoはbutlerでitch.ioにビルドをプッシュします。Summer Engineのエージェントは、独自のストアであるSummer Gamesに公開します。

Godot 4のC#プロジェクトをWebにエクスポートできますか?

できません。Godot 4.7の時点で、.NETエディターは「Exporting to Web is currently not supported in Godot 4 when using C#/.NET. Use Godot 3 to target Web with C#/Mono instead.」と表示して拒否します。Godotのドキュメントにも同じ記載があり、追跡用のissueであるgodotengine/godot#70796は、2026年6月19日に「The foundation is evaluating solutions for C# web support.」(財団がC#のWeb対応の解決策を検討している)というコメントとともにロックされました。いまブラウザー向けのビルドを出すには、GDScriptでゲームを書くか、Godot 3とC#を使います。

GodotのWebビルドをitch.ioにアップロードして、ブラウザーでプレイできるようにするには?

シングルスレッドでindex.htmlにエクスポートし、エクスポートしたフォルダーの中身をZIPにします。index.htmlはサブフォルダーの中ではなく、ZIPのルートに置きます。itch.ioでプロジェクトを作り、種類をHTMLにして、ZIPをアップロードし、This file will be played in the browserにチェックを入れます。itch.ioはHTML5のアップロードを1,000ファイル、展開後500MB、1ファイルあたり200MBまでに制限しています。Embed optionsのSharedArrayBuffer supportのチェックボックスが必要なのは、スレッド対応のビルドだけです。小さな2Dゲームを4.7.2でエクスポートした結果は、9ファイル、展開時39.9MB、ZIPで10.2MBでした。

この記事の原文(英語):https://ziva.sh/blogs/godot-web-export

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?