Skip to content

Rizline 谱面格式说明 ​

Rizline 谱面采用 JSON 格式,可以使用任何文本编辑器进行编写。

概念 ​

WARNING

以下概念为笔者设定仅方便理解,不代表官方定义。

我们约定:

  • px 为像素单位,W 为画面宽度,H 为画面高度。

  • BPM:每分钟节拍数 (Beats Per Minute)。

  • tick:单位时间,1 tick=60BPM s,相当于四分音符。

结构 ​

根结构 root ​

  • fileVersion int:文件版本,作用尚不明确,目前已出现的值为0和1。

  • songsName string:曲名,作用尚不明确。

    • 该值在部分谱面为对应曲目的正确名称,在其他谱面为空字符串。
  • themes Array<Theme>:主题列表,记录谱面的各个颜色主题。

    • 该列表第一个元素为初始主题,后面的元素为挑战(Riztime)主题。
  • challengeTimes Array<ChallengeTime>:挑战(Riztime)时间列表。

    • 该列表元素与挑战主题依次对应,因此其个数总比themes少 1 个元素。
  • bPM float:基准 BPM,即每分钟节拍数 (Beats Per Minute)。

    • 确定了单位 tick 时值(可能改变)。
  • bpmShifts Array<BpmShift>:BPM 变化列表,记录谱面的 BPM 变化。

  • offset float:谱面偏移,作用尚不明确,目前已出现的值为0.0。

  • lines Array<Line>:线列表,记录谱面中出现的各种线。

  • canvasMoves Array<CanvasMove>:图层列表,记录图层的移动事件。

    • 附加于对应canvasIndex的LinePoint额外的位置偏移,可以产生线的形状变化效果。
  • cameraMove CameraMove:相机移动事件,记录谱面的相机视角变化。

    • 附加于谱面整体的缩放和水平移动,可以产生视角聚焦的效果。
你知道的太多了(基于v1.2.6)
  • fileVersion仅在 Tempest 的 IN 难度谱面为1,在其他谱面均为0。

  • lines列表元素个数在不同谱面之间存在较大差异。

    • 在 Bring Me Back 的 EZ 难度谱面,该列表元素个数为1。
    • 在 Conway's Child 的 IN 难度谱面,该列表元素个数为3354。

主题 Theme ​

  • colorsList Array<Color>:颜色列表。
    • 该列表包含三个元素,分别表示背景颜色、音符颜色、血条/特效颜色。

挑战时间 ChallengeTime ​

在开始时刻,动画从屏幕正下方开始以半圆的形状逐渐扩展,经过一段过渡时间切换到对应的挑战主题;在结束时刻,动画从屏幕正上方开始以半圆的形状逐渐收缩,经过一段过渡时间回到初始主题。动画重叠时以最上层的动画为准。

  • checkPoint float:检查点,作用尚不明确。
  • start float:开始时刻,单位 tick。
  • end float:结束时刻,单位 tick。
  • transTime float:过渡时间(单位:秒)。

BPM 变化 BpmShift ​

  • time float:时刻,单位 tick,表示 BPM 变化发生的时间点。
  • value float:值,比例系数,无单位,与bPM的乘积即为变化生效时的实时 BPM。
  • easeType int:过渡类型,无意义,目前已出现的值为0。
  • floorPosition float:累计值(单位:秒),表示time时刻的累计偏移量。

线 Line ​

  • linePoints Array<LinePoint>:线点列表,记录线的关键点。
  • notes Array<Note>:音符列表,记录线上的音符。
  • judgeRingColor Array<ColorPoint>:判定圈颜色列表,记录线的判定圈的颜色变化,在其第一个元素的时刻之后生效。生效时显示对应颜色的判定圈;否则不显示判定圈。
  • lineColor Array<ColorPoint>:线颜色列表,记录线的整体颜色变化,在其第一个元素的时刻之后生效。生效时对应的 rgba 通道与线点的 rgb 通道混合,同时保留线点的 a 通道;否则线点的 rgba 通道颜色不变。

图层移动 CanvasMove ​

  • index int:索引,从0开始,与所在列表该元素的数组下标一致。
  • xPositionKeyPoints Array<KeyPoint>:X 位置关键帧列表,记录该图层水平偏移。
  • speedKeyPoints Array<KeyPoint>:速度关键帧列表,记录该图层垂直偏移。

相机移动 CameraMove ​

  • scaleKeyPoints Array<KeyPoint>:缩放关键帧列表,记录整体缩放倍率。
  • xPositionKeyPoints Array<KeyPoint>:X 位置关键帧列表,记录整体水平偏移。
    • 注意视觉上的移动方向与其数值增减相反,可以理解为谱面实际位置不变而相机移动。

线点 LinePoint ​

  • time float:时刻,单位 tick,表示该线点到达判定位置的时刻。
  • xPosition float:X 坐标,单位 W。
  • color Color:颜色,记录该线点颜色,与相邻线点的连线颜色均匀过渡。
  • easeType int:过渡类型,记录该线点与下一个线点之间连线的水平位置的过渡类型。
  • canvasIndex int:图层索引,记录该线点所在图层的index。
  • floorPosition float:累计值(单位 H),表示该线点在对应图层中相对于初始时刻的累计垂直距离,通过该线点所在图层的speedKeyPoints计算而来。

音符 Note ​

  • type int:音符的类型,目前可用的值为0 1 2。

    • 0:Tap 音符,在判定时刻点击屏幕。
    • 1:Drag 音符,在判定时刻点击或按住屏幕。
    • 2:Hold 音符,在判定时刻点击并长按直至音符消失。
  • time float:判定时刻,单位 tick,表示该音符到达判定位置的时刻。

  • floorPosition float:累计值(单位 H),表示该音符所在线条在指定时刻相对于初始时刻的累计垂直距离,通过对应线点所在图层的speedKeyPoints计算而来(需要验证),确保音符位于线上。

  • otherInformations Array<float>:附加信息列表。

    • 对于非 Hold 音符,该列表为空数组。
    • 对于 Hold 音符,该列表有 3 个元素,分别表示 Hold 尾的time、canvasIndex和floorPosition。

颜色点 ColorPoint ​

  • startColor Color:开始颜色。
  • endColor Color:结束颜色。
  • time float:时刻,单位 tick。

关键点 KeyPoint ​

  • time float:时刻,单位 tick。

  • value float:值。

    • 对于speedKeyPoints的元素,该值单位 H/s。
    • 对于xPositionKeyPoints的元素,该值单位 W。
    • 对于scaleKeyPoints的元素,该值为比例系数,无单位。
  • easeType int:过渡类型,记录该关键点与下一个关键点之间连线的值的过渡类型。

    • 对于speedKeyPoints的元素,该值恒为0。
  • floorPosition float:累计值。

    • 对于speedKeyPoints的元素,该值单位 H,表示累计垂直距离。其大致计算公式为:

      k=value×scale×(21532+speed)×10129

      其中,value为speedKeyPoints的计算值,scale为scaleKeyPoints的计算值,speed为游戏内设置的谱面流速,k 为实际累计高度(单位 H)。此公式中的所有常数均为实测得到,并非精确值。

    • 对于xPositionKeyPoints和scaleKeyPoints的元素,该值恒为0。

颜色 Color ​

  • r int:红色分量(0-255)。
  • g int:绿色分量(0-255)。
  • b int:蓝色分量(0-255)。
  • a int:alpha 分量(0-255),即不透明度。
    • 值为0表示完全透明;值为255表示完全不透明。

CC-BY-NC-4.0 Licensed