Unity开发之音乐游戏—基础知识

最近工作需要做一款音乐游戏,这种类型从未开发过,对这种游戏也不怎么喜欢玩。程序开发不需要每样都精通,但要求善于分析问题,解决问题。下面汇总一下相关的知识。

一、基本概念:
  • BGM:背景音乐;
  • BPM:每分钟节拍数(Beat Per Minute), 60/BPM 就是每一拍的时间;
  • 采样率:每秒采样数量
  • 采样数:一首BGM的采样总数    总时间=采样数/采样率
  • 音符:二分音符,四分音符(4/4),八分音符,十六分音符,如果bpm为60,一秒为一拍,4/4就是一秒(一拍)弹4个音符(1、2、3、4;2、2、3、4……),同理2/2就是一拍2个音符

下面的描述很好理解:百度知道

二、音乐游戏实现类型

目前看到两种

1、BGM+打击音效

看一Cytus音乐格式(参考音乐游戏格式解析之【Cytus】

NOTE 为打击点 第二列是序号,第三个是打击点的时间,第四是位置,第五是持续时长,其他信息请参看原文。

TAKT-RHYTHM是使用LeapMotion设备为玩法的音乐游戏

&takt_note是打击点列表,以|分隔每个打击点,以“,”分隔每个参数,参数的意义类似的是时间,打击乐类型等信息。

2、曲谱+按键音效

别踩白块儿2是一款移动端音乐游戏。程序包很小,原因就是音效文件只有各个音符,并不是一整首音乐。看一下曲子的配置文件

Json格式,粘贴到Json在线编辑器,会很到很清晰的结构。

  • baseBpm: 定义曲子的bpm
  • musics:包含几个曲子
  • scores:谱子,包含主谱子和伴奏,通常0是主音,后面是伴奏
  • c2[K],d2[K],e2[K],c2[K]:单个拍子中的音符,每个拍子以”;”分隔,单个音符是”,”分隔
  • [K][L]:单个音符的时长

其实就是音乐谱子,只是和平常谱子不同的是,仅程序能解读,本质是一样的。后面会单独一篇日志详细解析这种格式