User:ALFalpha/chartdata:修订间差异
小 (to be continued...) |
小无编辑摘要 |
||
(未显示同一用户的2个中间版本) | |||
第2行: | 第2行: | ||
<!-- 没有UserCheck,也不会用qwq--> | <!-- 没有UserCheck,也不会用qwq--> | ||
{ | {| class="wikitable mw-collapsible mw-collapsed" width=100% | ||
|width=100% | ! 警告:Rotaeno中一切资源,包括图像、音源、代码等,<br>版权均为心动网络所有,擅自修改、传播,后果自负!<br>本页面严禁链入及引用! | ||
|- | |||
| | |<br>本页面是对Rotaeno谱面格式的简要介绍。 | ||
<br>本页面是对Rotaeno谱面格式的简要介绍。 | |||
==总论== | ==总论== | ||
谱面文件存放于(Android apk)/assets/bin/Data/data.unity3d中。事实上,除了曲绘、音频文件外,绝大多数的小文件都在这里。 | 谱面文件存放于(Android apk)/assets/bin/Data/data.unity3d中。事实上,除了曲绘、音频文件外,绝大多数的小文件都在这里。 | ||
第32行: | 第31行: | ||
谱面以行为界,每行只有用逗号分隔的参数。下面详细说明它们的作用: | 谱面以行为界,每行只有用逗号分隔的参数。下面详细说明它们的作用: | ||
===BPM=== | ===BPM=== | ||
这部分每行只有两个参数:时间(单位ms)和BPM大小。 | 这部分每行只有两个参数:时间 点 (单位ms)和BPM大小 ,表示“歌曲进行到该时间点时,谱面BPM变为该值” 。 | ||
大部分没有变速的谱面,这部分只有时间原点对应的一行: | |||
例:[[After Rain]] {{color|难度IV}} | |||
# BPM | |||
0,160 | |||
少数谱面的时间起点不是0,这可能是由音频延迟引起的: | |||
例:[[The Formula]] {{color|难度IV}} | |||
# BPM | |||
50,144 | |||
至于有些谱面…… | |||
例:[[Rush E]] {{color|难度IV}} | |||
# BPM | |||
0,130 | |||
1846,30 | |||
5846,35 | |||
7560,46 | |||
8864,56 | |||
9935,67 | |||
10831,78 | |||
11600,89 | |||
12274,68 | |||
13156,115 | |||
...(总共108行) | |||
===流速=== | |||
这部分每行三个参数:时间点,流速,是否渐变。这里流速不影响时间;谱面中所有的时间都是歌曲实际进行的时间。 | |||
在这部分最早的时间点(如果有)之前,流速默认为1。这里的流速乘上用户设置的流速,就是谱面实际的播放速度。 | |||
可以通过流速乘上对应的持续时间计算出'''谱面时间''',这是物件出现的位置。 | |||
流速可以为0或者负数,[[Inverted World]] {{color|难度IV}} 开幕的黑线表演就是这样实现的: | |||
例:[[Inverted World]] {{color|难度IV}} | |||
# Speed | |||
0,1,1 | |||
1000,0.2,1 | |||
1667,0.2,1 | |||
2000,1,1 | |||
2646,6,1 | |||
2667,10000,0 | |||
2669,-8,0 | |||
3333,-0.3,1 | |||
4333,-0.3,1 | |||
4667,-1,1 | |||
5312,-8,1 | |||
5333,10000,0 | |||
5335,-8,0 | |||
6000,-1,1 | |||
6333,-0.1,1 | |||
7000,-0.1,0 | |||
7333,-1,1 | |||
7979,-8,1 | |||
8000,400,0 | |||
8002,-8,0 | |||
8667,-0.5,1 | |||
9167,0,1 | |||
10333,1,1 | |||
... | |||
===物件=== | |||
这部分每行前两个参数是固定的,分别为物件类型和时间点。根据物件类型的不同,还会有一些额外参数。'''物件可以不按时间顺序写!''' | |||
===={{color|TAP}}==== | |||
0,1500,90 | |||
Tap对应物件类型0,第三个参数为角度。这里的角度是按时钟样式计算的:0度为正上方,90度为水平右手方,270度为水平左手方。 | |||
===={{color|FLICK}}==== | |||
1,3175,60 | |||
Flick对应物件类型1,第三个参数同样为角度。 | |||
===={{color|SLIDE}}==== | |||
2,135050,120,3,0,4,16,0,0 | |||
Slide对应物件类型2,每行代表一个slide组。这里参数很多,我们命名后逐一介绍: | |||
noteType, time, degree, slideHeadType, sildeEndDegree, slideSnap, slideCount, prevCurvature, nextCurvature | |||
*'''noteType''':物件类型,这里是2(slide)。 | |||
*'''time''':silde头判定时间 | |||
*'''degree''':slide头所在角度 | |||
*'''slideHeadType''':slide头物件类型,可以是0(tap), 1(filck), 2(slide), 3(largeSlide)。除了slide头以外,这个slide组中剩下的物件都是普通slide。 | |||
*'''slideEndDegree''':slide尾所在角度 | |||
*'''slideSnap''':每拍内slide数量。如果这首歌是常见的4/4拍,那么这个参数*4就是这组slide中相邻两个所间隔的分音数。 | |||
*'''slideCount''':这组slide的总数。包含slide头,所以若这个参数为1,则这组slide只有slide头,又若slideHeadType不是2或3,则这组slide里实际上没有slide。 | |||
*'''prevCurvature, nextCurvature''':控制slide组的形状,参见[[#引导线]]。 | |||
如果要写单独的大slide,只能写一个slideHeadType为3,slideCount为1的slide组;要写连续的大slide,只能一个一个写。 | |||
===={{color|ROTATE}}==== | |||
4,0,45,75,0,0 | |||
Rotate对应物件类型4。第三个参数为旋转起点角度,第四个参数为旋转角度,正数为顺时针(红色),负数为逆时针(蓝色)。 | |||
然而实际判定并不看这两个角度,而是看旋转速度;这两个参数(和后面两个参数)是为连接引导线(黑线)而存在的。 | |||
===={{color|CATCH}}==== | |||
5,11167,1 | |||
5,11667,0 | |||
Catch对应物件类型5。第三个参数为catch所在的侧,0为右手侧,1为左手侧。Catch总在引导线上,其角度由对应时间点的引导线角度决定。 | |||
===={{color|BOMB}}==== | |||
6,6983,1 | |||
21,1333,105 | |||
Bomb对应物件类型6和21。类型6为老版bomb,参照catch格式,只能位于引导线上;类型21为新版freeBomb,参照tap/filck格式,可以不在引导线上。 | |||
====引导线==== | |||
11,2583,90,-105,0,0 | |||
11,4000,150,0,50,50 | |||
引导线对应物件类型11,参数与rotate相同。引导线总是中心对称,只需写一侧即可。 | |||
谱面中写的只是引导线的“节点”;引导线会在这些节点之间连接,具体方式由最后两个参数(prevCurvature, nextCurvature)决定。 | |||
|} |
2024年8月15日 (四) 17:18的最新版本
警告:Rotaeno中一切资源,包括图像、音源、代码等, 版权均为心动网络所有,擅自修改、传播,后果自负! 本页面严禁链入及引用! |
---|
本页面是对Rotaeno谱面格式的简要介绍。 总论谱面文件存放于(Android apk)/assets/bin/Data/data.unity3d中。事实上,除了曲绘、音频文件外,绝大多数的小文件都在这里。 用AssetStudio等软件可提取出具体的谱面文件。它们名为 <曲目id> [难度] (如:after_rain [IV]),类型为MonoBehaviour,如果事先提取了游戏的dll文件则可以解析出详细数据。 "EncryptedV2ChartString": "cgjn/3jVl840+fB7..." 此时得到的谱面是用AES加密的base64字符串。采用适当的密钥解密,可以得到可供人类阅读的谱面: # Version 2 # BPM ... # Speed ... # Note ... 解析虽说是人类可读的谱面,但其中没有包含任何的额外信息,想要阅读 谱面以行为界,每行只有用逗号分隔的参数。下面详细说明它们的作用: BPM这部分每行只有两个参数:时间点(单位ms)和BPM大小,表示“歌曲进行到该时间点时,谱面BPM变为该值”。 大部分没有变速的谱面,这部分只有时间原点对应的一行: 例:After Rain 难度IV # BPM 0,160 少数谱面的时间起点不是0,这可能是由音频延迟引起的: 例:The Formula 难度IV # BPM 50,144 至于有些谱面…… 例:Rush E 难度IV # BPM 0,130 1846,30 5846,35 7560,46 8864,56 9935,67 10831,78 11600,89 12274,68 13156,115 ...(总共108行) 流速这部分每行三个参数:时间点,流速,是否渐变。这里流速不影响时间;谱面中所有的时间都是歌曲实际进行的时间。 在这部分最早的时间点(如果有)之前,流速默认为1。这里的流速乘上用户设置的流速,就是谱面实际的播放速度。 可以通过流速乘上对应的持续时间计算出谱面时间,这是物件出现的位置。 流速可以为0或者负数,Inverted World 难度IV 开幕的黑线表演就是这样实现的: 例:Inverted World 难度IV # Speed 0,1,1 1000,0.2,1 1667,0.2,1 2000,1,1 2646,6,1 2667,10000,0 2669,-8,0 3333,-0.3,1 4333,-0.3,1 4667,-1,1 5312,-8,1 5333,10000,0 5335,-8,0 6000,-1,1 6333,-0.1,1 7000,-0.1,0 7333,-1,1 7979,-8,1 8000,400,0 8002,-8,0 8667,-0.5,1 9167,0,1 10333,1,1 ... 物件这部分每行前两个参数是固定的,分别为物件类型和时间点。根据物件类型的不同,还会有一些额外参数。物件可以不按时间顺序写! TAP0,1500,90 Tap对应物件类型0,第三个参数为角度。这里的角度是按时钟样式计算的:0度为正上方,90度为水平右手方,270度为水平左手方。 FLICK1,3175,60 Flick对应物件类型1,第三个参数同样为角度。 2,135050,120,3,0,4,16,0,0 Slide对应物件类型2,每行代表一个slide组。这里参数很多,我们命名后逐一介绍: noteType, time, degree, slideHeadType, sildeEndDegree, slideSnap, slideCount, prevCurvature, nextCurvature
如果要写单独的大slide,只能写一个slideHeadType为3,slideCount为1的slide组;要写连续的大slide,只能一个一个写。 ROTATE4,0,45,75,0,0 Rotate对应物件类型4。第三个参数为旋转起点角度,第四个参数为旋转角度,正数为顺时针(红色),负数为逆时针(蓝色)。 然而实际判定并不看这两个角度,而是看旋转速度;这两个参数(和后面两个参数)是为连接引导线(黑线)而存在的。 CATCH5,11167,1 5,11667,0 Catch对应物件类型5。第三个参数为catch所在的侧,0为右手侧,1为左手侧。Catch总在引导线上,其角度由对应时间点的引导线角度决定。 BOMB6,6983,1 21,1333,105 Bomb对应物件类型6和21。类型6为老版bomb,参照catch格式,只能位于引导线上;类型21为新版freeBomb,参照tap/filck格式,可以不在引导线上。 引导线11,2583,90,-105,0,0 11,4000,150,0,50,50 引导线对应物件类型11,参数与rotate相同。引导线总是中心对称,只需写一侧即可。 谱面中写的只是引导线的“节点”;引导线会在这些节点之间连接,具体方式由最后两个参数(prevCurvature, nextCurvature)决定。 |