100日後に完成するゲームシステム 72日目「BGM機能を搭載したら見えてきた仕様」

2021年4月30日

テクノロジー 特集

eyecatch 最近、Podcastでも、BGM付きで喋ったほうが、効果的であることに気がついた、弓削田です。 サウンド機能に四苦八苦しながら、ゲーム内にBGM機能を付けてみました。 実際にBGMがついたゲームをプレイすると、非常に臨場感が出てきて、 感情移入しやすくなる印象です。 技術的な問題点と、仕様設計の部分など、いくつかの課題が見えてきたので、 現段階では、その技術課題のみ対応した状態です。

技術的な問題点について

このゲーム開発でSE音を鳴らす時から課題にはなっていた、 webブラウザが、イベント発生後じゃないと、audioAPIの初期設定ができない(※audioContextが動作しない)という仕様のため、 実際にマップがLOADされても、音が鳴らず、何かのキーを押す、または、マウスクリック、スマホであれば、画面タッチするまで 無音状態なのは、「タイトル画面」を付けることで、簡単に解消すると思っていたんですが、 実際にBGMとして、音を鳴らしてみると、音声データの読み込みタイミングよりも早いタイミングでクリックをしてしまうと、 クリックしたタイミングでオーディオデータの初期化処理が走り始めてしまい、 データがないため、エラーが発生してしまいます。 この現象は、読み込みが発生している間は、LOADING表示を行い、画面操作ができないようにして、イベント発生時も対応しないようにすることで 対応ができそうですが、この点はまだ搭載できていません。 あと、これは、技術的というよりも、仕様的な話ですが、ゲーム内でマップが切り替わるタイミング(フィールド画面から、街に入った時や、建物に入ったときなど・・・) この場合に、ajax機能で、画面切り替えを行っていて、いちいちページを読み込み直すということはしておらず、 必要最低限のデータのみを取得するようにしているんですが、 この際のBGM取得から、再生までの処理に手こずってしまいました。 初回読み込みと、ajax読み込みでデータ読み込みから初期化のフローが変わるからですね。 キチンと設計して作らないから、こうした事象のときに苦しんでしまうんですね・・・ でも、なんとか、切り替えをうまくすることができるようになりました。 ※下記デモムービーを見てみてください。

仕様設計の課題について

次に、ゲーム全体の仕様に関して、このBGM機能を搭載して見えてきたので、それらを検討してみたいと思います。
【仕様課題】 ・BGMのON/OFF機能の追加 ・SEのON/OFF機能の追加 ・ゲーム音量の変更
スマホゲームなどをする時に、よくある設定ですが、音を出す以上、これらの設定は、必須であることがわかりました。 今現在、どのようなインターフェイスでこれらの機能を搭載するべきかを検討中です。 具体的には、
1、ゲーム画面内に設定アイコンを表示してクリックするとオプション設定画面が表示される。 2、ゲーム画面の外側に、オプション設定ができるメニュー表示をする(トグルで出し入れできる)。
おそらく1番は必須なので、1と2を、同時にもたせることも検討している感じですね。

デモ動画

※残念ながら、ゲームのデモを今現在は見せて上げられないので、 youtubeにアップした動画でお楽しみください。

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。