Phonograph.js:可容忍的移动网络音频

同步音量变化非常容易,因为Web音频API允许我们将诸如音量变化之类的时间安排到1千万分之一秒。 (真的!这是十亿分之一的百万分之一。当然,您的硬件可能无法达到这种精度,但这意味着在同一时间安排的两个事件肯定会同时发生。) 但是我们的问题才刚刚开始。 一段音频多长时间? 当您使用context.decodeAudioData(…)解码音频块时,所得的AudioBuffer具有duration属性,该属性表示剪辑的长度(以秒为单位)。 我们需要知道,以便安排后续块的回放。 问题是, 持续时间很可能是一部完整的小说。 Safari会根据mp3文件声称的持续时间(而不是实际解码的时间),根据duration属性读取第一个块的文件标题,而不是帧标题 。 在那之后,它做得更好,但是如果第二个块开始播放几分钟又太迟了,那对我们没有帮助。 同时,Chrome本质上会吐出随机数。 对于CBR文件(以恒定比特率(例如128kbps)编码的文件)来说,这很好,但是对于可变比特率(VBR)文件,它可能会被低估。 当浏览器API失败时,我们只有一种选择:用JavaScript的硬方法实现逻辑。 mp3文件的剖析 为了做到这一点,我们需要了解我们正在处理的数据在1和0级别。 有用的是,尽管mp3规范受版权保护(如果您愿意为之付费,则可以获取该文件;我不会),但是善良而聪明的人们对它进行了反向工程,并免费提供了他们的发现。 (如果您对此东西感兴趣,让我们来构建比约恩·埃德斯特罗姆(BjörnEdström)的MP3解码器也是必不可少的阅读材料,尽管它与我们使用留声机的工作并不完全相关。)…

仅iPad,gamedev –#8 –游戏美术和铅笔

自本系列开始以来,许多想法发生了变化,其中一些与游戏美术,如何做,如何使用以及创作过程中涉及的工具/应用有关。 首先,我买了Apple Pencil以帮助我(以及以后的游戏)的设计过程,因为我一直在努力制作出色的像素艺术–问题不在于工具,而是我。 我花了很多时间去看我制作的像素艺术,并认为它足够好,这最终打扰了我。 因此,我使用Autodesk的Graphic应用程序从像素艺术更改为矢量艺术。 另外,还完成了从Wacom手写笔到Apple Pencil的更改,因为在绘制矢量艺术时,铅笔感觉更加自然,而且更加精确。 我真的很喜欢使用它。 从像素艺术到矢量艺术的转变? 为什么? 我决定在新游戏上使用更高的分辨率,首先是因为一些使用网络游戏赚钱的开发人员总是使用高分辨率美术作品,这是一种市场趋势,这种绘制方式(对我来说)更容易(对我来说)更快捷。 。 我可以保持自己喜欢的2D艺术,还可以以更简单的方式制作动画(spritesheets)。 在游戏上达到更高的分辨率并不困难,只需对最小游戏区域和我以前使用的尺寸进行一些调整,只需将所有内容乘以4倍即可。 我的艺术创作过程首先是对模型进行了模拟,然后将原型制作到最低限度。 从模型中,我可以分离背景,前景项目,图块,UI元素,并导出为要在游戏中使用的PNG文件。 商标和标题屏幕是在我想到好名字之后制作的。 这是一个测试想法的好时机,也是我更改有关游戏玩法的最初概念某些方面的地方。…