Godot4になってからHTMLエクスポートのゲームが動作環境が厳しくなりました。Godot3のゲームが動いていた環境(xfree)で動かなくなってしまった。
問題
こんなエラーが出ます。
実際にはこれにプラスしてHTTPS環境にしてくれというエラーも一緒に表示されます。
SharedArrayBufferを使っている関係でセキュリティーの設定をサーバーにして、レスポンスレスポンスヘッダーに以下が含まれていないと駄目のようです。
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
- MDN Web Docsのサイトより
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer
サーバー探し
まずはHTTPS接続できるレンタルサーバーを探しました。で見つかったのがXREAでした。無料でHTTPS接続可能ということと.htaccessでmod_headersも使えるとのこなので、さっそく契約。
しかし、契約完了後httpsの設定がなかなかできずに苦戦。調べてみると1年無料のドメイン「.shop」でサイト設定がされているため、この初期設定を崩さなけらばならないことが判明。
下記のサイトを参考に設定して、反映を数時間待ったところ無事にhttpsで接続できました。
https://www.soralife.shop/xrea-wordpress-ssl-problem-solving/
mod_headersの設定
MDN Web Docsのサイトを元に以下の記述で.htaccessにしてサーバーに配置。
<IfModule mod_headers.c>
Header set Cross-Origin-Opener-Policy "same-origin"
Header set Cross-Origin-Embedder-Policy "require-corp"
</IfModule>
問題なく動いた!が必須で表示させなければならない広告が表示されない。これは広告用のドメインが別のためにCROSではじかれてるっぽい。調べてみたところ、セキュリティは下がるが以下の記述に変えればよいっぽい。
<IfModule mod_headers.c>
Header set Cross-Origin-Opener-Policy "same-origin"
Header set Cross-Origin-Embedder-Policy "credentialless"
</IfModule>
MDN Web Docsの英語版の方には設定の詳細がありました。これで広告が表示された!勝つるっと思ったらゲーム開始されたら消されてしまう。これはXREA Freeの契約上NGなので対応。
とりあえずiframeタグを使って対応。
こんな感じで動きました。自分の遊び場なのでこれで良しとしました。
コメント