Движок: SfxHandle из play(), опция restart, лимит полифонии maxVoices
- play() возвращает SfxHandle | null: setVolume/setPan/setRate в полёте + stop;
  после stop и естественного конца хендл no-op (учёт голосов через onended)
- restart: true — прежние экземпляры ключа глушатся коротким фейдом
- maxVoices (3-й аргумент конструктора, дефолт 24): при переполнении
  воруется самый тихий играющий голос
- Тесты: 6 новых в AudioManager.test.ts (436 всего); доки assets-audio-save.md,
  practices.md — в том же коммите

Co-Authored-By: Claude Code <noreply@anthropic.com>
1 parent 1f78830 commit fb142ee1bd5bdcc4d6c0fb0547d3e337ce7d906b
@root root authored 1 day ago
Showing 5 changed files
View
docs/engine/assets-audio-save.md
View
docs/engine/practices.md
View
packages/engine/src/audio/AudioManager.ts
View
packages/engine/src/audio/__tests__/AudioManager.test.ts
View
packages/engine/src/index.ts