From 44e2b31345c6e3b38e9062b1d7cb42ef8c4569fd Mon Sep 17 00:00:00 2001 From: qaqFei <158535495+qaqFei@users.noreply.github.com> Date: Sun, 20 Oct 2024 15:56:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20Phigros=20Official=20Chart=E6=96=87?= =?UTF-8?q?=E6=A1=A3=20(#23)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/chart-standard/chart-format/phi/event.md | 66 +++++++++++++++++++ src/chart-standard/chart-format/phi/index.md | 1 + .../chart-format/phi/judgeLine.md | 20 ++++++ src/chart-standard/chart-format/phi/note.md | 12 ++++ src/chart-standard/chart-format/phi/root.md | 21 ++++++ 5 files changed, 120 insertions(+) create mode 100644 src/chart-standard/chart-format/phi/event.md create mode 100644 src/chart-standard/chart-format/phi/index.md create mode 100644 src/chart-standard/chart-format/phi/judgeLine.md create mode 100644 src/chart-standard/chart-format/phi/note.md create mode 100644 src/chart-standard/chart-format/phi/root.md diff --git a/src/chart-standard/chart-format/phi/event.md b/src/chart-standard/chart-format/phi/event.md new file mode 100644 index 0000000..22f13da --- /dev/null +++ b/src/chart-standard/chart-format/phi/event.md @@ -0,0 +1,66 @@ +# Event + +本页将介绍判定线事件下的所有事件。 + +## speedEvent + +|字段名|类型|描述|单位| +|:-:|:-:|:-:|:-:| +|startTime|float|事件的开始时间|`1.875 / bpm`| +|endTime|float|事件的结束时间|`1.875 / bpm`| +|value|float|事件的值|高度单位| +|floorPosition|float|速度事件开始时判定线共计以流过的速度 (仅方便计算, 高版本不存在)|高度单位| + +## judgeLineMoveEvent + +|字段名|类型|描述|单位| +|:-:|:-:|:-:|:-:| +|startTime|float|事件的开始时间|`1.875 / bpm`| +|endTime|float|事件的结束时间|`1.875 / bpm`| + +- formatVersion为1 + + |字段名|类型|描述|单位| + |:-:|:-:|:-:|:-:| + |start|int|事件的开始坐标|-| + |end|int|事件的结束坐标|-| + + - 坐标计算 (python): + - `x = (v - v % 1000) // 1000` + - `y = v % 1000` + - 单位: + - `x` `1 / 880` 谱面渲染范围宽度 + - `y` `1 / 520` 谱面渲染范围高度 + - 转化为formatVersion为3的坐标 (python): + - 原事件以 `e` 表示, 新事件以 `ne` 表示 + - `ne.start = (e.start - e.start % 1000) // 1000` + - `ne.end = (e.end - e.end % 1000) // 1000` + - `ne.start2 = e.start % 1000` + - `ne.end2 = e.end % 1000` + +- formatVersion为3 + + |字段名|类型|描述|单位| + |:-:|:-:|:-:|:-:| + |start|float|事件的开始坐标|谱面渲染范围宽度| + |end|float|事件的结束坐标|谱面渲染范围宽度| + |start2|float|事件的开始坐标|谱面渲染范围高度| + |end2|float|事件的结束坐标|谱面渲染范围高度| + +### judgeLineRotateEvent + +|字段名|类型|描述|单位| +|:-:|:-:|:-:|:-:| +|startTime|float|事件的开始时间|`1.875 / bpm`| +|endTime|float|事件的结束时间|`1.875 / bpm`| +|start|float|事件的开始值|角度| +|end|float|事件的结束值|角度| + +### judgeLineDisappearEvent + +|字段名|类型|描述|单位| +|:-:|:-:|:-:|:-:| +|startTime|float|事件的开始时间|`1.875 / bpm`| +|endTime|float|事件的结束时间|`1.875 / bpm`| +|start|float|事件的开始值|-| +|end|float|事件的结束值|-| diff --git a/src/chart-standard/chart-format/phi/index.md b/src/chart-standard/chart-format/phi/index.md new file mode 100644 index 0000000..f609d8f --- /dev/null +++ b/src/chart-standard/chart-format/phi/index.md @@ -0,0 +1 @@ +# PHI 文档 diff --git a/src/chart-standard/chart-format/phi/judgeLine.md b/src/chart-standard/chart-format/phi/judgeLine.md new file mode 100644 index 0000000..19900a5 --- /dev/null +++ b/src/chart-standard/chart-format/phi/judgeLine.md @@ -0,0 +1,20 @@ +# judgeLine + +每一个judgeLine(判定线)都含有以下字段: + +|字段名|类型|描述| +|:-:|:-:|:-:| +|bpm|float|该判定线的bpm值| +|notesAbove|JsonArray|正面下落的音符| +|notesBelow|JsonArray|反面下落的音符| +|speedEvents|JsonArray|速度事件| +|judgeLineMoveEvents|JsonArray|移动事件| +|judgeLineRotateEvents|JsonArray|旋转事件| +|judgeLineDisappearEvents|JsonArray|透明度事件| + +- **注意: 所有事件及Note的有关时间的项, 单位都为 `1.875 / bpm` s** +- **这里我们定义:** + - "宽度单位" 为 `0.05625 * 谱面渲染范围宽度` + - "高度单位" 为 `0.6 * 谱面渲染范围高度` +- [事件](./event.md) +- [Note](./note.md) diff --git a/src/chart-standard/chart-format/phi/note.md b/src/chart-standard/chart-format/phi/note.md new file mode 100644 index 0000000..6f9c7e8 --- /dev/null +++ b/src/chart-standard/chart-format/phi/note.md @@ -0,0 +1,12 @@ +# Note + +note,即音符,是谱面的主要构成之一,每个note都应该含有以下参数: + +|字段名|类型|描述|单位| +|:-:|:-:|:-:|:-:| +|type|int|note的类型|-| +|time|float|note的时间|`1.875 / bpm`| +|holdTime|float|hold的持续时间 (仅hold, 其他为0.0)|`1.875 / bpm`| +|positionX|float|note的横向坐标|宽度单位| +|speed|float|对于非hold: note的速度倍率 对于hold: hold的打击时的速度 tip: hold在打击之前的速度倍率恒为1|-| +|floorPosition|float|note打击时判定线流过的速度 (仅方便计算)|高度单位| diff --git a/src/chart-standard/chart-format/phi/root.md b/src/chart-standard/chart-format/phi/root.md new file mode 100644 index 0000000..2e0025a --- /dev/null +++ b/src/chart-standard/chart-format/phi/root.md @@ -0,0 +1,21 @@ +# PHI谱面根目录结构 + +- 目前`PHI`谱面的数据计算与渲染已经十分成熟 + +## 谱面根目录结构 + +### formatVersion + +- `formatVersion` 是一个 `int` +- 该项影响谱面判定线移动事件的解析方式 +- 该值可能 为`1`, `3` 或其他 + +### offset + +- `offset` 是一个 `int` +- 该项为谱面的延迟, 单位为秒 +- 为正数时, 谱面比音乐快, 为负数时, 谱面比音乐慢 + +### judgeLineList + +- `judgeLineList` 是一个 `JsonArray`,包含若干个 `JsonObject`,每个 `JsonObject` 代表一个[判定线](./judgeLine.md)。