beatmap - 26F-Studio/Quatrack GitHub Wiki

Quatrack谱面格式编辑教程

Quatrack的谱面使用纯文本描述,会打字就能写!后缀默认为qbp(Quatrack beatmap)

文件内容由[元数据](#元数据)和[谱面数据](#谱面数据)组成

元数据

元数据就是除了谱面本体以外的杂七杂八小东西,比如歌曲名、难度、曲师、谱师什么的写在文件开头若干行,目前总共有这些,复制一下改就行

必需的元数据列表:

$version=1.0
$mapName=
$musicAuth=
$mapAuth=
$mapDifficulty=
$songFile=

可选的元数据列表,根据情况选用:

$songImage=1.jpg
$songOffset=25ms
$tracks=4
$realTracks=4
$freeSpeed=true

详细的元数据列表

默认值 说明
$version 必填 - 谱面版本,现在必须是 1.0
$mapName 必填 - 曲名
$musicAuth 必填 - 音乐作者
$mapAuth 必填 - 谱面作者
$mapDifficulty 必填 - 谱面难度,仅展示用
$songFile 必填 - 音乐文件名(带后缀),只支持wav/mp3/ogg(应该)
$songImage 可选 - 背景图完整文件名,不写就没背景
$songOffset 可选 0 音乐播放相对谱面的0时间偏移,不带单位默认 ms
$tracks 可选 4 谱面使用的轨道数量
$realTracks 可选 4 对玩家来说的实际轨道数量(取最大),有动画用轨就要写这个
$freeSpeed 可选 true 是否允许玩家使用自己的流速设置

谱面数据

音符

---O
--O-
-O--
O---

从最基本的开始,这是一个最简单的谱面

O(大写字母O)代表单点音符,-(半角减号)代表空白

这四行实际表现就是从左到右打四下,一行一拍(一个四分音符)

注意,是从下往上读哦,你看到什么玩家就看到什么,很直观!

时值

---O|
--O-|
-O--|
O---|

竖线会让这一行音符占据的时间减半(键盘上是回车键上面那个,按shift输入)

---O||
--O-||
-O--||
O---||

每多加一个竖线时间就除以2,这就是16分音符(其实竖线就是简谱里的下划线,侧过来看)

---O~
--O-~
-O--~
O---~

波浪线会让这一行音符占据的时间+1拍(键盘上在1的左边按shift输入)

---O*2
--O-/2
-O--*4
O---/4

你也可以这样改变一行的时间,需要三分音的时候就得用这个

--OO
OO--
--OO
OO--

一行里可以随便摆音符,比如对拍就长这样

A---
----
----
U---

这是一个四拍的有尾判长押,很形象吧

H---
----
----
U---

这是一个四拍的无尾判长押,是不是也很形象!

变速

---O|
--O-|
-O--|
O---|
!200

感叹号开头的行代表从此处开始的BPM是200,因为从下往上读所以写在最下面反倒是开头哦

---O|
!+1
--O-|
!+1
-O--|
!+1
O---|
!200

变速这么写(草 好丑

---O|;!+1
--O-|;!+1
-O--|;!+1
O---|;!200

可以用分号把多条同时执行的命令放在一行里,好看多了对吧!

顺便,因为谱面是从下往上读,所以一行里分号隔开的是从右往左执行,很合理(嗯

自己写的时候建议合理运用分号简化阅读,方便别人的同时也方便自己~

!200,4

“从这里开始一小节四拍”的意思,内部会开始一个计数器记录拍数

++++可以在这里随便标记一些东西,跟注释功能一样,比如“副歌结束”“前40小节”
----*4
!200,4

四个加号是手动小节线的意思,如果此时拍数计数不是4的倍数就会报错,就可以在谱面没播放的时候提前知道哪里拍子数不对,方便查错,同时也方便别人阅读。建议在合适的地方使用一些,小麻烦换大方便~

---O|
--O-|
-O--|
O---|;>1:23.54

时间标记,表示此处相对歌曲开始后的时间,可以用来跳过长度不整的休息段,或者用来暴力设置音符的精准时间(不建议)

>+1beat
>-626ms

把时间往后调1拍和把时间往前调626毫秒

时间支持ms,s,beat(拍),bar(小节,需要设置过才能用)四种单位,不写默认beat

>start

特殊用法,把时间设置到进入游戏场景的瞬间(本质是把时间设置到3.6秒),有需要在歌曲开始前提前设置轨道动画的时候用这个

需要后面搭配>0使用,不然会和本来的零时刻开始时间对不上

随机音符

----X|
----XX|
----X|
----XX|

这是随机2121

四个-只是为了保持看着整齐,同时表示没有固定音符

右侧每一个X代表一个“随机不叠单点”(没地方放就会报错,谱面就加载不出来)

----x|
----x|
----x|
----X|

这是四个同一列的单点

大写的X不叠,反过来小写表示一定会叠(同样,如果上一行全是-,没地方叠就会报错)

----x|
----R|
----x|
----L|

这是左两个叠右两个叠

L代表“左侧轨道的一个随机音符”,R是右侧的。跟X一样,大写表示不叠,小写会叠

注意,对于LR,奇数k的时候不包含正中间

注释

#Techmino,好玩!

这是一条注释

#开头的行代表这是说明用文本,不会被解析,可以标记段落或者复杂内容的说明

设置每行音符数

|2

设置一行需要写的音符数量为2个

当你在4k谱里添加了10个动画轨的时候,可以用|4来让之后不需要每行写满总共14个音符,方便一些

注意,可能需要配合&(音符重定向)使用

轨道更名

%L2,L1,R1,R2

把四条轨道的名字改为L2L1R1R2(4k默认就是这样)

%L1,R1,x,x

把前两条轨道的名字改为L1R1(一般情况下会对应到玩家的两个食指),后面两个为无名轨(没名字就不对应键盘键位,会自动禁用对应轨道防止触屏误触,建议做动画的时候就这么空着)

%L2 L1 R1 R2,x,x,x

让第一条轨道同时有四个键的名字!四个键全都能触发第一条轨道,可以用来比如允许键盘用交互来接纵连

注意如果多个轨道都绑定了某个键,那么所有的轨道都会触发,用的时候小心哦

音符重定向

---O|
--O-|
-O--|
O---|;&4321

看起来是从左往右的楼梯?其实这是从右往左的!

&4321代表让在第1/2/3/4列对应指向轨道4/3/2/1,也就是镜像对称

&2134就是交换第1/2轨,再&2134一次会变回来(是相对变化哦,不是直接设置为2134)

---O|
--O-|
-O--|
O---|
&1234,4321

这是随机从左往右或者从右往左的楼梯

&后面写多个配置就会随机选一个,不写的话就会重置回默认

&A代表随机打乱四条音符轨道实际指向的位置

多押颜色修改

^FFFF00,FFC000,FF6000,FF0000

修改2/3/4/5押的颜色为黄色,偏橙,偏红,红(超过5押的没写就跟5押一样)

不写就是使用默认配置(上面这个就是)

可以让多押提示的颜色配合曲绘,演出效果更好哦~

简单解释一下,电脑里用红+绿+蓝合成一种颜色,范围都是0~255,把三个数字转换成两位十六进制然后连起来就可以了。比如黄色是“红+绿,没有蓝”,那就是(255,255,0),就是(FF,FF,00),就是FFFF00

随机种子

----X
----*0
OO--

如果非要在一行里完全随机但是上一行有东西怕影响到,可以像这样垫一个没有时间的空行

----X;@
----X;@123

这里第一个随机音符是固定的(不过我也不知道具体在哪),后面那个才是真的随机音符

@符号代表设置随机种子,@123后所有随机内容都将变得一样(即使是另一个谱)

@后跟多个数字(用逗号隔开)就会随机选一个种子,可以预先选好几套随机防止出现太意料之外的情况

参数不填就会使用系统时间,就真的随机了

反复

====E
---O||
--O-||
-O--||
O---||
====S196

这是循环196遍的16分快乐楼梯!

四个等于号是循环标记,S是开始标记,后面跟循环次数(不写默认2,只重复一次),E是结束标记

-OO-||
====E
---O||
====M
--O-||
-O--||
O---||
====S196

这是循环196遍的16分快乐楼梯,但是最后一个音符变成一个双押!

循环M代表,如果是循环的最后一次,那么到了这里就要直接跳到E标记处结束

(这个参考了实际乐谱的设计,如果你了解的话一看就懂)

修改判定区间与判定准度

/set_judge:30ms,50ms,80ms,120ms,160ms

设置判定区间大小,参数是准度从高到低用逗号隔开的五档时间半径,单位可以是ms或者s,不写默认ms

示例就是游戏默认的判定区间尺寸

注意,这不是谱面属性,是可以打到一半变的,不过不建议(

/set_acc_points:101,100,75,0,-100

设置判定准度分,参数是准度从高到低用逗号隔开的五个百分比数字,最高的必须大于等于100(不然就打不到100了

同样,可以打到一半变的,不过也不建议(

轨道动画(轨道参数控制)发挥你的想象力,然后被玩家狠狠地打

p position (位置)

[1]p,-100,0

将一号轨道向左移动100距离

首先是p,代表移动轨道,[1]代表1号轨,p代表操作是“移动”,后面是x和y方向移动的距离(x朝右,y朝下,原点是屏幕中心,默认屏幕范围是-640~640,-360~360)

[1]position,,-100

将一号轨道向上移动100距离

移动命令可以不写x或者y,默认0

本节标题里的p后面的position是同义写法,完整单词也许好记一些,写长的也可以用

[1]P,0

将一号轨道移动到x=0,y为初始高度的位置

大写P代表直接设定绝对位置,不是“移动”,不写默认“初始位置”,也就是开始时的位置(之后会允许改,方便一些)

r rotate (旋转)

[1]r,60

顺时针旋转60度(绕底部中心),唯一的参数是顺时针旋转多少度(负的就是逆时针啦),不写默认…报错,你有问题

[1]R,60

同样,Rr的大写版本)表示直接指向某个角度,不写参数就是回归原位朝上

s scale(缩放)

[1]s,1.5,1

水平拉伸1.5倍,竖直方向1倍(不变)

s代表缩放轨道,两个参数不写都默认0(不变),单位是“一个轨道”(也就是默认尺寸为1)

[1]S,1.5,1

直接设置两个方向的缩放,不写默认1

d dropspeed(下落速度)

[1]d,100

下落速度增加100,默认初始是1000,参数必须写

[1]D,100

设置下落速度为100,不写默认恢复初始

t transparent(透明度)

[1]t,-50

透明度减小50%,参数必须写

[1]T,30

设置透明度为30%,不写默认恢复初始

a available (可用性)

[1]a

反转可用性,无参数

[1]A,false

把轨道可用性设为false(不可用),不写默认true(可用)

c color (颜色)

[1]C,FF0000

把轨道的颜色设为红色,不写默认E6E6E6(不瞎眼白)

[1]c,800000

把轨道的颜色的红色通道增加80(也是十六进制)(草,真的有用吗,反正我为了大小写命令都有就顺便做了)

颜色码前面可以加负号,比如-FF0000代表清除红色通道

n name(名称透明度, Name Alpha)

[1]N,100

把轨道名称显示的透明度改为100%,不写默认0%(隐藏名称)

l side(轨道侧线绘制模式, Side Line)

[1]L,hide

把轨道侧线的显示模式改为hide(隐藏)只剩底下一截判定线,不写默认normal(正常)

其他参数:hard(不再淡出 直接两根实心线),double(两边对称延伸 没功能只是方便做特效),harddouble(前两个模式合起来)

因为是在几个模式里切换,故此命令只有大写L的set模式!

b baseline(判定线可见性)

跟可用性a命令语法完全一样,只是功能改成开关显示轨道底部的判定线

批量操作轨道

[1,2,3]s,2

将1、2、3号轨同时水平方向拉伸到两倍大!

需要同时操作多个轨道的时候这样就可以方便很多

[A]s,2

将所有轨道水平方向拉伸到两倍大

A代表所有的轨道,LR分别代表左右轨道(奇数k不包含正中间)

[A]P
[A]R
[A]S

将所有轨道移回原位,转至朝上,缩放改回1!

[A]P;[A]R;[A]S

为了方便,用之前的分号把他们写在同一行里

OOOO;[A]r,360

一个四押的同时触发一个动画,所有轨道旋转360度!

动画命令太多影响观察,推荐都建议这样排成一行,这样音符就不会被拆开了,方便阅读

高级动画曲线

以下列出使用不同动画曲线的“将1号轨道顺时针旋转90度”:

[1]<S>R,90

瞬间完成,没有动画效果

[1]<L,2>R,90

在2拍的时间内线性完成动画

时间单位支持ms,s,beat,bar,不写默认beat

[1]<T,1>R,90

在1拍的时间内以曲线y=-cos(x)的[0,π]段靠近目标位置

时间单位支持ms,s,beat,bar,不写默认beat

[1]<E,2.6>R,90

指数靠近目标位置,数字越大越快,凭感觉写一个试试效果就行(

[1]<P,1,2>R,90

在1拍的时间内以曲线y=x^2的[0,1]段靠近目标位置

时间单位同<L>

指数要求绝对值大于1,1相当于线性,2是平滑启动。负数含义特殊,比如-2就是跟2平滑启动的相反的平滑停止(1和2之间以及超过2的效果不太好描述,自己试)

全部曲线:
瞬间:`<S>`
线性:`<L,持续时间>`
指数衰减(缓减速):`<E,衰减速度>`
幂(缓加速):`<P,持续时间,指数>`
正弦(两头缓动):`<T,持续时间>`

不写高级动画默认就是 <E,12>()

不写高级动画曲线默认就是<E,12>(指数衰减,衰减速度为 12),一个比较自然的快速靠近

音符动画(音符参数控制)

轨道可以随着时间很容易动态调整,但是音符太多了而且没法在时间轴上指定,所以这里使用“执行命令后这条轨道上出现的音符都会附加此动画”的设计

C (音符颜色, Note Color)

(1)C,FF0000

将一号轨道上的音符颜色设为红色,不写默认E6E6E6(不瞎眼白)

(1)C,FF0000,FFFFFF

一号轨道上的音符“由红到白”

具体地说,所有音符都是提前2.6秒生成,此时初始为红色,然后随着时间逐渐变色,碰到线的时候完全变白

(1)C,FF0000,FF0000,FF0000,FFFFFF

一号轨道上的音符“前3/4的时间为红色,最后1/4的时间逐渐变白”

T (音符透明度, Note Transparent)

(1)T,50

将一号轨道上的音符的不透明度设为50%,不写默认80%

(1)T,100,100,100,0

同颜色,一号轨道上的音符“前3/4的时间完全可见,最后1/4的时间逐渐消失”

X/Y (音符X/Y偏移, Note X/Y Offset)

(1)X,-10,10,-10,10,0

同样,一号轨道上的音符“左右摇晃着下落直到碰到判定线”

(1)Y,-10,10,-10,10,0

同样,一号轨道上的音符“上下抽搐着下落直到碰到判定线”

注意事项

所有这些音符动画的持续时间段都是:

从音符出现(打击提前2.6秒,暂时不能改)到音符打击的瞬间

掉到判定线以后的位置就持续为最后一个值

ctrl+alt+1/2/3/4/5可以调节谱面播放速度,方便调试动画或者校准偏移什么的

命令式写法

下表列出了可以代替符号的命令式写法:

符号 对应命令 说明
!222 !+1 !180,4 /bpm:222 /bpm:+1 设置BPM 调节BPM 设置BPM同时设置拍号开始计拍子数
>01:23.456 >+26ms /time:1:2:3.4 时间标记,有加减号表示相对调整,单位支持ms/s/beat/bar,特殊用法 >start 切到正式开始前
++++Quatrackiscool /bar_line 手动小节线,确认拍子数是拍号整倍数否则主动报错,后面注释
@626 /rnd_seed 设置随机种子,多个随机一个,留空重置随机
====E /rep_e 循环尾
====M /rep_m 循环断点,最后一次循环不走完
====S8 /rep_s:8 循环头,到下一个循环尾前总共反复8次
&2143 /redirect_note:2143 音符重定向
%L2,L1,x,R1 R2 /rename_track:L2,L1,x,R1 R2 轨道重命名,按键会触发所有包含按键名的轨道。x表示无名(会顺便自动禁用),空格分隔多名
^FFFF00,FF0000 /set_chord_color:FFFF00,FF0000 设置多押颜色,从双押开始,超过的都用最高,留空回到默认
|4 /set_note_need:4 设置每行需要写的音符数量,默认是轨道数
以下命令没有符号
- /set_judge:30ms,50ms,80ms,120ms,160ms 设置判定区间大小,参数是准度从高到低用逗号隔开的五档时间半径,单位可以是ms或者s,不写默认ms
- /set_acc_points:101,100,75,0,-100 设置判定准度分,参数是准度从高到低用逗号隔开的五个百分比数字,最高的必须大于等于100(不然就打不到100了

轨道动画和音符动画的命令式写法:

/set_track:要调整的轨道id;<动画模式,参数1,参数2,...>操作名,参数1,参数2,...

/set_note:该id轨道的音符在这条命令后的属性;操作名,参数1,参数2,...

结束语

你已经学会Quatrack所有的谱面语法了!

以后还会添加各种各样有趣的新音符/动画命令,有什么需要都可以提!

请持续关注本游戏哟!

⚠️ **GitHub.com Fallback** ⚠️