Syngen:一个用于音频游戏开发的库

2021-01-28 23:34:07

在过去的一年中,我使用网络技术创建了诸如soundStrider之类的音频游戏,并参与了众多的游戏果酱。通过syngen,我以开源的形式发布了我的工具,以便人们可以与我一起为网络制作动态音频体验和游戏继续阅读以深入了解其功能,查看示例代码,并进一步了解其未来。

syngen是一个游戏引擎和综合工具包,专门用于创建具有完全合成声音的音频游戏。如果您以前玩过任何游戏,那么您可能会熟悉其功能。

它为Web Audio API提供了一个轻巧的包装,提供了用于构建合成器并将其作为道具放置在三维双耳声场上的工具的工具,其事件循环触发了每一帧以更新道具和核心系统。其他实用程序为工程定制系统提供了工具插入其API以提供丰富的体验。

该库必须在浏览器环境中使用,才能访问窗口对象。您可能需要将(' syngen')作为UMD模块,或包括dist / syngen.min.js才能将其分配给syngen。全球。

本示例演示了如何在舞台上定义一个道具并实例化一个道具。在这里,您会听到以中场C为中心,在中间C处播放相对较大的正弦音调:

const prototype = syngen。道具。基地。 invent({onConstruct:function(){this.synth = syngen.audio.synth.createSimple({frequency:syngen.utility.midiToFrequency(60),gain:syngen.utility.fromDb(-6),})。 this。output)},onDestroy:function(){this。synth。stop()},})const instance = syngen。道具 。创建(原型)

该库附带一个示例目录,其中包含其内置功能的简单演示。有关更高级的真实示例,请自由使用和修改以下开源项目:

Audo:这款无尽的音频赛车游戏是为GMTK Jam 2020用syngen开发的,主题不受控制,可以在不断扩大的非欧陆赛道上收集力量并躲避对手。

Auraboros:这款无尽的音频射击游戏是用Ludum Dare 47的syngen开发而成的,主题被固定在一个循环中,以反应灵敏的动作和射弹物理特性面对无尽的敌人波。

Kaleidophone:这是一款带有声音的玩具,由LOWREZJAM 2020和Brackeys Jam 2020.2的合成材料开发而成,主题为倒带,需要花费一些时间来探索生成的图形和音景。

该实验水上飞机模拟器采用Syngen研发的主题视频为No Video Jam,主题为Wave,它利用Perlin噪声以程序方式生成其地形和动态音轨。

提供了其他资源来帮助您开始自己的音频项目:

API文档。该库随附一个docs目录,其中包含详细的文档。也可以在线访问。里面是对使用syngen时需要使用的每个名称空间,接口,方法和类型的说明。

syngen-template。需要从头开始创建音频游戏?此模板存储库提供了工作目录结构和Electron包装器,可用于快速开发和部署。随意创建fork并开始以自己的方式编码。

最初的版本反映了一年的游戏开发学习经验,其中包含一些假设和遗迹,自从我第一次开始这一旅程以来一直保留着。因此,它已发布为0.1.0版,表明它是实验性的,将在您的使用中冒着生产上的风险。希望上面的例子能证明赌博的好处。

因为我在该发行分支上有游戏在生产中,所以它需要保持向后兼容,因此次要版本和补丁版本将仅包含新功能和错误修复。如果达到1.0.0里程碑,则表示当前API的稳定性。

我想在2.0.0版本分支中做的事情反映了我以前对它进行完全重做的假设,这可能包括简化和优化以提高其功能和可用性,理想情况下它将使我能够构建新一代的音频游戏超越了我过去一年所学到的知识。

如果您遇到任何错误或有任何问题或项目要分享,请与GitHub联络或在GitHub上创建问题。我很高兴听到您的创作!