HeadlinesBriefing favicon HeadlinesBriefing.com

构建 Aetheryte Radio 音频引擎

Hacker News •
×

作者详细介绍了 Aetheryte Radio 的 JavaScript 实现,复刻了最终幻想 XIV 的环境音行为。游戏在随机间隔、音高和音量播放 "whir" 音效,以创造生命的错觉并掩盖资产重复。FFXIV 提供了这些参数的最小值和最大值,使其能够直接翻译为代码:随机索引选择,播放速率在 0.794 到 1.0 之间,增益值在 0.6 到 1.0 之间。

音频图遵循标准的 Web Audio API 模式:分配一个节点,设置元数据,连接。使用固定播放速率 0.63 的缓冲源创建一个持续的低语循环,连接到增益节点并设置为无限循环。

Whir 系统避免使用传统的循环。不使用 `while(true)` 配合休眠,而是使用 `setTimeout` 在随机延迟(0–2001ms)后调度下一个 whir。`chooseWhir` 函数创建一个源节点,分配随机属性,连接它并开始播放。至关重要的是,当声音结束时,节点会被断开,并通过 `onended` 调度新的一个,为环境音效增加可接受的边际延迟。