概要
RPGツクールMVで、ウェブブラウザ向けにデプロイメントを実施し、 iPhoneやiPad等のiOS系端末でゲームをプレイしていると下記のようなエラーが発生しました。
Error InvalidStateError (DOM Exception 11): The object is in an invalid state.
原因
ゲームイベントで指定されている BGMやSEのm4a形式ファイルが存在しないためです。
対策
m4a形式ファイルをインポートする必要があります。
気を付けた方が良いこと
PC版のブラウザだと、開発者コンソールに「ファイルが見つからない」エラー出力があり、ゲームの継続が可能です。 しかしスマホ・タブレットの場合はゲーム自体が停止してしまいます。
個人的な話なのですが、外部サイト様の音楽素材を利用する際、 oggファイルだけをインポートし、m4aファイルの方が漏れてしまうことがたまにあるので、 それぞれのファイルをセットでインポートすることを忘れないようにしないといけませんね。
m4aファイルを配置しても、上記エラーが発生した場合
- 下記の端末で、現象を確認
- iPod touch(MKH02J/A iOS 10.1.1)のSafari、Chrome
- iPad mini2(ME280J/A iOS 10.0.2)のSafari、Chrome
推測と対策
- m4aファイルのサイズが大きすぎる可能性があります。
- 2種類のm4aファイル(1.9MB、2.4MB)がそれぞれ再生されませんでした
- ビットレート変更ツール等を利用し、音質を下げ、1.1MB程度に圧縮したところ、問題なく再生できました
- ※ブラウザキャッシュを削除しないと、キャッシュからBGMを読んでしまい、いつまでたっても反映されないようです
公開バージョンで、ファイル系エラーを起こさないために
本事象に出くわしたことで、公開時に留意しておくべき点がいくつかわかりました
- ゲーム停止は絶対に避ける(ゲーム進行できないより、音楽がならない方がマシ)
- m4aファイルサイズを意識する
ゲーム停止を避けるために
とても素敵なプラグインがありました。
- ロード失敗エラーのすり抜けプラグイン トリアコンタンさん作成
それでは、皆様も楽しいツクールライフを!