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編集 > 対象ドメイン選択 の画面を出し、上記二行を追加します。
その後にアップロードしたゲームのURLを開けば、ゲームが実行されるはずです。
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では高速性においても数々の改良が入っています。この変更もその一環ですね!
とはいえ、この情報は日本語での解説は皆無で、海外フォーラムでも混乱を呼んでいます。公式から詳しい解説を出した方がいいなと感じます。
コメント