Skip to content

Rizline 谱面格式说明

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

概念

WARNING

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

我们约定:

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

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

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

结构

根结构 root

  • fileVersion int文件版本,作用尚不明确,目前已出现的值为01

  • 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>图层列表,记录图层的移动事件。

    • 附加于对应canvasIndexLinePoint额外的位置偏移,可以产生线的形状变化效果。
  • 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 floatX 坐标,单位 W
  • color Color颜色,记录该线点颜色,与相邻线点的连线颜色均匀过渡。
  • easeType int过渡类型,记录该线点与下一个线点之间连线的水平位置的过渡类型
  • canvasIndex int图层索引,记录该线点所在图层的index
  • floorPosition float累计值(单位 H),表示该线点在对应图层中相对于初始时刻的累计垂直距离,通过该线点所在图层的speedKeyPoints计算而来。

音符 Note

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

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

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

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

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

颜色点 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

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

    • 对于xPositionKeyPointsscaleKeyPoints的元素,该值恒为0

颜色 Color

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

CC-BY-NC-4.0 Licensed