Unity6のWebプラットフォーム向けにビルドしたゲームを、自分のWebサイトにゲームをアップロードするチャレンジを実施中なのですが、なかなか警告が消えてくれずに試行錯誤したのでそのメモを残しておきます。
ちなみに環境は、
- Unity 6000.1.11f1
- Webビルド : 圧縮形式 Brotli
- XServer
になります。
他の環境だと必ず同じ状況になるかわからないので悪しからず…
(如何せんウェブ系は専門外なもので…)
警告メッセージについて
今回自分が苦戦したメッセージはこちら。
HTTP Response Header "Content-Type" configured incorrectly on the server for file Build/[ゲーム名].wasm.br , should be "application/wasm". Startup time performance will suffer.
こちらの警告がゲーム起動時に画面上部に数秒間出ている状態でした。
数秒間で消えて、ゲーム自体は起動するものの何とかならないかと調べてみました。
(気持ちロード時間が長いような気もしたので。。。)
もともと、以下の記事を参考にビルドを進めており、記事後半のWordPressにアップロードした後の サーバー側の設定(.htaccessへの記述)を入れていました。

しかし、残念ながら警告が消えない…
Unity Webビルド時に .wasm.br
(brotli圧縮された WebAssembly ファイル)の Content-Type が正しくないために表示されている警告で、設定を入れているがなぜか消えないという状況でした。
ということで以下の対応を入れることにしました。
追加対応: 条件付きで 強制的にレスポンスヘッダー(Content-Type)を追加
本来サーバー上で .br
付きファイルの AddType
明示 しているのですが、何らかの原因でこれらの設定が無視されてしまっても問題ないように、保険として強制的に Content-Type を追加する処理を追加しました。
ということで修正したファイルがこちら。
# ===== Unity WebGL Brotli対応 (Xserver対応版) =====
<IfModule mod_mime.c>
# 拡張子 .br の既存定義を削除
RemoveType .br
RemoveLanguage .br
# 拡張子に .br が付いたファイル 明示的にMIMEを追加
AddType application/wasm .wasm.br
AddType application/javascript .js.br
AddType application/octet-stream .data.br
AddType application/octet-stream .symbols.json.br
# エンコーディング指定
AddEncoding br .br
</IfModule>
<IfModule mod_setenvif.c>
# 特定ファイルに対してMIMEタイプを強制指定するための環境変数をセット
SetEnvIf Request_URI "\.wasm\.br$" WASM_BR
SetEnvIf Request_URI "\.js\.br$" JS_BR
SetEnvIf Request_URI "\.data\.br$" DATA_BR
SetEnvIf Request_URI "\.symbols\.json\.br$" SYMBOLS_BR
</IfModule>
<IfModule mod_headers.c>
# Brotliファイルに適切なContent-Typeを強制的にセット
Header set Content-Type "application/wasm" env=WASM_BR
Header set Content-Type "application/javascript" env=JS_BR
Header set Content-Type "application/octet-stream" env=DATA_BR
Header set Content-Type "application/octet-stream" env=SYMBOLS_BR
</IfModule>
# ===== End Unity WebGL Brotli対応 =====
ちょっとばかし長くなりましたが、一応これで警告は出なくなりました。
最後に
正直これで対応として問題がないのか、よくわからないところではあります。
本来であればAddTypeの追加で解決してそうですし、それで問題が起きているということは何か別の問題が発生しているということだったのかもしれません。
しかしまぁ警告が出ていて、それを解消することができたのはOKなのでひとまずヨシとします。
もし、こうしたほうがより良いよ!ベターだよ!ベストはこうだよ!ってのがわかる方がいらっしゃったら教えてください。
コメント