К основному содержанию
скилл CX Codex

game-audio — скилл для Claude Code: что делает и как установить

Генерирует процедурную фоновую музыку и звуковые эффекты для браузерных игр через Web Audio API. Работает без внешних файлов и сторонних пакетов.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add PlayableIntelligence/game-creator --skill game-audio -a claude-code
Открыть на GitHub

Что делает game-audio

Скилл настраивает звуковую подсистему игры на базе нативного Web Audio API. Внутри проекта создаётся каталог src/audio с менеджером контекста и шиной событий AudioBridge. Все эффекты синтезируются программно узлами OscillatorNode и фильтрами, поэтому аудиофайлы скачивать не нужно.

Планировщик секвенсора смотрит вперёд на 100ms и проверяет очередь каждые 25ms. Это исключает задержки темпа при воспроизведении лупов. Для отключения звука предусмотрен общий узел masterGain.

Звуковой контекст не запустится сам. Браузерная политика автовоспроизведения требует первого клика игрока, поэтому инициализация привязана к пользовательскому событию. При желании фоновую музыку можно перевести на @strudel/web, но библиотека требует лицензию AGPL-3.0.

Какие задачи решает

  • написать синтез звуковых эффектов для прыжков и счёта
  • собрать пошаговый секвенсор для циклической фоновой музыки
  • обойти блокировку автовоспроизведения звука в браузере
  • настроить кнопку отключения звука через мастер-гейн

Примеры запросов агенту

  • Сделай процедурные звуковые эффекты прыжка и гибели через Web Audio API
  • Настрой секвенсор фоновой музыки для браузерной игры с помощью game-audio
  • Добавь AudioManager и свяжи события EventBus со звуками

Как установить game-audio

1Через Skills CLI (Vercel)

npx skills add PlayableIntelligence/game-creator --skill game-audio -a claude-code

2Вручную: положить файлы

~/.claude/skills/game-audio/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/game-audio/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о game-audio

Как установить game-audio в Claude Code?

Выполните команду npx skills add PlayableIntelligence/game-creator --skill game-audio -a claude-code.

Что делает скилл game-audio?

Он обучает агента генерировать процедурную музыку и эффекты на базе встроенного Web Audio API. Внешние аудиофайлы форматов MP3 или WAV не понадобятся.

Нужны ли внешние библиотеки для работы звука?

Синтез работает на встроенных возможностях браузера без зависимостей. Пакет @strudel/web нужен только для сложных музыкальных паттернов и накладывает ограничения лицензии AGPL-3.0.

Исходный текст

SKILL.md · MIT
---
name: game-audio
description: Game audio engineer using Web Audio API for procedural music and sound effects in browser games. Zero dependencies. Use when adding music or SFX to a game.
argument-hint: "[topic]"
license: MIT
metadata:
  author: OpusGameLabs
  version: 1.3.0
  tags: [game, audio, music, sfx, web-audio-api, bgm]
---

# Game Audio Engineer (Web Audio API)

You are an expert game audio engineer. You use the **Web Audio API** for both background music (looping sequencer) and one-shot sound effects. Zero dependencies — everything is built into the browser.

## Performance Notes

- Take your time with each step. Quality is more important than speed.
- Do not skip validation steps — they catch issues early.
- Read the full context of each file before making changes.
- Test every sound in the browser. Web Audio timing is different from what you expect.

## Reference Files

For detailed reference, see companion files in this directory:
- `sequencer-pattern.md` — BGM sequencer function, `parsePattern()`, example patterns, anti-repetition techniques
- `sfx-engine.md` — `playTone()`, `playNotes()`, `playNoise()`, all SFX presets
- `mute-button.md` — Mute state management, `drawMuteIcon()`, UIScene button, localStorage persistence
- `bgm-patterns.md` — Strudel BGM pattern examples
- `strudel-reference.md` — Strudel.cc API reference
- `mixing-guide.md` — Volume levels table and style guidelines per genre

## Tech Stack

| Purpose | Engine | Package |
|---------|--------|---------|
| Background music | Web Audio API sequencer | Built into browsers |
| Sound effects | Web Audio API one-shot | Built into browsers |
| Synths | OscillatorNode (square, triangle, sawtooth, sine) | — |
| Effects | GainNode, BiquadFilterNode, ConvolverNode, DelayNode | — |

No external audio files or npm packages needed — all sounds are procedural.

## File Structure

```
src/
├── audio/
│   ├── AudioManager.js    # AudioContext init, BGM sequencer, play/stop
│   ├── AudioBridge.js     # Wires EventBus → audio playback
│   ├── music.js           # BGM patterns (sequencer note arrays)
│   └── sfx.js             # SFX (one-shot oscillator + gain + filter)
```

## AudioManager (BGM Sequencer + AudioContext)

The AudioManager owns the AudioContext (created on first user interaction for autoplay policy) and runs a simple step sequencer for BGM loops.

```js
// AudioManager.js — Web Audio API BGM sequencer + SFX context

class AudioManager {
  constructor() {
    this.ctx = null;
    this.currentBgm = null; // { stop() }
    this.masterGain = null;
  }

  init() {
    if (this.ctx) return;
    this.ctx = new (window.AudioContext || window.webkitAudioContext)();
    this.masterGain = this.ctx.createGain();
    this.masterGain.connect(this.ctx.destination);
  }

  getCtx() {
    if (!this.ctx) this.init();
    return this.ctx;
  }

  getMaster() {
    if (!this.masterGain) this.init();
    return this.masterGain;
  }

  playMusic(patternFn) {
    this.stopMusic();
    try {
      this.currentBgm = patternFn(this.getCtx(), this.getMaster());
    } catch (e) {
      console.warn('[Audio] BGM error:', e);
    }
  }

  stopMusic() {
    if (this.currentBgm) {
      try { this.currentBgm.stop(); } catch (_) {}
      this.currentBgm = null;
    }
  }

  setMuted(muted) {
    if (this.masterGain) {
      this.masterGain.gain.value = muted ? 0 : 1;
    }
  }
}

export const audioManager = new AudioManager();
```

## BGM Sequencer Pattern

See `sequencer-pattern.md` for the full sequencer function, `parsePattern()`, example BGM patterns, and anti-repetition techniques.

## SFX Engine (Web Audio API -- one-shot)

See `sfx-engine.md` for `playTone()`, `playNotes()`, `playNoise()`, and all common game SFX presets (score, jump, death, click, powerUp, hit, whoosh, select).

## AudioBridge (wiring EventBus -> audio)

```js
import { eventBus, Events } from '../core/EventBus.js';
import { audioManager } from './AudioManager.js';
import { gameplayBGM, gameOverTheme } from './music.js';
import { scoreSfx, deathSfx, clickSfx } from './sfx.js';

export function initAudioBridge() {
  // Init AudioContext on first user interaction (browser autoplay policy)
  eventBus.on(Events.AUDIO_INIT, () => audioManager.init());

  // BGM transitions
  eventBus.on(Events.MUSIC_GAMEPLAY, () => audioManager.playMusic(gameplayBGM));
  eventBus.on(Events.MUSIC_GAMEOVER, () => audioManager.playMusic(gameOverTheme));
  eventBus.on(Events.MUSIC_STOP, () => audioManager.stopMusic());

  // SFX (one-shot)
  eventBus.on(Events.SCORE_CHANGED, () => scoreSfx());
  eventBus.on(Events.PLAYER_DIED, () => deathSfx());
}
```

## Mute State Management

See `mute-button.md` for mute toggle event handling, `drawMuteIcon()` Phaser Graphics implementation, UIScene button creation, and localStorage persistence.

## Integration Checklist

1. Create `src/audio/AudioManager.js` — AudioContext + sequencer + master gain
2. Create `src/audio/music.js` — BGM patterns as note arrays + sequencer calls
3. Create `src/audio/sfx.js` — SFX using Web Audio API (oscillator + gain + filter)
4. Create `src/audio/AudioBridge.js` — wire EventBus events to audio
5. Wire `initAudioBridge()` in `main.js`
6. Emit `AUDIO_INIT` on first user click (browser autoplay policy)
7. Emit `MUSIC_GAMEPLAY`, `MUSIC_GAMEOVER`, `MUSIC_STOP` at scene transitions
8. **Add mute toggle** — `AUDIO_TOGGLE_MUTE` event, UI button, M key shortcut
9. Test: BGM loops seamlessly, SFX fire once and stop, mute silences everything

## Important Notes

- **Zero dependencies**: Everything uses the built-in Web Audio API. No npm packages needed for audio.
- **Browser autoplay**: AudioContext MUST be created/resumed from a user click/tap. The `AUDIO_INIT` event handles this.
- **Master gain for mute**: Route everything through a single GainNode. Setting `gain.value = 0` mutes all audio instantly.
- **Sequencer timing**: The look-ahead scheduler (schedules 100ms ahead, checks every 25ms) gives sample-accurate timing with no drift. This is the standard Web Audio scheduling pattern.
- **No external audio files needed**: Everything is synthesized with oscillators.
- **SFX are instant**: Web Audio API fires immediately with zero scheduler latency.

## Optional: Strudel.cc Upgrade

For richer procedural BGM with pattern language support, you can optionally install `@strudel/web`:

```bash
npm install @strudel/web
```

**Note**: Strudel is **AGPL-3.0** — projects using it must be open source. See `strudel-reference.md` and `bgm-patterns.md` in this directory for Strudel-specific patterns.

The Strudel upgrade replaces the Web Audio sequencer for BGM only. SFX always use Web Audio API directly.

© OpusGameLabs · MIT · PlayableIntelligence/game-creator

Похожие скиллы

Всё по теме «Геймдев и 3D: Unity, Unreal, Godot, Blender» →
build-game-audio-feedback MengTo Помогает агенту спроектировать звуковые подсказки для Three.js или браузерной игры: попадания, блоки, музыка по состояниям. CX Codex +1 1 300установок threejs-audio-generator majidmanzarpour Скилл генерирует через ElevenLabs звуки, музыку и озвучку для игр на Three.js и встраивает их в проект через Web Audio. CX Codex +1 2 900установок ue-audio-system quodsoler Скилл для работы со звуком в Unreal Engine: подсказывает, как проигрывать, микшировать и отлаживать аудио из C++. CX Codex +1 1 100установок web-audio-api martinholovsky Даёт агенту знание Web Audio API: синтез сигналов, визуализация частот, микрофонный вход и пространственный звук для интерфейсов. CX Codex +1 395установок videoagent-audio-studio wells Маршрутизирует запросы на генерацию речи, музыки, шумовых эффектов и клонирование голоса к API ElevenLabs и fal.ai. Позволяет получать готовые аудиофайлы прямо в диалоге с ассистентом. CX Codex +1 3 900установок audio-and-sound phaserjs Помогает настроить воспроизведение звуков, фоновой музыки, громкости и пространственного аудио в играх на Phaser 4 через SoundManager и Web Audio API. CX Codex +1 944установок

Из того же набора27

game-designer Скилл для геймдизайна: разбирает браузерную игру и доводит её вид — фон, частицы, анимации, переходы между сценами. CX Codex +1 1 900установок game-assets Скилл рисует пиксель-арт спрайты, анимированных персонажей и предметы для браузерных игр прямо кодом, без внешних картинок. CX Codex +1 1 600установок phaser Скилл задаёт агенту структуру проекта для 2D-игр на Phaser 3: сцены, общий стейт, шина событий. Пригодится, когда начинаете новую игру или добавляете в неё механики. CX Codex +1 1 400установок design-game Проводит аудит визуала и игрового ощущения готовой игры, ставит оценки по областям и вносит правки: фон, частицы, анимации, типографика. CX Codex +1 1 400установок game-architecture Скилл задаёт структуру проекта браузерной игры: EventBus, единый GameState, Constants.js и порядок слоёв. Пригодится, когда код игры уже расползается. CX Codex +1 1 200установок make-game Скилл структурирует разработку видеоигр: от проработки геймплея и выбора движка до генерации проекта и исправления багов. CX Codex +1 1 100установок game-qa Скилл для автотестов браузерных игр: проверяет визуал, геймплей, производительность и доступность через Playwright. Пригодится, когда тесты надо писать или разбирать их падения. CX Codex +1 1 100установок game-3d-assets Подбирает, генерирует и встраивает 3D-модели GLB и GLTF в браузерные игры на Three.js вместо стандартных кубов и сфер. CX Codex +1 1 100установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой