Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

Caveのオーディオは非常にシンプルに設計されています。オーディオファイルをインポートし、エディター内でプレビューし、何かが起こったときにゲーム内で再生するという流れです。

このレッスンでは以下を学びます:

  • Asset Browserでのオーディオアセットの扱い方。
  • オーディオファイルのプレビュー方法。
  • .ogg形式でのオーディオのエクスポートや置き換え方法。
  • Pythonからのオーディオ再生方法。
  • ボリュームとピッチの意味。
  • 返されるオーディオハンドルの活用法。
  • Audio Monitorタブによるオーディオのデバッグ方法。

複雑なセットアップは必要ありません。音声をインポートして、ボタンやドア、ピックアップ、キャラクターのアクション時に再生できれば、基本的なワークフローは既に理解できています。

オーディオのインポート

Caveではオーディオファイルをプロジェクト内のオーディオアセットとしてインポートできます。これはImporting Assetsのセクションでも説明した通り、Caveは.oggファイルをサポートしています。

インポートすると、ほかのプロジェクトコンテンツと同様にAsset Browserに表示されます。そこからスクリプトやUIコールバック、Logic Bricks、タイムラインイベントなど、音を再生する必要のあるあらゆるシステムで利用できます。

例えば、プロジェクト内には以下のようなオーディオアセットが存在するかもしれません:

  • Button Click
  • Door Open
  • Pickup Coin
  • Footstep
  • Forest Ambience

Pythonで名前を使って参照することが多いため、わかりやすい名前付けは非常に有用です。

オーディオアセットのプレビュー

オーディオファイルをインポートした後、Cave内で直接プレビューできます。

プレビュー方法はシンプルに以下の2つです:

  • Asset Browserでオーディオアセットをダブルクリックして素早くプレビュー再生。
  • 左クリック一回で選択し、プロパティを表示してからプレビューコントロールで再生。

プロパティ表示はプレビュー中の制御が可能なので便利です。例えば、音声をゲームで使う前にピッチを変えて効果音の違いを確認できます。

特に足音や衝撃音、UIクリック音、クリーチャーの鳴き声などに役立ちます。ピッチを少し変えるだけで繰り返しの音が単調に感じられにくくなります。

オーディオのエクスポートまたは置き換え

オーディオアセットは再度.oggファイルとしてエクスポートすることも可能で、外部ツールで編集したい場合に役立ちます。

また、既存のアセットを別の.oggファイルで置き換えることもできます。すでにロジックが特定のアセット名を参照している場合でも、音声だけ差し替えたいときに便利です。

例えば、ゲームでDoor Openというアセットを使っている場合、音声ファイルを差し替えてもスクリプトはそのまま機能します。


Audio Componentでの音声再生

環境音のループやメインメニューの音楽などシンプルな再生にはAudio Componentが十分です:

image.png

指定した音を無限に再生し、ボリュームやピッチ、3Dサウンドかどうか、最大距離の制御が可能です。ただし再生回数の指定など細かいオプションはなく、カスタマイズが必要な場合はコードで再生します。

Pythonからのオーディオ再生

Pythonからオーディオアセットを再生するもっとも簡単な方法はcave.playSound()を使うことです。

cave.playSound("Button Click")

これはButton Clickという名前のオーディオアセットを再生します。

ボリュームを指定することもできます:

cave.playSound("Door Open", volume=0.8)

ボリュームのデフォルトは1.0で通常の音量です。値が小さいほど音が小さくなります。

例:

ボリューム 意味
2.0 とても大きい音量
1.0 通常の音量
0.5 半分の音量
0.0 無音

多くの場合は1.0から始めて調整します。

ボリュームとピッチ

  • ボリュームは音の大きさを制御します。
  • ピッチは音が高いか低いかを制御します。再生速度にも影響し、高いピッチは速くて鋭い音に、低いピッチは遅くて深い音になります。

ボリュームとピッチのデフォルト値はどちらも1.0です。

例:

ボリューム結果 ピッチ結果
1.0 通常の音量 通常のピッチ
0.5 静かめの音量 低くて遅い音
1.5 大きめの音量(ボリュームとして) 高くて速い音

cave.playSound()ではボリュームは再生開始時に直接指定し、ピッチは返り値のオーディオハンドル経由で変更するのが一般的です。

オーディオハンドル

cave.playSound()を呼び出すと、再生中の音声インスタンスを表すオーディオハンドルが返されます。

sound = cave.playSound("Footstep Stone", volume=0.8)
sound.pitch = 1.0

このハンドルを使うと、再生中の音声の制御が可能です。

例:

sound = cave.playSound("Cave Ambience", volume=0.6, loop=True)

# またはgetter/setterで:
sound.setPitch(0.9)
sound.setVolume(0.4)

ハンドルでできることは:

  • ボリュームの変更
  • ピッチの変更
  • 一時停止
  • 再開
  • 停止
  • 再生進行状況の確認
  • 3Dエンティティから音を出す設定

例えばドアの音をドアのエンティティから鳴らしたい場合:

sound = cave.playSound("Door Open", volume=1.0)
sound.setSource3D(self.entity, maxDistance=20)

すべての音でハンドルが必要なわけではありません。例えばボタンのクリック音の再生だけなら:

cave.playSound("Button Click")

で十分です。

細かい制御が必要な場合はハンドルを使います。

また、足音のピッチや音量をランダムに変えることで、音を増やさずにバリエーションをつけることも可能です:

sd = cave.playSound("Footstep Stone")

# 音源を再生中のエンティティに3D設定:
sd.setSource3D(entity, 20)

# ピッチとボリュームをランダム化:
sd.pitch  = cave.random.uniform(0.5, 1.5)
sd.volume = cave.random.uniform(0.1, 0.3)

このコードは、新しいCaveプロジェクトでデフォルトのProto CharacterのWalkとRunのアニメーションコールバックで見られるものに非常に近いです。


Audio Monitorタブ

Caveにはゲーム実行中のオーディオをデバッグするためのAudio Monitorタブもあります。

image.png

エディターの左上のTabsメニューから開けます。

Audio Monitorは現在再生中の音声情報を表示し、再生進行状況も確認できます。複数の音が同時に鳴る複雑なシーンのデバッグに非常に役立ちます。

例えば、以下のような疑問を解決できます:

  • この音は本当に再生されているか?
  • 何度も同じ音が重なって鳴っていないか?
  • ループしている環境音はまだ鳴っているか?
  • 再生のどの段階にいるか?

小さなプロトタイプでは頻繁に使う必要はありませんが、複雑なプロジェクトでは重要なツールです。

まとめ

Caveのオーディオはシンプルです。音声ファイルをインポートし、Asset Browserでプレビューし、Pythonでcave.playSound()を使って再生します。

ボリュームで音の大きさを、ピッチで音の高さや速さを調整し、必要に応じて返されるハンドルで再生中の音を制御してください。

音が多くなって追いにくいときはTabsメニューからAudio Monitorタブを開いて再生状況を確認しましょう。