Skip to content

オーディオ設計

オーディオはワールドをリアルに感じさせる最速の方法です。雨音と遠くの心音SFXが流れるサバイバルスリラーは、たとえ文章がまったく同じでも、テキストだけのものとは違って感じられます。システムは軽量です:いくつかトラックをアップロードし、再生方法を設定すれば、あとはエンジンが扱います。

トラックタイプ(BGM、SFX、Ambient)とセットアップの基本については はじめに:ビジュアルとオーディオ を参照してください。


オーディオがトリガーされる方法

ワールドでオーディオが再生される方法は、シンプルから柔軟までの3つがあります。

1. プレイリスト:設定して忘れる

BGMプレイリスト はプレイヤーがワールドに入ったときに一連のトラックを自動再生します。ほとんどのワールドはこれだけで十分です。

エディタのオーディオセクションで設定します。

設定何をするか
tracksどのBGMトラックをどの順に再生するか
playModeloop(最初から再開)、shuffle(ランダム)、sequential(すべて再生してから繰り返し)
autoPlayワールド読み込み時に即座に開始
waitForFirstMessageプレイヤーが最初のメッセージを送るまで開始しない — キャラクター作成やオープニングカットシーンのあるワールドに有用
gapSeconds(0-30)トラック間の無音、「レコードを変える」感じを出す

Sakura SeasonとPRTS Terminalはどちらも最もシンプルなセットアップを使用:1つのBGMトラック、ループモード、autoPlayオン。それが彼らのオーディオ設定すべてです。

最小セットアップ

1つのオーディオファイルをアップロード。BGMトラックを作成。autoPlay: true でプレイリストに追加。完了 — プレイヤーは開始の瞬間から音楽を聞きます。

2. AIディレクティブ:ナレーターにサウンドトラックをキューさせる

AIは変数ディレクティブと同じ括弧構文で応答にオーディオコマンドを埋め込めます。プレイヤーはこれらを見ません — エンジンがテキスト表示前に剥がします。

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へ遷移。2つの別ディレクティブよりスムーズです。

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やルールを使ってください。

3. 条件付きBGM:音楽がストーリーに従う

条件付きBGMはオーディオシステムの最も興味深い部分です。条件を定義すれば、エンジンがそれが満たされたとき自動でトラックを切り替えます — AIの関与不要。

ゲーム状態に応答するサウンドトラックをプログラムするものと考えてください:タヴァーンにいるときはタヴァーン音楽、戦闘中はバトル音楽、それ以外は探索音楽。

各条件付きBGMエントリには次があります。

設定何をするか
triggerType何を監視するか:variable(ゲーム状態)、keyword / ai-keyword(テキストマッチ)、turn-countsession-start
conditions変数チェック(variable トリガー使用時)
targetTrackIdどのトラックに切り替えるか
priority複数条件がマッチしたとき大きい番号が勝つ
fadeInDuration / fadeOutDuration遷移速度(秒)
stopPreviousBGM通常は true — 複数トラックを重ねたい場合を除く
fallback条件が真でなくなったときに何が再生されるか:"default"(プレイリストに戻る)、"previous"(直前トラックに戻る)、特定の trackId
例:戦闘トラックの切り替え

2つのBGMトラック:explore-bgmbattle-bgm。プレイリストはデフォルトで探索音楽を再生。条件付きBGMエントリが location eq "battle_arena" を監視 — それが真になるとエンジンは0.5秒かけてバトル音楽にクロスフェード。プレイヤーがアリーナを離れると、fallback: "default" が探索に戻します。

プレイヤーはAIが何もオーディオを覚えていなくても、戦闘が始まり終わるたびにスムーズな音楽遷移を聞きます。


オーディオにルールを使う

ビヘイビアシステムには play-audio アクションがあり、AIを一切関与させずにオーディオを完全制御できます。これは精確な瞬間に鳴る必要のあるオーディオに最も信頼できる方法です。

Battle Royaleはオーディオツールキットの一部として death-sfx トラックと heartbeat-sfx トラックを使います。現バージョンはトリガーにAIディレクティブを頼っていますが、これらをルールに繋げば正しい瞬間に鳴ることが保証されます — healthが20を切ったら心音SFX、healthが0になったらデス音。

play-audio アクションはAIディレクティブと同じ操作をサポートします。

アクション何をするか
playトラックを開始
stopトラックを停止
crossfade現在のBGMからこのトラックへフェード
volume音量を変更

variable-crossed トリガーと組み合わせると、100%信頼できるオーディオキューが作れます。

WHEN:     health drops below 20
THEN:     play-audio crisis-bgm crossfade (fadeDuration: 1.5)

AIの関与なし。エンジンが機械的に扱います。


設計のアドバイス

音量バランス

BGMは0.3-0.5がほとんどのワールドで機能します。プレイヤーはテキストを読んでいるので、大きすぎる音楽は集中と競合します。Ambientトラックは背景テクスチャとしてさらに低く(0.1-0.3)座らせられます。SFXは大きめ(0.7-0.9)が良いです。短く瞬間を強調するためです。

トラックは少なく、インパクトは大きく

Battle Royaleには4つのオーディオトラックがあります:キャラクター作成BGM、ゲームプレイリストBGM、心音SFX、デスSFX。マルチアワーのサバイバルゲーム全体で緊張感を作るのに十分です。20トラックのライブラリは要りません — 良いフェード遷移と共によく選ばれた数本の方が、ごちゃごちゃしたサウンドトラックより多くを成します。

すべてをフェード

唐突なオーディオカットは違和感があります。BGMトラックに fadeIn: 2fadeOut: 1.5 を設定し、遷移をスムーズにしましょう。トラック切り替えには stop-then-play ではなく crossfade を使います。デフォルトの条件付きBGMフェード(in 1秒、out 1秒)は妥当な開始点です。

AIに任せる場合 vs 自動化する場合

トリガーが 物語的 なときはAIに任せましょう — ドアの叩きつけ、キャラクターの息を呑む音、爆発。これらの瞬間は予測不能で、AIは書いているのでいつ起きるか知っています。

トリガーが 機械的 なときは自動化しましょう — ロケーションへの入場、healthのしきい値超え、特定ターン番号。これらはエンジンがAIより正確に追跡する状態変化です。

多くのワールドは両方を使う:ベース音楽にプレイリスト、ロケーションベースの切り替えに条件付きBGM、ドラマチックなSFXの瞬間にAIディレクティブ。


関連項目

完全なオーディオスキーマとプレイリスト設定 → World Spec: Audio