<aside> ⚠️
不安定版 (v4) 限定の機能です。 安定版 (v3) ではご利用になれません。
</aside>
これまで WWA Wing で使用する音源は、data-wwa-audio-dir 属性で指定されたディレクトリ直下(デフォルトで ./audio) にある数字のサウンド番号しか使用することができませんでした。
WWA Wing 不安定版 v4.0.3 から、この制約が緩和され、任意の名前をつけることができるようになりました。 (ただし、パス区切りの記号 /, \ を含まないようにする必要があり、 0.mp3, 99.mp3 という名前はつけられません。また、負の整数値をファイル名にすることはできません。)
また、これまでは、マップデータ内の各パーツおよび $sound マクロに固定値で指定されたサウンド番号しかゲーム開始時にロードされず、WWA Script でここにない音源を指定した場合音が鳴らないという問題がありました。 WWA Wing v4.0.3 以降では、data-wwa-audio-dir 属性で指定されたディレクトリ直下に sound-list.json というファイルに使用する音源の一覧を記述することで、あらかじめ読み込むファイルを指定できるようになりました。
この記事では、その詳細な仕様について解説します。
<aside> ℹ️
.mp3ファイルと拡張子を除いた部分が同じ名前の m4aファイルを配置した場合に、MP3が再生できない環境で、m4a音源が再生されるという仕様がありますが、本質ではないことと、わかりやすさのため、この記事では拡張子を .mp3 で統一します。
</aside>
sound-list.json で読み込む音源を指定しようこれまで、WWAで使用される音源は、 パーツのサウンド番号や $sound マクロで指定された固定値でしか読み込まれませんでした。WWA Script から SOUND() 関数で音を鳴らす場合、これらの手段で読み込まれた音源を使うしかありませんでした。
これでは不便なので、マップデータの外に、読み込む音源の一覧ファイルを追加しました。このファイルは、音源と同じディレクトリ (デフォルトで ./audio)にJSON形式で配置されます。ファイルの内容は文字列のみからなる配列としてください。(v4.0.3 の 完全版・更新版ともにこのファイルは同梱しています。次のバージョンアップ以降は完全版のみの同梱となりますのでご注意ください。)
このファイル内の配列要素にあるサウンド番号は自動で読み込まれます。互換性のため、これまでの効果音をロードする仕組みも維持されますが、ゲーム内で使う音源は全て記載しておくことをおすすめします。
例えば、
[
"# 「#」から始まる文字列要素はコメントとして認識され、実際のロードに影響しません。",
"############# システム予約効果音 #############",
"# ボダンクリック音",
1,
"# 攻撃時",
3,
"############# ユーザ定義効果音 #############",
"# ハロー",
10,
"# 敵消滅",
11,
"# 歩行音",
12
]
とすれば、 1.mp3, 3.mp3, 10.mp3, 11.mp3, 12.mp3 が読み込まれます。連続するサウンド番号については、開始する番号と終了する番号からなる2要素の配列を指定することで全部読み込まれます。つまり、上記のJSONファイルは
[
1,
3,
[10, 12] "# 10, 11, 12 と同じ効果"
]
と等価です。
(余談, 1(決定音), 3(攻撃音) は書かなくてもシステム予約なので必ず読み込まれます。わかりやすさのため本記事では記述していますが、書かなくても大丈夫です。)