1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-12 04:12:56 +08:00
Commit Graph

351 Commits

Author SHA1 Message Date
Jay Lawton
4eee1f429b fix spelling error 2024-11-03 00:47:53 +10:00
Dan Balasescu
3e7fcc3c24
Fix NaN values when stamina difficulty is 0 2024-11-01 22:52:51 +09:00
Dan Balasescu
9766d51559
Store attribute to the database 2024-11-01 16:02:02 +09:00
Jay Lawton
ff05bbd63f Add mono streak index calculation to strain values 2024-10-31 15:25:25 +10:00
Jay Lawton
abe2ee90e0 Change naming of onlyMono to SingleColourStamina 2024-10-31 12:12:14 +10:00
Jay Lawton
21b458d268 change convert specific omissions 2024-10-31 12:08:12 +10:00
Jay Lawton
85aa2ea8af Change Convert Bonuses to Performance 2024-10-31 10:15:29 +10:00
Nathen
101a4028fa LTCA save me 2024-10-30 18:57:47 -04:00
Dan Balasescu
e8540a3e7b
Bring back convert nerf to fix overweighted taiko difficulty 2024-10-31 02:15:00 +09:00
Bartłomiej Dach
1af464d5ae
Bump difficulty calculator versions
In order for the new star difficulty to be shown to users on the next
release.

catch's difficulty calculator version is not bumped because the only
catch change pending deploy is https://github.com/ppy/osu/pull/28353 and
that affects performance points only.
2024-10-07 15:38:41 +02:00
Bartłomiej Dach
84d6467e48
Merge branch 'master' into taikostatacc 2024-10-07 14:15:29 +02:00
Givikap120
2995df7903 removed unnecessary includes 2024-09-22 15:04:21 +03:00
Givikap120
1b77b3912b initial commit 2024-09-22 15:01:58 +03:00
Givikap120
e6fc4f6766 merged multipliers 2024-08-05 16:33:42 +03:00
StanR
df64d7f374 Refactor out taiko Peaks skill 2024-06-25 23:06:42 +05:00
Nathen
2fb22f1feb Move the return value for deviation below the local functions 2024-06-23 19:17:19 -04:00
Nathen
f8f18b6cbd Fix naming convention 2024-05-29 09:40:59 -04:00
Nathen
1714567342 Save deviation calculations to variables 2024-05-29 09:40:39 -04:00
Bartłomiej Dach
6266af8a56
Fix taiko legacy score simulator not including swell tick score gain into bonus portion
Reported in https://discord.com/channels/188630481301012481/1097318920991559880/1221836384038551613.

Example score: https://osu.ppy.sh/scores/1855965185

The cause of the overestimation was an error in taiko's score simulator.
In lazer taiko, swell ticks don't give any score anymore, while they did
in stable.

For all intents and purposes, swell ticks can be considered "bonus"
objects that "don't give any actual bonus score". Which is to say,
during simulation of a legacy score swell ticks hit should be treated
as bonus, because if they aren't, then otherwise they will be treated
essentially as *normal hits*, meaning that they will be included in
the *accuracy* portion of score, which breaks all sorts of follow-up
assumptions:

- The accuracy portion of the best possible total score becomes
  overinflated in comparison to reality, while the combo portion of
  that maximum score becomes underestimated.

- Because the affected score has low accuracy, the estimated accuracy
  portion of the score (as given by maximmum accuracy portion of score
  times the actual numerical accuracy of the score) is also low.

- However, the next step is estimating the combo portion, which is done
  by taking legacy total score, subtracting the aforementioned
  estimation for accuracy total score from that, and then dividing
  the result by the maximum achievable combo score on the map. Because
  most of actual "combo" score from swell ticks was "moved" into the
  accuracy portion due to the aforementioned error, the maximum
  achievable combo score becomes so small that the estimated combo
  portion exceeds 1.

Instead, this change makes it so that gains from swell ticks are treated
as "bonus", which means that they are excluded from the accuracy portion
of score and instead count into the bonus portion of score, bringing the
scores concerned more in line with expectations - although due to
pessimistic assumptions in the simulation of the swell itself,
the conversion will still overestimate total score for affected scores,
just not by *that* much.
2024-03-25 19:09:38 +01:00
nathen
a9b3416a3f Remove MathNet.Numerics dependency 2024-03-10 00:37:28 -05:00
nathen
537059504a Fix comment 2024-03-10 00:20:06 -05:00
nathen
6ddb2b7f8b Include misses in the great window deviation calc 2024-03-10 00:19:04 -05:00
nathen
caba0510db Compute the upper bound on deviation with a 99% confidence interval 2024-03-09 23:10:53 -05:00
nathen
8a26cdaaab Merge master 2024-03-09 22:33:13 -05:00
Berkan Diler
6adf0ac01e Use new LINQ Order() instead of OrderBy() when possible 2024-02-08 18:01:00 +01:00
Dan Balasescu
ee05743921
Bump databased star rating versions 2024-02-06 22:58:11 +09:00
Bartłomiej Dach
7c9adc7ad3
Fix incorrect score conversion on selected beatmaps due to incorrect difficultyPeppyStars rounding
Fixes issue that occurs on *about* 246 beatmaps and was first described
by me on discord:

    https://discord.com/channels/188630481301012481/188630652340404224/1154367700378865715

and then rediscovered again during work on
https://github.com/ppy/osu/pull/26405:

    https://gist.github.com/bdach/414d5289f65b0399fa8f9732245a4f7c#venenog-on-ultmate-end-by-blacky-overdose-631

It so happens that in stable, due to .NET Framework internals, float
math would be performed using x87 registers and opcodes.
.NET (Core) however uses SSE instructions on 32- and 64-bit words.
x87 registers are _80 bits_ wide. Which is notably wider than _both_
float and double. Therefore, on a significant number of beatmaps,
the rounding would not produce correct values due to insufficient
precision.

See following gist for corroboration of the above:

    https://gist.github.com/bdach/dcde58d5a3607b0408faa3aa2b67bf10

Thus, to crudely - but, seemingly accurately, after checking across
all ranked maps - emulate this, use `decimal`, which is slow, but has
bigger precision than `double`. The single known exception beatmap
in whose case this results in an incorrect result is

    https://osu.ppy.sh/beatmapsets/1156087#osu/2625853

which is considered an "acceptable casualty" of sorts.

Doing this requires some fooling of the compiler / runtime (see second
inline comment in new method). To corroborate that this is required,
you can try the following code snippet:

    Console.WriteLine(string.Join(' ', BitConverter.GetBytes(1.3f).Select(x => x.ToString("X2"))));
    Console.WriteLine(string.Join(' ', BitConverter.GetBytes(1.3).Select(x => x.ToString("X2"))));
    Console.WriteLine();

    decimal d1 = (decimal)1.3f;
    decimal d2 = (decimal)1.3;
    decimal d3 = (decimal)(double)1.3f;

    Console.WriteLine(string.Join(' ', decimal.GetBits(d1).SelectMany(BitConverter.GetBytes).Select(x => x.ToString("X2"))));
    Console.WriteLine(string.Join(' ', decimal.GetBits(d2).SelectMany(BitConverter.GetBytes).Select(x => x.ToString("X2"))));
    Console.WriteLine(string.Join(' ', decimal.GetBits(d3).SelectMany(BitConverter.GetBytes).Select(x => x.ToString("X2"))));

which will print

    66 66 A6 3F
    CD CC CC CC CC CC F4 3F

    0D 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00
    0D 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00
    8C 5D 89 FB 3B 76 00 00 00 00 00 00 00 00 0E 00

Note that despite `d1` being converted from a less-precise floating-
-point value than `d2`, it still is represented 100% accurately as
a decimal number.

After applying this change, recomputation of legacy scoring attributes
for *all* rulesets will be required.
2024-01-10 19:30:18 +01:00
Dan Balasescu
6b4b2a57fc
Expose only as one method 2023-12-21 14:58:23 +09:00
Dan Balasescu
4e3b994142
Relocate HitResult numeric score to ScoreProcessor 2023-12-21 14:52:31 +09:00
Dan Balasescu
30116512ca
Populate MaxCombo scoring attrib for non-osu rulesets 2023-12-18 12:01:51 +09:00
Zyf
71e5654b64 Account for legacyAccScore in score conversion 2023-11-24 23:07:27 +01:00
Dan Balasescu
da2a4681d9 Add method to retrieve legacy score multiplier 2023-10-02 16:52:01 +09:00
Dan Balasescu
19a442a32a Fix incorrect change in taiko score simulator 2023-09-26 17:46:03 +09:00
Dan Balasescu
628517569b Fix another difficulty-specific value 2023-09-08 21:08:09 +09:00
Dan Balasescu
2334be1987 Split legacy scoring attributes into a separate object 2023-09-07 21:10:38 +09:00
Natelytle
5f0020b0ca Reduce accuracy scaling 2023-07-30 20:14:15 -04:00
Natelytle
e56942012c Serialize ok hit window attribute to db 2023-07-28 11:38:30 -04:00
Natelytle
faddc4fa99 Merge remote-tracking branch 'osumaster/master' into taikostatacc 2023-07-28 11:36:59 -04:00
Natelytle
4de024675c Make comments more professional 2023-07-27 23:02:07 -04:00
Natelytle
31c8cf0933 Buff accuracy scaling 2023-07-27 22:44:56 -04:00
Dean Herbert
9ff6b3fcd3 Merge branch 'master' into editor-save-local-score-management 2023-07-06 12:28:44 +09:00
Dean Herbert
1629024111 ILegacyScoreProcessor -> ILegacyScoreSimulator 2023-07-04 17:32:54 +09:00
Dean Herbert
d74b1e148d Make ScoreInfo.BeatmapInfo nullable 2023-07-04 14:50:34 +09:00
Dan Balasescu
09bc8e45de Refactoring 2023-06-28 16:14:32 +09:00
Dan Balasescu
5f350aa66f Fix float division
Firstly, this is intended to be a float division.

Secondly, dividing integers by 0 results in an exception, but dividing
non-zero floats by 0 results in +/- infinity which will be clamped to
the upper range.
In particular, this occurs when the beatmap has 1 hitobject (0 drain
length).
2023-06-27 17:14:35 +09:00
Natelytle
7ee910195c Merge remote-tracking branch 'osumaster/master' into taikostatacc 2023-06-26 12:36:34 -04:00
Dan Balasescu
a9c65d200a Initial conversion of scores 2023-06-26 22:19:01 +09:00
Dan Balasescu
e1d723a2cc Merge branch 'master' into diffcalc-total-scorev1 2023-06-26 14:32:14 +09:00
Dan Balasescu
06565871d6 Add flag to disable computing legacy scoring values 2023-06-24 01:03:18 +09:00
Dean Herbert
0ab0c52ad5 Automated pass 2023-06-24 01:00:03 +09:00
Dan Balasescu
87447f41d0 Fix incorrect calculation of difficulty 2023-06-24 00:58:45 +09:00
Dan Balasescu
bfa449e47a Adjust attribute data 2023-06-19 21:38:13 +09:00
Dan Balasescu
aa644832dc Add ScoreV1 calculation for TaikoRuleset 2023-06-13 19:28:46 +09:00
Dan Balasescu
e402c6d2b4 Write max combo attribute from base class 2023-06-02 21:53:25 +09:00
Natelytle
9aa11e0090 update desmos 2023-03-20 23:13:33 -04:00
Natelytle
858afcd0b3 Pass OK hit window as a separate difficulty attribute, fix erfc approximation 2023-03-20 22:00:33 -04:00
Natelytle
adf16187b1 Change accuracy scaling 2023-02-22 21:03:02 -05:00
Natelytle
334f60f528 Reformat everything to be simpler 2023-02-22 14:55:48 -05:00
Natelytle
45e8d18b1b fix extremely low OD breaking deviation calc 2022-12-05 22:33:13 -05:00
Natelytle
2b74c4ef8c tests return a greathitwindow of 0, add check 2022-12-03 15:39:38 -05:00
Natelytle
6a27206abd bugfix + tests 2022-12-02 17:01:15 -05:00
Dan Balasescu
34533e588a Merge branch 'master' into taikostatacc 2022-11-29 10:48:24 +09:00
Natelytle
7b5373ac5a add comments 2022-11-27 15:24:54 -05:00
Natelytle
e3ef180c46 fixes 2022-11-25 15:18:39 -05:00
Natelytle
b579af674e fix dt 2022-11-24 19:46:55 -05:00
Natelytle
0e4e92b344 totalvalue 2022-11-24 19:28:47 -05:00
Natelytle
2ba163440a account for low acc FC deviation 2022-11-24 19:09:30 -05:00
Terochi
eff6c7be64 Removed unnecessary methods, changed tests, and moved LimitedCapacityQueue.cs to a more generic namespace. 2022-11-19 16:53:35 +01:00
Dan Balasescu
819027d61c Rename to isConvert 2022-11-04 16:17:49 +09:00
Dan Balasescu
5448c0209e Rename var 2022-11-02 10:14:40 +09:00
Natelytle
37c21cdd7c fix formatting 2022-11-01 15:14:55 -04:00
Natelytle
16301f052e Fix low end accuracy, buff high end 2022-10-30 15:01:25 -04:00
Natelytle
7403c1cc86 Return null for greatprobability >= 1 2022-10-28 23:23:50 -04:00
Natelytle
01c79d8ef2 remove other infinity reference 2022-10-28 16:20:21 -04:00
Natelytle
883790c7a7 Return null instead of infinity 2022-10-28 16:18:17 -04:00
Dan Balasescu
4342521bc1 Merge branch 'master' into stamina-available-fingers 2022-10-28 13:07:48 +09:00
Dan Balasescu
707b9eaa50 Remove unnecessary null-forgiving 2022-10-28 13:07:44 +09:00
Natelytle
2940d18d33 Fix formatting 2022-10-27 00:07:32 -04:00
Natelytle
af919a6550 harshen deviation scaling 2022-10-26 16:10:36 -04:00
Natelytle
7d3338a0ea LTCA Balancing pass 2022-10-26 15:58:20 -04:00
Natelytle
87cba2d828 Slight adjustments 2022-10-25 19:15:58 -04:00
Natelytle
607a006c4f oops 2022-10-25 17:55:16 -04:00
Natelytle
d5b06ae945 Fix difficultyvalue acc scaling 2022-10-25 17:52:34 -04:00
Natelytle
442e68ac1a Implement taiko deviation estimation 2022-10-25 17:41:20 -04:00
vun
122064d03f Minor refactoring to reduce amount of looping 2022-10-09 07:09:05 +08:00
Dan Balasescu
234c6ac799 Pin taiko PP calculator accuracy to osu-stable values 2022-10-05 20:21:15 +09:00
vun
47781a8f94 Fix code inspect issues and SR test cases 2022-10-03 17:31:45 +08:00
vun
25976e1f10 Correct xmldocs 2022-10-03 14:20:01 +08:00
vun
c933b62df6 Correct xmldoc 2022-10-03 14:16:53 +08:00
Jay L
6752655b5a xml, remove speedbonus cap 2022-10-02 16:08:14 +10:00
Jay L
4b562f782f decrease finger count 2022-10-02 15:28:39 +10:00
Jay L
a276e40033 reintroduce fl bonus to converts 2022-10-02 09:05:58 +10:00
vun
e6093f94df Apply nerfs to HD/FL bonuses with converts 2022-09-30 20:56:16 +08:00
vun
02092ede64 Refactor previous and next colour change into TaikoDifficultyHitObjectColour 2022-09-30 11:42:48 +08:00
vun
09a38fec94 Implement mono tl nerf for stamina, disable convert specific nerfs 2022-09-30 09:10:56 +08:00
vun
d84c956af9 Refactor to move first-object detection to evaluation 2022-09-29 15:27:26 +08:00
Dan Balasescu
9645bfe708 Bump difficulty calculator versions 2022-09-02 16:27:25 +09:00
Dan Balasescu
85705d97a5
Merge pull request #19853 from Lawtrohux/pp-rescale-effective-misses
osu!taiko performance point adjustments & effective misses
2022-08-25 14:43:03 +09:00
Dan Balasescu
8eab36f8c9 Actually fix possible NaN value 2022-08-25 14:02:10 +09:00
vun
fb9bb2d42d Declare Parent as non-nullable 2022-08-24 08:57:13 +08:00