Godot 4のWebエクスポートをサーバーやローカル環境で動かすと、こんなエラーが発生することがあります。
Error
The following features required to run Godot projects on the Web are missing:
Cross Origin Isolation - Check web server configuration (send correct headers)
SharedArrayBuffer - Check web server configuration (send correct headers)これはGodot 4から、Cross Origin Isolation、SharedArrayBufferの利用が必須となった ためです。
対策方法
まず対策方法です。
こちらはウェブサーバの.htaccessに次の定義を挿入します。
Header set Cross-Origin-Embedder-Policy "require-corp"
Header set Cross-Origin-Opener-Policy "same-origin"通常この設定はドメインごとに行います。
当サイトも使っているエックスサーバー
では、サーバーパネル > .htaccess編集 > 対象ドメイン選択 の画面を出し、上記二行を追加します。
.htaccessの設定
その後にアップロードしたゲームのURLを開けば、ゲームが実行されるはずです。
※上記の画面はエックスサーバー
のみに有効です。他のレンタルサーバや、AWSなどのクラウドプラットフォームをご利用の方は、.htaccess編集方法のマニュアルをご参照ください。もしくはレンタルサーバ会社やフォーラムで質問をしてください。
各設定のパラメータは読者にて調査し、理解してください。理解しないまま使うと、のちのち大きな問題となる場合があります。
※上記設定はドメイン全体に関わります。会社のドメインなど影響が広い場合は、必ずサーバ管理者に事前の確認を取ってください。サービスダウンなど、思わぬ事故を引き起こす可能性があります。この操作は読者の責任において行ってください。当サイトではいかなる保証も行えません。
Cross Origin Isolation、SharedArrayBufferとは?
この2つ、実はひとつの機能を実現するために必要となっています。
SharedArrayBufferとはブラウザ内で実行される複数のプロセス、スレッドが共有のメモリを使用できる機能です。
今まではプロセスごとにメモリを使用したため、同じゲームを複数のタブで開いた場合など、全く同じデータを何度も読み込むことになりました。同じデータをロードするので、メモリ利用も2倍、3倍と増えていくことになります。
SharedArrayBufferが利用できれば、必要なデータがメモリにロードされていればそのまま利用し、ムダな読み込みやメモリ消費を抑えることができます。
Cross Origin IsolationはSharedArrayBufferなどを有効/無効化する設定です。
- Cross Origin IsolationにてSharedArrayBufferの設定を許可。(require-corp)
- SharedArrayBufferは同じドメインなら許可。(same-origin)
という意味の設定になります。
WTS的まとめ
Godot4.0では高速性においても数々の改良が入っています。この変更もその一環ですね!
とはいえ、この情報は日本語での解説は皆無で、海外フォーラムでも混乱を呼んでいます。公式から詳しい解説を出した方がいいなと感じます。



