• このエントリーをはてなブックマークに追加
【更新】【配布】Androidで音声が鳴らない問題を修正するプラグイン
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

【更新】【配布】Androidで音声が鳴らない問題を修正するプラグイン

2016-11-29 19:28
    2016-12-16更新
    新たにこちらの機能を同梱したPluginがリリースされました。
    今後は新しいPluginをご利用ください。詳細はこちらです。

    【配布】Android Chrome v55以降で音声が鳴らない問題を修正するプラグイン
    http://ch.nicovideo.jp/indies-game/blomaga/ar1156958

    ※以下の記事は古い情報となります。ご注意ください。
    ---------------------------
    RPGアツマールのゲームがAndroid端末のGoogle Chromeで音が出ない問題を修正するpluginを作成いたしました。RPGアツマールをご利用のかたは、ぜひ導入ください。

    ■これはなにか
     Android端末のGoogle Chromeで音声が鳴らない問題を修正するパッチです。
     RPGツクールMVのプラグインフォルダにいれたあと、プラグイン機能で「ON」にしていただくことで音声問題が修正されます。

    ダウンロードはこちら
     http://dl.cdn.nimg.jp/rpgtkool/rpgtkool/plugin/dwango_ForceWebAudio.zip

    ■パッチは何をするのか
     すべての環境で「WebAudio」をつかうように変更します。

    ■なぜこうなっているのか
     RPGツクールMVはJavaScriptの自由な利用が可能なゲーム制作環境です。そのために、ブラウザ情報の無制限な取得や、他サイトへの無制限のアクセスなどのセキュリティリスクを抱えています。RPGアツマールは悪意あるプログラムがこうした自由を悪用することを防ぐために、Same Origin PolicyやContent Security Policyといったブラウザのセキュリティの仕組みを利用しています。

     ブラウザ環境で音声を鳴らす場合「HTML5 Audio」と「WebAudio」という2つの方式があります。RPGツクールMVはAndroid端末において「HTML5 Audio」を使って音声再生をしていました。しかし、2016年11月下旬にAndroidのGoogle Chromeにおいてサンドボックス環境下(非同一オリジンのiframe内)で「HTML5 Audio」のAudio Elementの扱いが変更されました。タップイベントに紐付く音しか再生されなくなったため、該当端末でゲーム音声が流れなくなってしまいました。

    ■もう一つの問題
     特定の端末で音声がならない問題がありました。

    1)samsung等の特定の標準ブラウザを用いている
    2)再生方式がHTML5のAudioエレメントである
    3)特定のエンコーダーで作成したm4aである

     この問題はSame Origin Policyに帰因する問題とは別です。しかし、このプラグインを用いると再生方式がWebAudioに変更されるため、解決することができます。

    この問題の検証はAndroidのSC-02Hで行いました。

    ■その後
     このパッチはKADOKAWA社のRPGツクールMV開発部に共有され、本体のコアスクリプトへの取り込みが予定されています。

    ■ライセンス情報
     ライセンス:MIT License
     https://ja.osdn.net/projects/opensource/wiki/licenses%2FMIT_license
     パッチの制作と検証は「電ファミニコゲームマガジン」チームと「RPGアツマール」チームで行われました。

    ■参考
    CSP (Content Security Policy) - Web セキュリティ | MDN
    https://developer.mozilla.org/ja/docs/Web/Security/CSP

    同一オリジンポリシー - Web セキュリティ | MDN
    https://developer.mozilla.org/ja/docs/Web/Security/Same-origin_policy
    コメントを書く
    コメントをするには、
    ログインして下さい。