【osu!科普】osu!得分规则与参数细则[ScoreV1]【超详细!】【破亚空bilibili】
osu!标准模式 得分规则

得分分值(ps:这里原文写得很繁杂,而且有很多不严谨和错误的地方,可以选择跳过,不影响食用)

ps:这里我修补了大量的东西...但是还是很难阅读

命中判定


Combo判定


分数算法

英文原式:Score = Hit Value + (Hit Value * ((Combo multiplier * Difficulty multiplier * Mod multiplier) / 25))
补充:-------
combo倍率(Combo multiplier)
没有图片.jpg
假设现在是254combo,命中一个圈,然后combo变为255,其中这个圈的奖励分combo倍率为254(命中前的combo大小x1.0)

难度倍率(Difficulty multiplier)

难度点数 = CS + HP + OD(CS、HP、OD是什么?我写在了文章末尾)

Mod倍率(Mod multiplier)

Mod系数(同样没有图.jpg)
Easy【0.5】No-Fail【0.5】Half【0.3】
Hard Rock【1.06】Sudden Death / Perfect【1.0】Double / nightcore【1.12】Hidden【1.06】Flashlight【1.12】
Relax【0.0】Autopilot【0.0】Spin-out【0.9】Auto/Cinema【1.0】Score v2【N/A】

核心部分-分数计算Scoring(原创内容)
圆圈(Hit Circle)

圆圈的计算比较简单
像我们这里的三个圆圈(假设以Auto游玩,Mod倍率为1.0x,难度倍率为4.0x):
第一个分数为 300 (300基础得分 + 0奖励分[ 300 x 0 x 1.0 x 4.0 ÷ 25 ] )注意此时combo倍率为0,随后才是combo + 1
第二个分数为 348 (300基础得分 + 48奖励分[ 300 x 1 x 1.0 x 4.0 ÷ 25 ])注意此时combo倍率为1,随后才是combo + 1
第三个分数为 396 (300基础得分 + 96奖励分[ 300 x 2 x 1.0 x 4.0 ÷ 25 ])注意此时combo倍率为2,随后才是combo + 1
那么我们的结果是 总分【1044】combo【x3】

转盘(spinner)

轮盘得分也很简单,不过我们先介绍轮盘的两个特点
第一个是大小。在旋转轮盘时,轮盘会不断变大。直到轮盘不会再变大时,说明已经达到保底300了,这时轮盘会显示Clear,并且发出白光
第二个是轮盘边缘。轮盘边缘和得分无关,只不过它会越来越红,意味着转盘剩余的时间不多了。
转盘得分计算非常简单
在Clear之前,每一圈将会得到100固定分
在Clear之后
当 OD ≤ 8.02 (也就是转盘难度 ≤ 6.51)第一圈、第二圈仍然会获得100固定分,之后每完成一圈将获得1100固定分
当 OD ≥ 8.03(也就是转盘难度 ≥ 6.51) 第一圈、第二圈仍然会获得100固定分,之后每完成一圈将获得1200固定分
(注意,我们获得奖励都是在整数圈的位置,但Clear的位置并不一定是整数)
(ps:要达到Clear的圈数和转盘持续时间有关,但是wiki并没有提供具体公式)(然后我也懒得去测试了)
最后是转盘结束
理论上
我们会得到一个300/100/50/0基础分以及combo奖励分,然后combo+1
假设我们的combo为3,其他默认(以Auto游玩,Mod倍率为1.0x,难度倍率为4.0x)
那么转盘结束会获得 444 (300基础得分 + 144奖励分[ 300 x 3 x 1.0 x 4.0 ÷ 25 ] )此时combo倍率为3,随后combo + 1
但是
我实际测试过后,发现轮盘结束的分数要偏低
假设我们的combo为3x,其他默认(以Auto游玩,Mod倍率为1.0x,难度倍率为4.0x)
那么我们转盘结束会获得 396 (300基础得分 + 96奖励分[ 300 x 2 x 1.0 x 4.0 ÷ 25 ] )
随后combo + 1,combo变为4。
其中combo倍率只有2,在计算之前被 - 1 了。
也就是说
如果你combo为1(或0),完成转盘的300都是没有奖励得分的,因为此时转盘的combo倍率为0(不会为负数)。而圆圈和滑条即使combo为1,依然有奖励得分。
这应该是算法上的问题,不知道会不会修复

然后是最复杂的滑条(sliders)

滑条的计算比较复杂
以这三个拍的滑条做例子(假设以Auto游玩,Mod倍率为1.0x,难度倍率为4.0x):
第一个分数为 30 (滑条头部固定30分 + 没有奖励分)注意此时combo倍率为0,随后combo + 1
第一个分数为 10 (滑条节点固定10分 + 没有奖励分)注意此时combo倍率为1,随后combo + 1
第三个分数为 426(滑条尾部固定30分 + 300基础得分 + 96奖励分[ 300 x 2 x 1.0 x 4.0 ÷ 25 ])注意此时combo倍率为2,随后combo + 1

那么我们的结果是 总分【466】combo【x3】
所以理论上短滑条反而能提供更多的分数

核心部分-准确度Accuracy(原创内容)

你问我为什么没有翻译?
因为我完全看不懂它在说什么...
所以我们就干脆不管它了
直接来进入我们的正文
准确度的算法其实很简单
准确度由我们的基础得分决定,英文为Scoring Values,但是我觉得用分数公式中的Hit Value会更加准确一点
基础得分是什么?那就是你屏幕上显示的分值,300/100/50/miss/激/喝
我们什么时候会获得基础得分?
以下情况我们都会获得一个基础得分(+ combo奖励分)
完成一个圆圈(Hit circle)
完成一个滑条(Slider)
完成一个转盘(Spinner)
可以看出来,每个圆圈/滑条/转盘都算作一个物件,只会获得一次基础得分(和奖励分)
值得注意的是
“激”和“喝”实际上算作300和100,并且会被算入300/100的总数当中

因为300和100中已经包含了“激”和“喝”
所以实际上“激”和“喝”是额外独立的统计,可以直接无视掉
计算准确度我们只看300/100/50/miss就可以了
那么基础得分是怎么影响我们的精准度的呢?
请看这张成绩图(捂脸

其中有300[89]、100[2]、50[1]、miss[1]
我们有两种算法
其中osu!wiki中的算法是这样的(官方算法):
精确度 = 基础得分总分 ÷ (基础得分数量 x 300)
实践的话就是这样
首先 基础得分总分 26950 = 89 x 300 + 2 x 100 + 1 x 50 + 1 x 0
然后 基础得分数量 93 = 89 + 2 + 1 + 1
精确度 96.59% = 26950 ÷ 27900[93 x 300]
然后是个人觉得比较直观的另一种算法(个人算法):
beatmap精确度 = 总精确度 ÷ 基础得分数量
其中
300的精确度为100%
100的精确度为33.34%(近似值)
50的精确度为16.67%(近似值)
实践的话就是这样
首先 总精确度 8982% ≈ 100% x 89 + 33% x 2 + 16% x 1 + 0% x 1
然后 基础得分数量 = 93
精确度 96.59% ≈ 8982% ÷ 93
这种算法会比较直观一点

评级

ps:值得注意的是DB[Doubld]/NC[Nightcore]虽然Mod系数为1.12x,但结算依然是普通的S

其他参数(CS、OD、HP)(还有AR)
CS 圆圈尺寸(Circle size)

具体参数未知
秉承着科学技术是第一生产力的马克思主义思想,我特意为CS去做了几个测试,然后下面是结果

(其中计算出来的斜率近似值为﹣4.48196721,后面就懒得算了,应该不是十进制的数)
顺带一提
转盘尺寸是固定的,所以不会受影响
如何修改CS的值?
在 osu!/song/歌曲名字 的文件夹,看到一个后缀名为.osu的文件,然后直接用记事本打开,就可以看到CS、AR、OD、HP的值,然后直接修改就可以了


HP,准确来说是HP下降速率(Health Point Drain Rate)

顺带提一下血条的判定

具体参数未知(你别看我,我也不知道啊,我也很绝望啊)

OD整体难度(Overall Difficulty)

beatmap的作者可以设置11种OD,看起来很多,实际上这11个值有很明显的关系

300的初始值为79.5,每次OD + 1,判定时间 - 6ms
100的初始值为139.5,每次OD + 1,判定时间 - 8ms
50的初始值为199.5,每次OD + 1,判定时间 - 10ms
(顺带一提,滑条Slider是用的50的判定时间,转盘没有判定时间)
这样可以很简单的推导出公式

值得注意的是
一个完整的判定区域是-50 -100 -300 +300 +100 +50(其中负数表示提前命中,正数表示延迟命中)

所以我们实际的判定时间要乘以二

像是我们的OD 7,满分对应37.5ms,实际上是 +﹣37.5ms,也就是75ms的完整判定时间

还有就是一些Mod会影响OD(或者判定时间)

osu!wiki 还很贴心地制作了一个超大的表格

实际上除了第一行其他的都能推导出来(笑
ps:看得眼睛都快花了

缩圈速率AR(Approach Rate)

beatmap的作者可以设置11种AR,范围从AR0(1800ms)到AR10(450ms)

其中
1800ms,当 0 ≤ AR ≤ 5 时,每次 AR + 1,显示时间 -120ms
1200ms,当 5 ≤ AR ≤ 10 时,每次 AR + 1,显示时间 -150ms

值得注意的是有一些Mod会影响AR(或者物件显示总时间)

重要的事说两遍:
因为物件在屏幕上的最大显示时间(从出现到miss)为 AR + OD[50],改变AR只改变了前半段的持续时间,而改变OD只改变了后半段的持续时间。而DT和HT改变了整个物件持续时间。
顺带一提osu!wiki 还很贴心地又制作了一个超大的表格

同样的,实际上除了中间的默认值,其他的都能推导出来

转盘难度(Spinner Difficulty)(原创内容)

转盘难度只会受 OD 影响
在Clear之前,每一圈将会得到100固定分
在Clear之后
当 OD ≤ 8.02 (也就是转盘难度 ≤ 6.51)第一圈、第二圈仍然会获得100固定分,之后每完成一圈将获得1100固定分
当 OD ≥ 8.03(也就是转盘难度 ≥ 6.51) 第一圈、第二圈仍然会获得100固定分,之后每完成一圈将获得1200固定分

BPM(每分钟节拍数)(原创内容)
BPM表示的是音乐 的每分钟节拍数 或者说 每分钟拍子数
像是一个120BPM的音乐,意思是一分钟有120个拍子
算下来一个拍为0.5秒
实际上在一个乐谱中,BPM并不是固定的。演奏者可以选择自己喜欢的拍子时长,来演奏乐谱,得到的曲子才会有BPM,所以乐谱本身是没有BPM的。
由于在一个乐谱中,音符数和拍子数都是固定的,当演奏者确定了一个拍子的时长,我们就可以得到整个曲子的时长以及BPM了
值得注意的是,一个完整音符可以进行细分,变为二分音符、四分音符,甚至是十六分音符,如果我们不参考乐谱,我们并不能知道演奏者演奏的一拍子是一个音符还是半个音符。以一拍两个音符进行演奏的120BPM的歌,相当于以一拍一个音符进行演奏的240BPM的歌。
说那么多
BPM只是在乐谱演奏中,决定曲子时长、曲子速度的数值。(通过修改乐谱,可以在不影响曲子的情况下将BPM翻一倍)
不少曲子BPM和谱面速度不成正比,是因为在osu!中分别有以一拍、半拍、四分之一拍(甚至更小)进行设计的谱面。所以实际上决定谱面速度的应该是每分钟物件数NPM,而不应该是BPM。

然后
就没有然后啦

这篇文章就到这里结束了
全部的知识点都已经教给你们了(除了某些wiki没有提供的,而我又懒得测的)
所以,你已经学会osu的得分规则了,快去试一下拿个银色SS吧
制作这篇文章花了我不少精力_(xз」∠)_

如果你喜欢这篇文章的话,请给我充点电吧=w=


其他
参考资料:
https://osu.ppy.sh/help/wiki/Game_Modes/osu!
https://osu.ppy.sh/help/wiki/Score/#osu
https://osu.ppy.sh/help/wiki/Beatmap_Editor/Song_Setup
原作者:ppy
CC许可协议:https://github.com/ppy/osu-wiki/blob/master/LICENCE.md
翻译整理制作:
破亚空【https://space.bilibili.com/2253572】
其他文章:
https://www.bilibili.com/read/readlist/rl132402

- 破亚空 2019.9.11 -

