|
Трек 14: аудио — перенос аудио-подсистемы v1 на воксельный движок
Движок (@rpg/engine): src/audio/ — types (4 шины master/music/sfx/ambience, хендлы, опции), decode (BufferCache с in-flight дедупом декода), Voices (полифония sfx: вор самого тихого, restart по ключу, панорама в полёте), Loops (слоты музыки/амбиента с кроссфейдом), SoundSpec/Music (спек-синтез, детерминированный), synth (примитивы v1 tools/synth.mjs в TS — в v2 нет WAV-пайплайна, всё синтезируется в рантайме), AudioManager (фасад: prepare() заводит контекст синхронно, unlock, playSpec с кэшем буфера, шпион onPlayed). 44 юнит-теста (261 всего), тесты v1 перенесены 1:1. Демка: src/audio.ts (спеки боя/урона/шагов — формулы v1 sfxSpecs; DemoAudio — позиционный звук: затухание (1-d/r)^1.5 + изо-панорама, дедуп 0.08 с; StepVariants — 3 варианта шага), обвязка в main.ts — хуки боя (cone→bell_hit, resonance→bell_low, spit, awake→ash_hiss, kill→ash_die, playerHit→hurt), шаг на границе половины walk-цикла, unlock на первом жесте; мост audioUnlock/audioInfo (кольцевой буфер 24). Гейт audio.mjs (8 проверок, DEV-шпион): тишина на старте, шаги играют, атака→bell_hit, плевок→spit, резонанс→bell_low, лог ограничен 24. Все 11 гейтов демки зелёные. Урок: кулдаун конуса не сбрасывается телепортом — между боевыми секциями гейта ждать >= 30 тиков. Co-Authored-By: Claude Code <noreply@anthropic.com> |
|---|
|
|
| docs/plan.md |
|---|
| v2/CLAUDE.md |
|---|
| v2/apps/demo/src/audio.ts 0 → 100644 |
|---|
| v2/apps/demo/src/main.ts |
|---|
| v2/apps/demo/tools/checks/audio.mjs 0 → 100644 |
|---|
| v2/packages/engine/src/audio/AudioManager.ts 0 → 100644 |
|---|
| v2/packages/engine/src/audio/Loops.ts 0 → 100644 |
|---|
| v2/packages/engine/src/audio/Music.ts 0 → 100644 |
|---|
| v2/packages/engine/src/audio/SoundSpec.ts 0 → 100644 |
|---|
| v2/packages/engine/src/audio/Voices.ts 0 → 100644 |
|---|
| v2/packages/engine/src/audio/__tests__/AudioManager.test.ts 0 → 100644 |
|---|
| v2/packages/engine/src/audio/__tests__/Music.test.ts 0 → 100644 |
|---|
| v2/packages/engine/src/audio/__tests__/SoundSpec.test.ts 0 → 100644 |
|---|
| v2/packages/engine/src/audio/decode.ts 0 → 100644 |
|---|
| v2/packages/engine/src/audio/synth.ts 0 → 100644 |
|---|
| v2/packages/engine/src/audio/types.ts 0 → 100644 |
|---|
| v2/packages/engine/src/index.ts |
|---|