add-audio について
既存のブラウザーゲームに合成音楽と効果音を加えるスキルです。音声ファイルや npm パッケージを使わず、Web Audio API で音を生成し、ゲームイベントに接続する手順を示します。
主な機能
- 01ループする BGM の合成
- 02一度だけ鳴る効果音の生成
- 03ゲームイベントへの音声接続
- 04ミュート切り替えの追加
- 05ビルドによる変更確認
活用シーン
- 01ゲームシーンにループ BGM を追加
- 02ジャンプ、得点、死亡時に効果音を再生
- 03ミュートボタンとキーボード操作を追加
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ playableintelligence/ game-creator --skill add-audioインストール後、Claude Code で/add-audioを入力して読み込まれたか確認します。
詳細
パフォーマンスに関する注意事項
- 時間をかけて、徹底的に作業してください
- 速度より品質を重視してください
- 検証手順を省略しないでください
オーディオを追加する
既存のゲームに、プロシージャル生成の音楽と効果音を追加します。BGMには、パターンをループ再生する Web Audio API のステップシーケンサーを使用します。効果音には Web Audio API を直接使用し、1回限りの再生を実現します。オーディオファイルも npm パッケージも必要ありません。すべてブラウザー上で合成されます。
手順
$ARGUMENTS に指定されたゲーム(パスが指定されていない場合は現在のディレクトリ)を分析します。
まず、ゲームオーディオのスキルを読み込み、Web Audio のパターンと統合ガイドの全体を確認します。
ステップ 1:監査
src/core/EventBus.jsを読み、ゲーム内にどのようなイベント(フラップ、スコア、死亡など)があるか確認します- すべてのシーンファイルを読み、ゲームの流れ(ゲームプレイ、ゲームオーバー)を理解します
- ゲームのジャンルや雰囲気に合う音楽と効果音を特定します
ステップ 2:計画
追加するオーディオの計画を表にまとめます。
| イベント/シーン | オーディオの種類 | スタイル | 説明 |
|---|---|---|---|
| GameScene | BGM | チップチューン | 明るい矩形波のメロディー+ベース+ドラム |
| GameOverScene | BGM | 物悲しい | ゆっくりと下降するメロディー |
| プレイヤーのアクション | 効果音 | レトロ | 素早いピッチスイープ |
| スコア | 効果音 | レトロ | 2音のディン音 |
| 死亡 | 効果音 | レトロ | 下降する潰れた音符 |
平易な英語で、次のように説明します。「各シーンでバックグラウンドミュージックが自動的にループします。ジャンプ、スコア獲得、死亡などのアクションに応じて効果音が再生されます。最初にクリック/タップすると、オーディオシステムが有効になります(ブラウザーでは、音声を再生する前にユーザー操作が必要です)。」
ステップ 3:実装
src/audio/AudioManager.jsを作成します。AudioContext の初期化、マスターゲインノード、BGM シーケンサーの再生/停止を実装しますsrc/audio/AudioBridge.jsを作成します。EventBus のイベントを AudioManager に接続して BGM を制御し、効果音関数を直接呼び出します- 各シーン用の BGM パターンを含む
src/audio/music.jsを作成します(Web Audio のステップシーケンサー。連続ループする音符配列を使用) - 各イベント用の効果音を含む
src/audio/sfx.jsを作成します(Web Audio API を使用し、OscillatorNode + GainNode + BiquadFilterNode によって1回限りの再生を実現) EventBus.jsにオーディオイベントがなければ追加します(AUDIO_INIT、MUSIC_GAMEPLAY、MUSIC_GAMEOVER、MUSIC_STOP、AUDIO_TOGGLE_MUTE)main.jsでinitAudioBridge()を接続します- 初回のユーザー操作時に
AUDIO_INITを発行します(メニューなしでゲームがすぐに始まります) - シーン遷移時に音楽イベントを、ゲーム内のアクション時に効果音イベントを発行します
- ミュート切り替えを追加します。
AUDIO_TOGGLE_MUTEイベント、UI ボタン、M キーのショートカットを実装します
ステップ 4:検証
npm run buildを実行し、エラーがないことを確認します- 作成/変更したファイルをすべて一覧表示します
- ユーザーに「1回クリック/タップしてオーディオを有効にすると、音楽が聞こえるようになります」と伝えます
使用例
オーディオを一通り追加する
/add-audio examples/flappy-bird
結果:src/audio/AudioManager.js、music.js(ゲームプレイとゲームオーバーの BGM パターン)、sfx.js(フラップ、スコア、死亡、ボタンの効果音)を作成し、AudioBridge で接続します。M キーでミュートを切り替えられます。最初のクリックでオーディオが有効になります。
トラブルシューティング
音が再生されない
原因: ユーザー操作後に AudioContext が再開されていません(ブラウザーの自動再生ポリシー)。 対処法: 初回のユーザー入力(クリック/タップ/キー押下)時に AudioContext.resume() が呼び出されることを確認してください。AUDIO_INIT イベントが接続されているか確認してください。
オーディオによって一時的に処理が遅くなる
原因: フレームごとに新しい OscillatorNode を作成しています。 対処法: 効果音は1回限りの再生にします(作成、接続、開始、停止)。BGM には単一のループシーケンサーを使用します。update() 内でノードを作成しないでください。
次のステップ
ユーザーに次のように伝えます。
ゲームに音楽と効果音が追加されました。次に
/game-creator:qa-gameを実行し、ゲームが正しく起動すること、シーンが適切に遷移すること、スコアが正常に機能すること、ビジュアルが壊れていないことを確認する自動テストを追加してください。パイプラインの進捗:
/viral-game→/design-game→/add-audio→/qa-game→/review-game(これは
/viral-gameのワンショットパイプラインです。複数のセッションにわたってマイルストーンごとに進める/make-gameのワークフローではありません。)