XREAでGodot4のゲームを動かす

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>
&nbsp; Header set Cross-Origin-Opener-Policy "same-origin"
&nbsp; Header set Cross-Origin-Embedder-Policy "require-corp"
</IfModule>

問題なく動いた!が必須で表示させなければならない広告が表示されない。これは広告用のドメインが別のためにCROSではじかれてるっぽい。調べてみたところ、セキュリティは下がるが以下の記述に変えればよいっぽい。

<IfModule mod_headers.c>
  Header set Cross-Origin-Opener-Policy "same-origin"
&nbsp; Header set Cross-Origin-Embedder-Policy "credentialless"
</IfModule>

MDN Web Docsの英語版の方には設定の詳細がありました。これで広告が表示された!勝つるっと思ったらゲーム開始されたら消されてしまう。これはXREA Freeの契約上NGなので対応。
とりあえずiframeタグを使って対応。

こんな感じで動きました。自分の遊び場なのでこれで良しとしました。

コメント

タイトルとURLをコピーしました