欢迎光临散文网 会员登陆 & 注册

【翻译】音游开发速成:来自Bemuse作者的提示(作者:5argon)

2023-07-03 01:00 作者:Starbow-Iridum  | 我要投稿

【文章原载于https://exceed7.com/native-audio/rhythm-game-crash-course/tips-from-bemuse.html,授权翻译转载,再次转载请联系原作者获取授权。】

【系列文章目录】

  1. 音游开发速成(概论)

  2. 背景音轨

  3. 游戏设计与制谱

  4. 四类音频应用程序

  5. 音频导入设置

  6. 与DSP同步

  7. 来自Bemuse作者的提示【本文】

来自Bemuse作者的提示

Bemuse

Bemuse(http://bemuse.ninja/)是一个基于HTML5技术、React、Redux和Pixi.js的在线web音游,其作者@dtinth(https://github.com/dtinth)分享了他的一些关于延迟的技术。感谢@dtinth!

  • 我们在Web环境中没有访问本地资源的权限,所以我开发Bemuse的时候无法控制延迟,不得不做了很多应变工作。(顺便说一下,浏览器一直在对此进行改进。例如我的Android设备上的Chrome曾经延迟高达120 ms以上,而现在是70 ms左右)。

  • 延迟过大的问题:在高延迟设备上,我们可以仿照Guitar Hero将反应音效(raction sound)转换为分层音效(layer sound)。当延迟高于10 ms时,Bemuse会切换到另一种模式。它将在玩家敲击键盘前自动播放key音,但如果玩家没有击中Note,那么之前播放的声音就会被取消,并且暂时禁用自动播放功能。直到玩家击中了另一个Note,自动播放模式才会重新启用,但这个Note听起来会很晚,这是一个权衡点。另外,如果玩家在某个Note上打出了OFFBEAT判定【译注:这是Bemuse的最差击中判定】,那么作为惩罚,该Note的音高会稍微偏移。

  • 与音频时间同步的问题:在Web环境中,AudioContext.currentTime也可能以非连续的步骤进行更新。该问题仅在某些浏览器/操作系统中出现,当缓冲区刷新时才会更新该值,而非“实时”更新。Bemuse通过持续采样并收集偏移增量(dspTime - 游戏时间)来绕过这个问题。游戏对上一秒内的多个偏移增量求均值,并依据该值从游戏时间测定真实音频时间。这意味着缓存超载和音频跳跃不会导致游戏内容的突然跳跃。Note会滚动得更快或更慢,从而跟上dspTime。

  • 帧间输入问题:我们可以将点击动作发生的时间考虑成两帧之间的时间范围,而不是当做发生在一个时间点上的事件。权衡点在于判定将在帧率下降时会变得更宽松,但我觉得帧率下降本身就已经是一种惩罚

  • 另一种视觉辅助是用颜色去编码不同的节奏类型(四分音符/强拍、八分音符/弱拍、十二分音符/三连音等)。这让玩家可以游玩非常唬人的谱面,例如英国视奏锦标赛的这张谱:https://youtu.be/F69zEKYVLHE。

【译注:站内视频可参考

与原文是同一视频】

【翻译】音游开发速成:来自Bemuse作者的提示(作者:5argon)的评论 (共 条)

分享到微博请遵守国家法律