1 曲库数据
加载中…内置快照随页面一起加载,完全离线也能用(不含封面图)。「联网更新曲库」需要以 http(s) 打开页面。
2 导入成绩 CSV (只在你的浏览器里解析,不会上传到任何服务器)
把成绩 CSV 拖到这里,或点击选择文件
至少要有 曲名 和 难度 两列;表头怎么写都能认,认不出来可以在下面手动指定列。 查分器导出的 JSON 也会自动识别。
3 选歌界面设置
机台上按屏幕中间指向自己的小箭头,就能调整「分类 / 排序方式」。分类维度 + 分类值 = 你选的分类,
它和排序方式一起决定列表顺序,也决定目标曲是第几首。列数/行数只影响「第几页第几行第几列」的换算,
默认 5×3,可以按你实际看到的网格调整。
「难度」不参与列表位置(机台的选歌列表与难度无关),它决定两件事:「等级」分类和「等级」排序按哪个难度的等级算,
以及结果里优先显示哪个难度的成绩——那个难度你没打过时,会自动退到你打过的难度,并在成绩行标明实际难度。
4 输入想打的歌
—使用说明与已知限制
成绩 CSV 怎么写?
- 最少两列就能用:曲名 + 难度。类型(DX/SD)、达成率、DX 分、FC/FS、定数、RA 这些有就一起读,没有也不影响定位。
- 表头写法都能认:
曲名/标题/title/song_name、类型/type、难度/谱面/difficulty/level_index、达成率/achievements/score。 - 难度可以写
MASTER/Re:MASTER/EXPERT/ADVANCED/BASIC, 也可以写数字0–4(0=BASIC … 4=Re:MASTER)。 - 没有表头也能读:按内容猜列(难度列、类型列、达成率列自动识别,剩下的当曲名),首行是表头还是数据也自动判断; 认错了就在面板里手动指定列,或切换「首行是表头」。
- 编码自动识别:UTF-8、UTF-16、Excel 常导出的 GBK / GB18030、Big5、Shift-JIS 都行。分隔符支持逗号、Tab、分号。
- 类型列可以没有:此时成绩记为「不区分 DX / STD」,DX 和 STD 两种谱面都能用上这份成绩。
- 查分器的 JSON 导出和「在线取成绩」的结果也照样能用——页面会自己判断是 CSV 还是 JSON。
定位是怎么算出来的?
机台的列表 = (地区/谱面类型筛过之后)某个分类的曲目 按 某个排序方式升序 排列的结果。 所以本工具的做法是:用曲库把当前分类的曲目列表整体重建出来,找到目标曲在这个列表里的序号, 再按每页 N 格换算成「第几页 / 第几行 / 第几列」,同时在结果里给出 5 种分类维度下的位置对照表。
「难度」这个选项是干什么的?
机台的选歌列表位置本身和难度无关(难度是选中曲目之后才选的),所以这里的「难度」不参与列表顺序,它决定两件事:
- 「等级」分类 / 「等级」排序的依据:按所选难度看每首曲的等级;没有该难度谱面的曲子不会出现在等级分组里 (按「等级」排序时它们按「未知等级」排在最前面)。
- 结果里优先显示哪个难度的成绩:所选难度你还没打过时,会自动退到你打过的难度
(MASTER → Re:MASTER → EXPERT → ADVANCED → BASIC),并在成绩行、难度徽章和附近曲目列表
(
M/R/E/A/B首字母 + 等级)上标明实际是哪个难度,不会拿别的难度冒充你选的那个。 - 「我的达成率 / DX 分」排序用的是同一套「优先所选难度、否则回退」取到的成绩,所以 EXPERT / Re:MASTER 的成绩也参与排序 (代价是不同难度的达成率放在一起比,只适合大致找歌)。
哪些情况会导致结果和机台不一致?
- 未解锁曲目:宴会曲、传导乐曲、活动未解禁的曲子在机台上不显示,列表会比你算出来的短。
- 地区差异:默认按国服(舞萌DX)筛掉国服没有的谱面;如果你的机台版本不同,请改「地区 / 版本」。
- 2+7 谱面类型:机台切到 DX 时,只有 STD 谱面的老歌不会出现,所以「谱面类型」要和机台保持一致。
- 成绩排序:未游玩的谱面按 0 处理,升序时会排在最前面;和机台一致,但和直觉不同。
- 曲库时差:内置快照有更新时间(见第 1 步),刚上线的新曲可能还没有。
怎么更新曲库?
下载 arcade-songs 的 data.json,
在第 1 步用「加载本地曲库 JSON」直接加载;或者把它保存到 data/ 目录并改造成
window.MAIMAI_SNAPSHOT = {…}; 的形式覆盖 data/maimai-snapshot.js,这样离线也生效。
详见 README.md。