【ウディタ講座】疑似的にBGSの同時再生数を増やす方法

ウディタではBGM、SE、BGSの三種類の楽曲を再生できます。

SEは複数ファイルの同時再生が可能ですが、BGMとBGSの再生はそれぞれいちどにひとつずつです。

複数BGSを重ねる方法をひねり出したので、ふつうに誰しも思いつく素直なやり方ですが、備忘録としてまとめました。

複数BGSを同時再生したい局面(一例)

BGSとは雨の音や人間のハアハア声といった演出に使えるループ再生され続けるSEなわけですが、いちどにひとつという縛りは意外にきびしい。

ホラーADVなんかで、「おそろしげなBGMのなか雨音BGSも鳴り続け、そこへさらに主人公たちが謎の追跡者から逃げ惑う際の足音BGSも重ねたい」――といった状況はザラに考えられるのです。

バトル演出であれば「はあはあ吐息のBGSと剣戟のガキンガキンというBGSを重ねたい」とか。

 

ゲームは映画に近い総合芸術ですから、「今馬車に揺られている」とか「外はどしゃぶりだ」といったこともテキストで書くより、そのことを音で伝えて視覚以外の刺激も巧みに取り混ぜる方が、ぐっとプレイヤーさんの心をつかめるかもしれません。

MEMO

ボイス付きゲームであれば「BGV」というものも加わってきますし、ウディタ的にはBGSといっしょくたに扱うものになってきますので、さらに疑似的なBGS/BGVの複数トラック化の需要は出てきます。

 

DLsiteなんかでもBGS素材集は探せます。

こちらは有名どころの月に憑かれたピエロさんの『著作権フリーBGM集 vol.38 主張の弱い、シンプルなBGM、BGS集40曲』。

著作権フリーBGM集 vol.38 主張の弱い、シンプルなBGM、BGS集40曲(DLsiteストアページへ)

 

疑似的に複数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を重ねるようなことは、めったにない特別ちからの入った演出のはず。

こういう小技を挟んでみるのもおもしろいかなと思います。