【GameMaker】サウンドとオーディオグループの基本

GameMaker

Step1. サウンドアセットの作成

新しいサウンドアセットの作成は、以下のいずれかの操作から可能です

 ・サウンドデータ(.mp3 , .ogg / .wavなど)をGameMakerエディタへドラッグアンドドロップ

 ・アセットブラウザで右クリック→[作成]→[サウンド]を選択

    

サウンドアセットが作成されると、以下のようなサウンドエディタが展開されます。

Step2. サウンドのロードとアセット基本設定

サウンドアセットはサウンドエディターから各種設定が可能です。

ポイントを以下にまとめておきます。

  • サウンドデータの読み込み:
    アセット名の右にある[…]ボタンから実行。(ドラッグアンドドロップで読み込んだ場合は不要)
  • 属性:
    ゲームをエクスポートする際に設定されるもので、サウンド再生(ロード)方法に影響。
    ざっくり以下のように設定。
    • 効果音(SE)など、短いサウンド(.wav) → 「非圧縮」
    • BGMやループエフェクトなど長いサウンド(.mp3, .ogg) →「圧縮」*
      *ストリーミングの有無はサウンドの用途やサイズによって調整(補足情報参照)
  • ターゲットオプション:
    基本的にデフォルトでOK。音楽とSEで品質を変えたい場合や、容量の調整を行いたい場合は、
    短いサウンドエフェクトについてサンプルレートを11025 または 22050 に下げることを検討
  • オーディオのグループ:
    ここではサウンドが属するオーディオグループを設定することができます。
    また、各オーディオグループのゲインや試聴はサウンドミキサーからも行うことができます。
    (オーディオグループについては後述)

圧縮:
GameMaker サウンドアセットとしてロードした元ファイルをogg形式へ変換して利用するかどうか。(元がoggの場合はそのままコピーを使用*)
→ ogg(圧縮)形式でディスクにロードし、ゲーム中で再生するときに回答してメモリにロードするイメージ

*この性質上、ゲーム中で使用する長いサウンドはogg形式で用意しておくと効率的です。

ストリーミング:
再生するサウンドファイルを一度に全てメモリにロードせず、必要な部分だけをディスクから読み込んで再生していく方法。
→ 長時間のBGMなどの大きなサウンドファイルではメモリ消費の効率化が期待できるが、小さい効果音などの再生には不向き。

Step3. サウンドの再生と基本的な関数

以下にサウンドの主要な関数をまとめました。(一部抜粋)
Stepイベントやキープレスイベントで実行すると、再生・停止・一時停止/再開の操作ができます。

関数名概要
audio_play_sound()・サウンドの再生関数
・引数は以下の通り:
  (サウンド, 優先度, ループ再生の有無(true/false),
   [ゲイン], [再生開始点(秒)], [ピッチ(初期値:1)], [ビットマスク])
audio_stop_sound()・サウンドの停止関数
・基本的には[audio_is_playing()]で再生状態の確認とセットで使用

 //例) 対象サウンドが再生中なら停止する
  if (audio_is_playing(<対象>)) audio_stop_sound(<対象>);
audio_sound_gain()・サウンドのゲイン(音量)変更関数
 →音量調整の他、フェードインやフェードアウトに使用することも可能
・引数は以下の通り:
  (サウンド, ゲイン(0~1), 遷移にかける時間(ミリ秒))
audio_pause_sound()
&
audio_resume_sound()
・サウンドの一時停止&再開関数
・[audio_is_paused()]でポーズ状態を確認して以下のように活用可能

//例)サウンドの一時停止・再開
if (audio_is_paused(snd_bgm01)){
audio_resume_sound(snd_bgm01)
}
else{
audio_pause_sound(snd_bgm01)
}

以下の例は「スペースキーを押したときに、再生中のBGMを一時停止/再開」

その他詳細な解説や利用可能な関数については以下の公式ドキュメントをご参照ください

GameMaker Manual
コメント
コメント

ここまでで、サウンドの読み込み~再生・停止といった基本的な流れは完了です。
以降はオーディオグループの内容についてまとめておきますが、少し複雑な内容になりまので、
簡単なサウンドの利用で十分な場合や練習段階ではここまでの内容で色々と試してみることをおすすめします。

Step4. オーディオグループの利用

GameMaker では、サウンドアセットをオーディオグループという単位で管理することができます。
サウンドの再生/停止などの基本操作に必須ではありませんが、以下のような目的で使用できます。

オーディオグループでできること
  • グループごとの音量(ゲイン)設定
     →グループ内のサウンド音量は、オーディオグループに設定された音量と乗算出力される
  • グループ単位でのロード/アンロード*(メモリ使用量の効率化)

  *オーディオグループを作成した場合、「ロードを行わないと再生ができない」ことに注意

一言コメント
一言コメント

ゲームオプションによく用意される、「BGMボリューム/SEボリューム/ボイスボリューム」といった、種別ごとの音量設定の実装に有用です。

オーディオグループの作成・編集

以下が、オーディオグループを作成し、グループに各サウンドアセットを割り当てるまでの流れです。

[ツール]→[オーディオのグループ]
から、オーディオグループエディタを展開

② オーディオグループエディタ右上のボタン新しく追加から新規オーディオグループを作成
 (例ではBGM用とSE用の2グループを作っています)

③ 以下いずれかの方法で作成したオーディオグループへ各サウンドアセットを割り当て
  ・オーディオグループエディタ下部アセットを追加からサウンドを選択
  ・サウンドエディタの最下部にある[オーディオのグループ]からグループを選択(前項参照)

グループの作成とサウンドの割り当てが完了すると、オーディオグループエディタで以下のような一覧で確認ができます。

オーディオグループの活用

オーディオグループの主要関数を以下にまとめます。(一部抜粋)
特に重要な点として、 デフォルトグループ以外に属するサウンドは、オーディオグループのロード後でないと再生できない(無音となってしまう)ことを抑えておきましょう。

関数名概要
audio_group_load()・オーディオグループに属するサウンドのロードを行う関数
audio_group_is_loaded()で、ロード状況を確認して使用

//グループがロード済みでなければロードする
if not audio_group_is_loaded (<対象グループ>){
audio_group_load(<対象グループ>);
}
audio_group_unload()・オーディオグループに属するサウンドのアンロードを行う関数
・ロード時と同様、audio_group_is_loaded()で、状況を確認して使用
audio_group_set_gain()・オーディオグループのゲイン(音量)を設定する関数
・引数は以下の通り:
  (グループID, ゲイン(0~1), 遷移にかける時間(ミリ秒))
・最終的に出力されるサウンドの音量は以下の乗算になることに注意
 出力音量 = 所属グループゲイン × サウンドゲイン
audio_group_stop_all()・指定オーディオグループに属する全サウンドを停止する関数

その他詳細な解説や利用可能な関数については以下の公式ドキュメントをご参照ください

GameMaker Manual

参考サイト

Just a moment...
ひらまめ(hiramame)

普通の会社員をやりながら個人でゲーム開発を行っている者です。
「個人でも、初心者でも、社会人として働きながらでもゲームが作れる!」をテーマに情報発信をしています。

ひらまめ(hiramame)をフォローする
GameMaker
ひらまめ(hiramame)をフォローする
ひらまめゲーム制作研究室

コメント

タイトルとURLをコピーしました