开发者博客#8:样条重构

这个星期,我经历并重构了与Cosmonote音乐系列有关的所有内容。 我将介绍更改背后的原因以及实现的种类,但首先,这是一个简短的视频,展示了基于样条的新音乐系列:

这个问题最困难的部分不是实际的编码,而是权衡我的选择权(“冻结了我几天”)来“弄清楚”采取的路径,以及这些选择权将在游戏中发生多大变化。 最后,我选择的解决方案是使用一条中心线,它代表音乐线的发展。 这条线上的节拍将保持彼此保持恒定的长度,但是,这条线仅是实际放置左,右攀岩点的指南。 因此,最终,用户遵循的是恒定进度的近似值。

事实证明,这并不影响游戏体验! 至少到目前为止,与我测试过的结果不同。 当然,必须做更多的测试才能更好地理解玩家对这种变化的反应。 我当然更喜欢曲线的外观!

为了创建这种音乐“样条曲线”,我再次依靠yasirkula,他拥有出色的贝塞尔曲线样条解决方案。 以贝塞尔曲线为基础,我编写了一种算法,该算法可使我沿着样条曲线创建等长的细分,以便我可以将节拍位置正确对齐到任何给定的歌曲。 不利的一面是,保持贝塞尔曲线上的点之间的恒定长度并非一帆风顺,而对我而言,最好的可用方法是将曲线分成细小段,并使给定的一组段的总和保持恒定。 目前,我将其细分为1000首,但是对于更长的歌曲,我可能需要更高的分辨率,这可能会导致性能下降。

经过大量的工作和头痛之后,我很高兴得出结论,此重构取得了巨大的成功,并且给项目带来了许多风格上的好处。 下周,我将重新进行长时间保持音符的实验,并回避使用户跳舞的机制。 回头见!