ゲームBGMを100曲、AIで作ってライブラリ化した話
VANNAN GAMESの5作品には、それぞれBGMとジングルが付いています。全曲、AI作曲サービスのSunoで自作したものです。ここでは、最初にやらかした失敗と、100曲をライブラリとして整備した方法を書きます。
最初の失敗: 無料版で作ってしまった
サイト公開当初のBGMは、Sunoの無料プランで生成した曲でした。無料プランの生成物は商用利用ができません。当時は広告のない趣味サイトだったので問題ありませんでしたが、広告で収益化するなら「広告収益のあるサイトのBGM」は商用利用にあたります。結局、有料プランに入って全曲を商用可能なものに差し替えました。最初から権利まわりを調べておけば二度手間にならなかった、という教科書どおりの失敗です。
1曲ずつ作らず、100曲のライブラリを作る
差し替えのタイミングで方針を変えました。ゲームごとに都度作るのではなく、先に100曲のBGMライブラリを作ってしまい、ゲーム側は選曲だけする方式です。カテゴリを「日常・ほのぼの」「緊張・戦闘」「夜・しっとり」「タイトル・ジングル」のように分け、カテゴリごとに雰囲気・テンポ・楽器編成を指定したプロンプトの雛形を用意して、まとめて生成しました。ファイル名は bgm_a01 のようなカテゴリ+連番で管理しています。
この方式の良さは、新しいゲームを作るときに「選ぶだけ」で音が付くことです。『フルスタック!』では通常戦闘に電脳戦っぽい一曲、ボス戦にラストバトル風、タイトルには夜っぽい落ち着いた曲を割り当てました。開発のリズムを止めずに音が決まります。
音量バランスは数値で持つ
BGMと効果音の音量バランスは、ゲームごとに勘で調整すると毎回迷うので、一度決めた値を開発リファレンスに記録して使い回しています。BGMの基準音量は0.18。これは効果音が埋もれない上限として先行作で調整した値で、以後の作品でもそのまま踏襲しています。カットイン中だけBGMを0.02まで絞って効果音を立たせる、といった演出も数値で管理しています。
ブラウザの自動再生ブロックという伏兵
音まわりで最後にハマったのが、ブラウザの自動再生ポリシーです。ページを開いた直後にBGMのplay()を呼んでも、ユーザーが一度も操作していないと再生が拒否されることがあります。しかも拒否は静かに握りつぶされがちで、「たまに最初だけBGMが鳴らない」という再現困難な報告になって返ってきます。対策は、最初のタップ時に「意図した曲が止まったままなら再生し直す」リトライを仕込むこと。音声を扱うブラウザゲームでは必須の作法だと思います。
ゲームごとに「音の性格」を決めてから選ぶ
ライブラリから選曲するとき、先にゲームごとの音の方針を1行決めています。ノベルゲームは「感情の邪魔をしない、ループに気づかれない曲」。アクションは「テンポが体感速度を上げる曲」。カードゲームの『フルスタック!』は「深夜のオフィスの、集中と緊張」。この1行があると、100曲から数曲へ絞るのは数分で終わります。逆にこれを決めずに聴き始めると、良い曲を全部使いたくなって延々と迷います。ライブラリ方式の弱点は選択肢が多すぎることなので、選ぶ基準のほうを先に作っておくのが運用のコツでした。
ジングルは短さが命
BGMのほかに、勝利と敗北のジングル(数秒の効果音楽)も同じライブラリから使っています。ここで学んだのは、ゲームの結果画面で流す音は「良い曲」より「短くて立ち上がりが速い曲」だということです。リザルトはプレイヤーが連打で飛ばす画面なので、イントロが2秒あるだけで音が置いていかれます。ライブラリから選ぶときの基準も、曲としての完成度より頭の0.5秒で性格が分かるかを優先するようになりました。
また、どのゲームにもミュートボタンを付け、状態をブラウザに記録しています。電車で遊ぶ人にとって音は資産ではなく事故なので、消しやすさは音を作るのと同じくらい大事です。一度ミュートにしたら次回起動時もミュートのまま、を徹底しています。
AI作曲との距離感
正直に言えば、100曲の中には没も大量にあります。それでも「ゲームの雰囲気に合う曲を、権利を気にせず、数分で何案も出せる」のは個人開発には決定的で、音楽の専門知識がなくても『らしい』音が付けられました。生成AIをアセット制作に使うなら、画像も音もライブラリ化して選ぶ運用が個人開発の規模には合っている、というのが現時点の結論です。