HeadlinesBriefing favicon HeadlinesBriefing.com

Строительство аудио-движка Aetheryte Radio

Hacker News •
×

Автор подробно описывает JavaScript-реализацию за Aetheryte Radio, повторяя поведение окружающего звука Final Fantasy XIV. Игра воспроизводит звуковые эффекты "whir" в случайные интервалы, высоты и громкости, создавая иллюзию жизни и маскируя повторение активов. FFXIV предоставляет минимальные и максимальные значения для этих параметров, что позволяет напрямую перевести в код: выбор случайного индекса, скорости воспроизведения от 0.794 до 1.0, и значений усиления от 0.6 до 1.0.

Настройка аудио-графа следует стандартным паттернам Web Audio API: выделить узел, задать метаданные, соединить. Создан постоянный гул с помощью источника буфера с фиксированной скоростью воспроизведения 0.63, соединенного с узлом усиления и настроенного на бесконечный цикл.

Система whir избегает традиционных циклов. Вместо `while(true)` с снами, `setTimeout` запланирует следующий whir с случайной задержкой (0–2001мс). Функция `chooseWhir` создает узел источника, присваивает случайные свойства, соединяет его и начинает воспроизведение. Ключевой момент: когда звук заканчивается, узел отключается и запланирован новый через `onended`, добавляя приемлемую минимальную задержку для фоновых эффектов.