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

  1. 一、基本概念:
  2. 二、音乐游戏实现类型

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

一、基本概念:
  • 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个音符

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

给您支个招。
去琴行买个节拍器,不用买贵的,电子的也行,主要为了帮助你知道什么叫节拍。在琴行直接向老板询问使用方法。回家后自己调节拍器,调成一分钟60拍的。然后你会发现一秒钟节拍器响一下。响一下就叫一拍。你也可以调成一分钟80拍。90拍,120拍都可以。反正不管调成多快或者多慢速度的,反正响一下就叫一拍。这样您了解了吗??好的,然后你跟着节拍器唱一、二、三、四。响一下唱一个数字,如此循环。这就是4/4拍里一小节有四拍的意思。
好,下面解释什么叫以四分音符为一拍。
如果你刚才按照我说的,唱一、二、三、四了,那么,响的时候,你唱的那个“一”就相当于一个四分音符。(关于四分音符的形状长相,参考你的乐理教材。不相信你那教材连个五线谱表都没有。)那么就是一拍一下了。
下面练习八分音符,继续跟节拍器,响一下你唱两个音。一一、二二、三三、四四。也就是说一个数字占半拍,两个数字占一拍。同理,两个八分音符等于一个四分音符。这个明白了吧?
继续,练习十六分音符。响一下唱四个数字:1111、2222、3333、4444!注意,一定要时值均匀的唱,不能忽快忽慢。这就是节奏问题。也就是四个十六分音符等于一个四分音符,四个十六分音符唱一拍。
好了,现在练习八分和十六分结合。1/11、2/22、33/3、44/4。看懂了吗?“/”把数字隔开了,就是半拍半拍隔开了。
都练习完了吗?好的,看谱子。把这些数字代入音符,就OK了。
如果你能跟上节拍器,做完上述例子,恭喜你,你有节奏感了。
哈哈哈哈~

二、音乐游戏实现类型

目前看到两种 1、BGM+打击音效 看一Cytus音乐格式(参考音乐游戏格式解析之【Cytus】

VERSION 2
BPM 148.001968
PAGE_SHIFT 0.300000
PAGE_SIZE 1.621600
NOTE 0 6.526000 0.900000 1.200000
NOTE 1 8.148000 0.350000 0.000000
NOTE 2 8.959000 0.650000 0.000000
NOTE 3 9.567000 0.150000 1.200000
NOTE 4 9.567000 0.850000 1.200000
NOTE 5 13.013000 0.250000 0.000000
NOTE 6 13.824000 0.600000 0.000000
NOTE 7 14.635000 0.100000 0.816667
NOTE 8 14.635000 0.850000 0.800000
NOTE 9 16.256001 0.350000 0.000000
NOTE 10 17.066999 0.700000 0.000000
NOTE 11 17.878000 0.150000 0.816667
NOTE 12 17.878000 0.900000 0.800000
NOTE 13 19.499001 0.250000 0.000000
NOTE 14 20.309999 0.650000 0.000000
NOTE 15 21.121000 0.350000 0.000000
………………………………………………..
NOTE 226 141.526001 0.500000 0.000000
NOTE 227 142.642868 0.250000 0.000000
NOTE 228 142.692932 0.200000 0.000000
NOTE 229 142.742996 0.150000 0.000000
LINK 217 218 219
LINK 143 144 145 146 147 148 149 150 151 152 153 154 155
LINK 221 222 223 224
LINK 227 228 229
LINK 126 127

NOTE 为打击点 第二列是序号,第三个是打击点的时间,第四是位置,第五是持续时长,其他信息请参看原文。 TAKT-RHYTHM是使用LeapMotion设备为玩法的音乐游戏

start_second=0;

&takt_note=4.344947,3,0,0.5,0|4.824946,3,0,0.5,0|5.304945,3,0,0.5,0|5.784943,3,0,0.5,0|6.264945,3,0.25,0.75,0|6.744944,3,0.25,0.75,0|7.224945,3,0.25,0.75,0|7.704945,3,0.25,0.75,1|8.184945,3,0.5,1,0|8.664947,3,0.5,1,0|9.144946,3,0.5,1,0|9.624948,3,0.5,1,0|10.10495,3,0.25,0.75,0|10.58495,3,0.25,0.75,0|11.06495,3,0.25,0.75,0|11.54495,3,0.25,0.75,1|12.02495,3,0,0.5,0|12.02495,3,0.5,1,0|12.50495,3,0,0.5,0|12.50495,3,0.5,1,0|12.98495,0,0,0.5,0|12.98495,2,0.5,1,0|13.46495,3,0,0.5,0|13.46495,3,0.5,1,0|13.94495,0,0,0.5,0|13.94495,2,0.5,1,0|14.42496,0,0.25,0.75,0|14.42496,2,0.25,0.75,0|14.90496,0,0.5,1,0|14.90496,2,0,0.5,0|15.38498,1,0,0.5,1|15.38498,1,0.5,1,1;

&slide_note=15.86495,3,0.75,1,0,0^16.82495,3,0,0.25,0,6^17.30494,3,0.75,1,0,0|17.78496,3,0,0.25,0,0^18.26497,3,0.75,1,0,6^18.74497,3,0,0.25,0,6^19.22496,3,0.75,1,0,0|19.70495,3,0,0.25,0,0^21.14495,3,0.375,0.625,0,0^21.62495,3,0.375,0.625,0,0^23.06495,1,0.375,0.625,0,0|19.70495,3,0.75,1,0,0^21.14495,3,0.375,0.625,0,0^21.62494,3,0.375,0.625,0,6^23.06495,1,0.375,0.625,0,0;

&clap_note=23.54495,2,0,1,0|24.50496,0,0,1,0|25.46496,2,0,1,0|25.94495,3,0,1,0|26.42496,0,0,1,0|27.38496,0,0,0,0|27.38496,2,0,0,0|28.34496,1,0,0,0|28.34496,3,0,0,0|29.30495,0,0,0,0|29.30495,2,0,0,0|30.74495,0,0,1,0|30.74495,2,0,1,0;

&rhythm=0.5049076,125|4.344908,125;

&camera_mode=;

&back_color01=;
&back_color02=;
&image_color01=;
&image_color02=;

&start_back_color01=;
&start_back_color02=;
&start_image_color01=;
&start_image_color02=;

&takt_note是打击点列表,以|分隔每个打击点,以“,”分隔每个参数,参数的意义类似的是时间,打击乐类型等信息。 2、曲谱+按键音效 别踩白块儿2是一款移动端音乐游戏。程序包很小,原因就是音效文件只有各个音符,并不是一整首音乐。看一下曲子的配置文件

{“baseBpm”:145,”musics”:[{“id”:1,”baseBeats”:0.5,”scores”:[“c2[K],d2[K],e2[K],c2[K];c2[K],d2[K],e2[K],c2[K];e2[K],f2[K],g2[J];e2[K],f2[K],g2[J];g2[L],a2[L],g2[L],f2[L],e2[K],c2[K];g2[L],a2[L],g2[L],f2[L],e2[K],c2[K];d2[K],g1[K],c2[J];d2[K],g1[K],(c1.e1.g1.c2)[J];”,”c[L],g[L],e[L],g[L],c[L],g[L],e[L],g[L];c[L],g[L],e[L],g[L],c[L],g[L],e[L],g[L];c[L],g[L],e[L],g[L],c[L],g[L],e[L],g[L];c[L],g[L],e[L],g[L],c[L],g[L],e[L],g[L];d[L],g[L],(B-1)[L],g[L],c[L],g[L],e[L],g[L];d[L],g[L],(B-1)[L],g[L],c[L],g[L],e[L],g[L];d[L],g[L],(B-1)[L],g[L],c[L],g[L],e[L],g[L];d[L],g[L],(B-1)[L],g[L],c[J];”]},{“id”:2,”baseBeats”:0.5,”scores”:[“c2[K],d2[L],U,e2[K],(g1.c2)[K];c2[K],d2[L],U,e2[K],(g1.c2)[K];(g1.e2)[K],f2[L],U,g2[L],c2[L],U,U;(g1.e2)[K],f2[L],U,g2[L],U,c2[L],d2[L];g2[L],(d1.a2)[L],(g1.g2)[L],f2[L],e2[L],g1[L],c2[L],e2[L];g2[L],(d1.a2)[L],(g1.g2)[L],f2[L],e2[L],g1[L],(c1.c2)[K];d2[L],d1[L],g1[L],d2[L],c2[L],g1[L],d1[L],U;d2[K],g1[L],d2[L],(e1.c2)[J];”,”c[L],g[L],c1[L],d1[K],c1[L],U,g[L];c[L],g[L],c1[L],d1[K],c1[L],U,g[L];c[L],g[L],c1[L],e1[K],U,g1[L],c1[L];c[L],g[L],c1[L],e1[K],g1[K],U;g[J],d[J];g[J],d[KL],g[L];g[JKL],g[L];d[J],(c.g)[J];”]},{“id”:3,”baseBeats”:0.5,”scores”:[“c2[K],d2[L],g1[L],e2[L],g1[L],c2[L],g1[L];c2[K],d2[L],g1[L],e2[L],g1[L],c2[L],g1[L];d2[K],e2[L],d1[L],g2[L],d1[L],e2[L],c2[L];d2[K],e2[K],g2[L],d1[L],d2[L],e2[L];g2[L],a2[L],e2[L],d2[L],g2[L],e2[L],d2[L],c2[L];g2[L],a2[L],g2[L],e2[L],g2[L],d2[L],e1[L],c2[L];d2[L],e2[L],a1[L],(d1.g1)[K],(d1.c2)[K],d1[L];c2[L],(d1.d2)[L],a1[L],(d1.g1)[L],c1[L],c2[KL];”,”c1[L],g1[JKL];c1[L],g1[JKL];g[L],d1[JK],d1[L];g[L],d1[L],U,d1[L],S;f[L],a[L],U,c1[L],U,c1[L],T;g[L],d1[L],U,d1[L],U,d1[L],U,d1[L];g[L],d1[L],T,S;c[I];”]}]}

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

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

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


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 xue_huashan@163.com

文章标题:Unity开发之音乐游戏---基础知识

文章字数:2.3k

本文作者:max-xue

发布时间:2018-07-06, 21:23:14

最后更新:2019-11-08, 17:59:31

原始链接:http://blog.le-more.com/2018/07/06/u3d/unity-e5-bc-80-e5-8f-91-e8/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏