ウディタではBGM、SE、BGSの三種類の楽曲を再生できます。
SEは複数ファイルの同時再生が可能ですが、BGMとBGSの再生はそれぞれいちどにひとつずつです。
複数BGSを重ねる方法をひねり出したので、ふつうに誰しも思いつく素直なやり方ですが、備忘録としてまとめました。
複数BGSを同時再生したい局面(一例)
BGSとは雨の音や人間のハアハア声といった演出に使えるループ再生され続けるSEなわけですが、いちどにひとつという縛りは意外にきびしい。
ホラーADVなんかで、「おそろしげなBGMのなか雨音BGSも鳴り続け、そこへさらに主人公たちが謎の追跡者から逃げ惑う際の足音BGSも重ねたい」――といった状況はザラに考えられるのです。
バトル演出であれば「はあはあ吐息のBGSと剣戟のガキンガキンというBGSを重ねたい」とか。
ゲームは映画に近い総合芸術ですから、「今馬車に揺られている」とか「外はどしゃぶりだ」といったこともテキストで書くより、そのことを音で伝えて視覚以外の刺激も巧みに取り混ぜる方が、ぐっとプレイヤーさんの心をつかめるかもしれません。
ボイス付きゲームであれば「BGV」というものも加わってきますし、ウディタ的にはBGSといっしょくたに扱うものになってきますので、さらに疑似的なBGS/BGVの複数トラック化の需要は出てきます。
DLsiteなんかでもBGS素材集は探せます。
こちらは有名どころの月に憑かれたピエロさんの『著作権フリーBGM集 vol.38 主張の弱い、シンプルなBGM、BGS集40曲』。
疑似的に複数BGSを重ねる理屈
要件定義
おおげさな言い方をしましたが、BGSはループするSEですから、「ひとつのSEの再生が終わったら、おなじものがまた再生される並列処理」を作ればOKですね。
並列処理のコモンイベントをつくり、せっかくなので、その起動条件となる変数の値をそのまま再生SEのIDにしてしまうとラクかもしれません。
コマンドっぽく日本語を崩していくと次の要領になるでしょうか。
- 並列処理の「疑似BGSコモン」の起動条件の変数に再生したいSEの番号を入れる
- 【並列処理:1】指定番号のSEを再生
- 【並列処理:2】そのSEの再生が終わるまでウェイト
- 【並列処理:3】1に戻ってくりかえす
- この並列処理は、起動条件の変数が0や-1以下になったら自動終了
気を付けたいウディタの仕様
また、以下の注意点があります。
- 起動条件となる変数の初期値は「0」ですが、SEの番号が「0」から始まるので、ゲーム開始直後に変数を-1にしたり、SE0番では対象とならないように
- BGMやBGSでは変数操作+で曲の長さが取得できるのですが、SEでは取得できません。ファイルの再生時間は手打ちでシステムデータベースに加える必要があるでしょう
システムデータベースの設定
起動条件となる変数を設定
項目を増やして、BGSとして使いそうなSEについては「再生時間」という欄を作ります。
自分で対象ファイルの再生時間をチェックして手入力です。
実際のソースコード
ソースのスクショ
説明
この例では、起動条件の変数が1以上でないと動かないようになっています。
SE0番は指定できない(無視される)仕様ですね。
起動条件の変数に5と入れれば、システムデータベース5番のSEが繰り返し再生され、起動条件の変数に0以下の数値を代入すれば自動で再生は終了します。
また、ウディタのウェイトはフレーム(1/60秒)単位で指定するので、SE再生時間が4秒なら、4×60=240フレームの指定が必要となります。
補足
同じ要領で並列処理コモンと起動条件の変数を増やすことで、3つめ4つめのBGSをさらに重ねることもできそうです。
その場合は、音が濁ったり音量が大変なことになったりするかもしれません(未検証)。
また、この疑似BGSの再生をスパッと止めたい場合は「SEの停止」ということになりますので、別の再生中SEもぷちんと途切れてしまうことに注意が必要でしょう。
以上、細かい設定や留意点があるものの、おそらくBGSを重ねるようなことは、めったにない特別ちからの入った演出のはず。
こういう小技を挟んでみるのもおもしろいかなと思います。