オーディオ設計
雨音と遠くの心音の SFX が流れるサバイバルスリラーは、文章がまったく同じでも、文字だけのものとは違って感じられます。設定は手軽です。トラックをいくつかアップロードして、どう流すかを決めれば、あとはエンジンがやります。
トラックの種類(BGM、SFX、Ambient)と設定の基本は ビジュアルとオーディオ を見てください。
トラックの ID を調べるには、パネル → オーディオ でトラックを選び、読み取り専用の 音声トラック ID を、横にある ID をコピー でコピーします。この値を playAudio(trackId) や [audio: trackId play] のようなディレクティブに使います。アセットにある素材 ID はアップロードしたファイルの ID で、音声トラック ID とは別のものです。以下の例の door-slam などの ID は、自分のトラックの実際の ID に置き換えてください。
オーディオが鳴るしくみ
ワールドでオーディオを鳴らす方法は 4 つあります。シンプルなものから順に、だんだん自由がききます。
1. プレイリスト:設定したらあとはおまかせ
デフォルトプレイリスト は、プレイヤーがワールドに入ると、トラックを順番に自動で流します。ほとんどのワールドはこれだけで足ります。
パネル → オーディオ の BGM設定 で設定します。
| 設定 | 何をするか |
|---|---|
| トラック | どの BGM をどの順番で流すか |
| 再生モード | ループ(最初からくり返す)、シャッフル(ランダム)、順番(全部流してからくり返す) |
| 自動再生 | ワールドの読み込み時に再生を試みる |
| 最初のメッセージを待つ | プレイヤーが最初のメッセージを送るまで流さない。キャラクター作成やオープニングの演出があるワールドに便利 |
| トラック間の間隔(秒)(0-30) | 曲と曲のあいだの無音。「レコードをかけ替える」感じが出る |
Sakura Season と PRTS Terminal はどちらも、いちばんシンプルな設定を使っています。BGM がひとつ、ループ、自動再生オン。オーディオの設定はそれだけです。
最小の設定
オーディオファイルをひとつアップロードし、BGM のトラックを作り、自動再生 をオンにしてプレイリストに入れます。ブラウザが自動再生をブロックした場合は、その後のクリックなどの操作で再試行します。ワールドを離れると、その音声は停止します。
2. スマートトラッキング:用意した合図から AI が選ぶ
パネル → オーディオ では、トラックごとに この曲を AI に流させる(SFX なら この効果音を AI に鳴らさせる)があります。いつ流すか に、「にぎやかで楽しい。お祭り、市場、追いかけっこ」のような一文を書きます。効果音なら「誰かが刀を抜く」のように書きます。返信のたびに、スマートトラッキングがその場面をこの合図と照らし合わせ、物語がトラックに合えば曲を切り替え、効果音はその瞬間が来たら一度鳴らします。空にしておけば、そのトラックはプレイリストと条件付きのルールにだけ従います。
物語の AI が何かを書き忘れる心配がないので、プレイヤーがどのモデルを使っていても動きます。ほかの音楽とどう付き合うかは、いくつかの設定で決めます。
- AI が曲を変えたいのに、条件ルールが自分の曲を流しているとき:ルール優先(ルールの曲がそのまま流れる)か、AI 優先(AI が選んだ曲が終わるか、AI が戻すまで、そちらに切り替える)
- AI が選んだ曲が終わったら:AI が切り替えるまでループし続けるか、一度だけ流してデフォルトプレイリストに戻る
- AI が効果音を鳴らす間は BGM を下げ、終わったら戻す
スマートトラッキングは最初からオンです。カードの設定 にある同じ名前のスイッチがそれです。
3. AI ディレクティブ:語り手に BGM のきっかけを出させる
AI は、変数のディレクティブと同じ括弧の書き方で、返信にオーディオの命令を埋め込めます。プレイヤーにはこれは見えません。文章を表示する前にエンジンが取り除きます。
この方法で操作できるのは、AI による操作を許可 がオンのトラックだけです。最初からオンになっています。トラックをカスタム UI、スクリプト、ビヘイビア、プレイリスト専用にしたいときは、オフにしてください(キャンバスでトラックをクリックするか、パネル → オーディオ で)。ディレクティブやカスタム UI の呼び出しを書くときは、ID をコピー でトラックの 音声トラック ID をコピーします。
The door flies open with a deafening crash. [audio: door-slam play]
An armored figure steps through the smoke.プレイヤーはきれいな物語を読みながら、同時にドアが叩きつけられる音を聞きます。
使えるディレクティブ:
| ディレクティブ | 何をするか |
|---|---|
[audio: trackId play] | トラックを流す |
[audio: trackId stop] | トラックを止める |
[audio: trackId crossfade 2.0] | いまの BGM から 2 秒かけて切り替える |
[audio: trackId volume 0.5] | 止めずに音量を変える |
[audio: trackId play chain:nextTrackId] | このトラックを流し、終わったら次のトラックを自動で流す |
chain のディレクティブは場面の切り替えに便利です。戦の角笛の SFX を鳴らし、角笛が終わったら戦闘の BGM に移る、ということが、ディレクティブをもうひとつ書かなくてもできます。
AI のディレクティブは、同じ返信の中で状態の変更と混ぜて書けます。
A rumbling echoes from deep in the dungeon. [audio: earthquake-sfx play]
Debris falls from the ceiling. [health: -5]
The ambient sound grows oppressive. [audio: ambient-cave volume 0.3]弱点: AI はディレクティブを書き忘れることがあります。返信が長いときや、込み入った物語に集中しているときは特にそうです。決まった瞬間に必ず鳴ってほしいオーディオには、条件付きBGMかビヘイビアを使ってください。
4. 条件付きBGM:音楽が物語についてくる
条件を決めておくと、それが満たされたときにエンジンがトラックを切り替えます。AI は関わりません。パネル → オーディオ の 条件付きBGM で 条件付きルールを追加 を押します。
ゲームの状態についてくる BGM ができます。酒場にいるときは酒場の曲、戦闘中は戦闘の曲、それ以外は探索の曲、という具合です。
条件付きBGM のルールには、次の設定があります。
| 設定 | 何をするか |
|---|---|
| トリガー | 何を見張るか:変数条件、プレイヤーキーワード / AIキーワード(文字の一致)、ターン数、セッション開始 |
| 条件 | 変数のチェック(変数条件 のとき)。すべての条件を満たす か いずれかの条件を満たす で組み合わせる |
| 再生 | どのトラックに切り替えるか |
| 優先度 | いくつもの条件が当てはまったら、数字の大きいほうが勝つ |
| フェードイン(秒) / フェードアウト(秒) | 切り替えの速さ(秒) |
| 前のBGMを停止 | ふつうはオン。複数のトラックを重ねたいときだけオフにする |
| 終了時 | 条件が成り立たなくなったら何を流すか:デフォルトプレイリストに戻る、前のトラックに戻る、または特定のトラック |
例:戦闘の曲への切り替え
BGM のトラックが 2 つあります。explore-bgm と battle-bgm。プレイリストはふだん探索の曲を流しています。条件付きBGM のルールが location が battle_arena であるかを見張り、そうなったらエンジンが 0.5 秒かけて戦闘の曲に切り替えます。プレイヤーがアリーナを出ると、デフォルトプレイリストに戻る で探索の曲に戻ります。
AI がオーディオのことを何も覚えていなくても、戦闘が始まるたび、終わるたびに、音楽がなめらかに切り替わります。
ビヘイビアでオーディオを鳴らす
ビヘイビアには 音楽を再生、効果音を再生、オーディオを停止 の 3 つのオーディオの効果があり、AI をまったく通さずにオーディオを操作できます。決まった瞬間に必ず鳴ってほしいオーディオには、いちばん確実な方法です。
Battle Royale は、オーディオの道具として death-sfx と heartbeat-sfx のトラックを使っています。いまの版では AI のディレクティブで鳴らしていますが、ビヘイビアにつなげば、体力が 20 を切ったら心音の SFX、体力が 0 になったら死の音、と決まった瞬間に必ず鳴らせます。
| 効果 | 何をするか |
|---|---|
| 音楽を再生 | BGM を流す |
| 効果音を再生 | 一度きりの音を鳴らす |
| オーディオを停止 | トラックを止める |
変数がしきい値を越える のトリガーと組み合わせれば、必ず鳴るオーディオのきっかけが作れます。
WHEN: health drops below 20
EFFECT: Play music → crisis-bgmフェードや音量の変更は、ビヘイビアの効果にはありません。それには条件付きBGM、AI のディレクティブ、または画面のコードからの api.playAudio(trackId, { fadeDuration, volume }) を使います。
設計のアドバイス
音量のバランス
BGM は、たいていのワールドで 0.3〜0.5 がちょうどいいです。プレイヤーは文章を読んでいるので、音楽が大きすぎると集中のじゃまになります。Ambient のトラックは背景の質感として、さらに低く(0.1〜0.3)てもかまいません。SFX は短く、瞬間を際立たせるためのものなので、大きめ(0.7〜0.9)にします。
トラックは少なく、効果は大きく
Battle Royale のオーディオトラックは 4 つです。キャラクター作成の BGM、ゲーム中のプレイリストの BGM、心音の SFX、死の SFX。何時間も続くサバイバルゲームの緊張感を作るには、これで足ります。20 曲のライブラリはいりません。よく選んだ数曲となめらかなフェードのほうが、ごちゃごちゃしたサウンドトラックより効きます。
何でもフェードさせる
音がいきなり切れると耳障りです。BGM のトラックは フェードイン(秒) を 2、フェードアウト(秒) を 1.5 にして、切り替えをなめらかにしましょう。トラックを切り替えるときは、止めてから流すのではなく crossfade を使います。条件付きBGM のデフォルトのフェード(イン 1 秒、アウト 1 秒)は、最初の目安としてちょうどいい値です。
AI に任せるときと、自動にするとき
きっかけが 物語 のときは、AI に任せましょう。ドアが叩きつけられる、キャラクターが息をのむ、爆発が起きる。こうした瞬間はいつ来るか読めませんが、書いている AI にはわかります。
きっかけが しくみ のときは、自動にしましょう。ある場所に入る、体力がしきい値を越える、特定のターンになる。こうした決まった状態の変化は、AI よりエンジンのほうが正確に追えます。
多くのワールドは組み合わせて使っています。ベースの音楽はプレイリスト、場所による切り替えは条件付きBGM、ここぞという SFX は「いつ流すか」の合図か AI のディレクティブ、という具合です。
関連項目
- AI ディレクティブとマクロ — ディレクティブのしくみ全体の中でのオーディオディレクティブの位置づけ
- ビヘイビアと自動化 — 決まった瞬間に鳴らすための、ビヘイビアのオーディオの効果
- カスタム UI ガイド — ブリッジ API を使って、カスタム UI からオーディオを操作する
オーディオのスキーマとプレイリストの設定の全体 → World Spec:オーディオ
