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

772 Commits

Author SHA1 Message Date
Givikap120
a2e4cb8fea Minor fixes 2024-04-07 22:44:37 +03:00
Givikap120
801843bce8 Update ReadingEvaluator.cs 2024-04-07 22:32:15 +03:00
Givikap120
ae4f0a10ac Many changes
1) High AR nerf
2) Overlap fix
3) Optimisation
2024-04-07 22:28:55 +03:00
Givikap120
2dbdd4f7d7 balancing 2024-04-04 18:36:58 +03:00
Givikap120
23808be9b2 new experimental overlap summing 2024-03-30 14:16:27 +02:00
Givikap120
71df659533 bandaid for Rainbow Dash +EZ 2024-03-26 16:38:28 +02:00
Givikap120
c4af2bbf69 optimisation 2024-03-26 02:55:06 +02:00
Givikap120
6ec5bb5dca Fixed the overlap bug 2024-03-26 02:25:40 +02:00
Givikap120
d96eeeb27c high AR changes 2024-03-25 19:05:53 +02:00
Givikap120
b4fadc373e change SR scalig 2024-03-25 01:07:14 +02:00
Givikap120
98873e2401 fixed high AR (i hope) 2024-03-25 01:02:38 +02:00
Givikap120
4051413c92 rubik's cube bandaid 2024-03-24 19:34:06 +02:00
Givikap120
403dc5b8b0 Walk This Way bandaid 2024-03-24 00:21:34 +02:00
Givikap120
c016ed0a8a Update OsuDifficultyHitObject.cs 2024-03-23 15:25:29 +02:00
Givikap120
6b1320e1cd increased stability of the overlaps 2024-03-23 15:21:19 +02:00
Givikap120
4d2cb57887 fixed very stupid bug 2024-03-23 15:08:03 +02:00
Givikap120
529bd8483b more clean-up 2024-03-23 13:44:47 +02:00
Givikap120
53b918ecc1 deleted more db-stuff 2024-03-23 13:35:29 +02:00
Givikap120
cead94de77 minor balancing update 2024-03-23 02:35:11 +02:00
Givikap120
333bfd2490 added acc bonus for low AR
and slight balancing
2024-03-21 21:35:29 +02:00
Givikap120
ab47d39d0d Balancing
1) overlaps now giving proper amount of pp
2) high AR is nerfed outside of AR11
3) i hope FL won't crash calc anymore
4) flow aim low AR bonus is nerfed
2024-03-21 20:21:52 +02:00
Givikap120
5e2f3e3918 Increased stability
Now low AR difficulty won't drop with lowering AR
2024-03-17 13:28:09 +02:00
Givikap120
5e35121b14
Merge branch 'ppy:master' into cognition 2024-03-16 19:34:47 +02:00
Givikap120
d3cdb671c7 low AR streams balancing 2024-03-16 19:34:17 +02:00
Givikap120
a8b6ae978b high AR speed nerf 2024-03-08 03:02:34 +02:00
Givikap120
4b5d4635c9 Update Reading.cs 2024-03-07 18:34:07 +02:00
Givikap120
c2e5d767f9 Fixed reading cap
Now it's bound to HDFL difficulty instead of FL
This means that adding HD to a AR12 map will not increase pp from nothing
2024-03-07 18:32:54 +02:00
Givikap120
c8e9602e15 Update ReadingEvaluator.cs 2024-02-28 16:01:42 +02:00
Givikap120
5d4c78239b added density aim multiplier 2024-02-23 19:52:00 +02:00
Givikap120
9e6ae3587a Changes to highAR and angle nerf
HighAR now have passive strain bonus to buff low SR maps
Angle nerf now applied inplace (copied from HD calc)
2024-02-23 17:44:56 +02:00
Andrei Zavatski
22f5a66c02 Reduce allocations during beatmap selection 2024-02-17 15:46:38 +03:00
Givikap120
83d391e54b Merge branch 'master' into cognition 2024-02-13 19:35:49 +02:00
Givikap120
6402f23f02 Added Traceable support for pp 2024-02-12 21:00:15 +02:00
Givikap120
e6f1a4067d Change scaling to make high AR woth more on low SR 2024-02-12 19:55:52 +02:00
tsunyoku
c5f392c17d only compute flashlight in osu! difficulty calculations when required 2024-02-10 15:25:03 +00:00
Berkan Diler
6adf0ac01e Use new LINQ Order() instead of OrderBy() when possible 2024-02-08 18:01:00 +01:00
Givikap120
639f877d04 Minor SR adjust for high AR bonus 2024-02-04 02:30:11 +02:00
Givikap120
1a68e29a95 Big amount of changes
1) Fully remade HD calc: now it's strain-based
2) Remade high AR calc: now it's using more correct aim-speed summing
3) Added explicit nerf for fiery patterns
4) Fixed bug where HR pop-offing slideraim difficulty due to sliderend position not being mirrored (no longer Rat Race +50)
5) Splitted some files cuz it's more convenient for me to edit
2024-02-02 21:15:05 +02:00
Givikap120
51eb5c0a01 Alternating angle nerf
Fixed alternating angle (fiery jumps for example) gaining too much unfair reading pp
Reworked similar-angle nerf as a whole
Normalised global pp multiplier
2024-01-28 23:51:56 +02:00
Givikap120
7c294c864f
Merge branch 'ppy:master' into cognition 2024-01-27 18:09:42 +02:00
Givikap120
8ba3f2eaf9 Changed reading cap
now it's cognition pp cap = FL + mechanical difficulties
2024-01-27 18:08:43 +02:00
Givikap120
58159a54cd Update Reading.cs 2024-01-26 22:41:12 +02:00
Givikap120
394af044d9 Added inpredictability calculation
Used mainly in high AR
also used in HD
2024-01-26 22:32:23 +02:00
Givikap120
cede416d41 Added full-memory cap
Now reading difficulty caps at some value if mechanical difficulty and length is too low
2024-01-26 17:22:25 +02:00
Givikap120
f6df24779d Added infra and hidden
HD is now ported from Apollo, but i'm planning to change it
Also, some database-related stuff addings
2024-01-25 01:21:11 +02:00
Givikap120
77ce1aef42 Slight balancing
Added diffspike nerf to reading (accounting to memorization of one hard part)
2024-01-24 01:51:13 +02:00
Givikap120
f429f213d9 Fixed low AR
HD is still not existant
Also, small try to buff high AR on low SR (bad rn)
2024-01-24 01:07:44 +02:00
Givikap120
8c2405da68 Big bump
1) Fully reworked architecture: splitted reading in branches.
2) Added High AR reading

What is broken now:
- Low AR (because i focused mostly on High vs Low AR reading values on high end)
- HD (it's using live HD rn)
- 3 mod speed, cuz part of the speed pp is unaffected by low acc nerf in speed pp calculation
2024-01-20 22:59:35 +02:00
Givikap120
c64430f548 Improved overlap calc
and added GraphSkill to allow graph of reading difficulty
2024-01-16 02:03:11 +02: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
Givikap120
ffeb46af9b Initial overlap calc 2024-01-08 14:53:38 +02:00
Givikap120
ef3096123e
Merge branch 'ppy:master' into cognition 2024-01-05 15:31:36 +02: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
Bartłomiej Dach
ca37e1afc2
Merge branch 'master' into scorev3 2023-11-24 10:37:10 +09:00
Samuel Cattini-Schultz
c9ee29028f Fix implicitly used method being named incorrectly 2023-11-21 16:54:20 +11:00
Zyf
cadd9b4ace Merge remote-tracking branch 'upstream/master' into scorev3 2023-11-19 23:53:05 +01:00
Dan Balasescu
939b55020c
Merge branch 'master' into legacy-tick-test-coverage 2023-10-18 15:21:31 +09:00
Dean Herbert
a3b21281e6
Add reordering support to match existing diffcalc 100% 2023-10-13 14:25:38 +09:00
Dean Herbert
5ffc25c8e8
Fix potential failure when slider has no ticks 2023-10-12 03:19:43 +09:00
Dean Herbert
63843c79c3
Amend diffcalc to use something closer to the original calculation for now 2023-10-11 21:12:04 +09:00
Dean Herbert
8d91991214 Fix difficulty calculation not correct handling slider leniency anymore 2023-10-04 13:45:26 +09:00
Dean Herbert
c4992d3479 Fix one case of difficulty calculation no longer accounting for leniency 2023-10-03 19:37:13 +09:00
Dean Herbert
70ec4b060a Rename weird diffcalc parameter name 2023-10-03 19:20:39 +09:00
Dan Balasescu
da2a4681d9 Add method to retrieve legacy score multiplier 2023-10-02 16:52:01 +09:00
Dan Balasescu
2abef4ade5
Expand comment to justify maximising bonus score
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2023-09-15 18:35:17 +09:00
Dan Balasescu
ed295effc5 Maximise bonus score 2023-09-15 15:51:05 +09:00
Dan Balasescu
86330a7cc4 Adjust comment 2023-09-11 18:01:53 +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
js1086
07df5d9c6e Further balance values 2023-08-10 00:30:11 +01:00
js1086
c1712740f7 Balance streams and HD aim 2023-07-30 12:51:36 +01:00
apollo
8937080c91
Merge branch 'ppy:master' into cognition 2023-07-29 21:46:56 +01:00
Zyf
b672b49e02 Scoring : Implement v1 to v3 conversion. 2023-07-15 23:20:49 +02:00
Dean Herbert
1629024111 ILegacyScoreProcessor -> ILegacyScoreSimulator 2023-07-04 17:32:54 +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
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
Bartłomiej Dach
e3a89a6273
Fix remaining obvious CI inspections 2023-06-24 16:07:01 +02:00
Dean Herbert
df5b389629 Manual fixes to reduce warnings to zero 2023-06-24 01:52:53 +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
b9f485b551 Merge classes + split out 2023-06-13 02:32:54 +09:00
Dan Balasescu
446807e7f6 Add combo score / bonus score attributes 2023-06-12 23:00:29 +09:00
Dan Balasescu
d10c63ed2d Fix difficulty calculation when mods are involved 2023-06-08 16:29:34 +09:00
Dan Balasescu
77c745cc94 "TotalScoreV1" -> "LegacyTotalScore" 2023-06-06 17:25:28 +09:00
Dan Balasescu
e402c6d2b4 Write max combo attribute from base class 2023-06-02 21:53:25 +09:00
Dan Balasescu
02111e3854 Implement ScoreV1 calculation for OsuRuleset 2023-06-02 17:36:45 +09:00
apollo-dw
4a535fedb0 Revert high AR changes 2022-10-24 02:10:16 +01:00
apollo-dw
a9e9e50b8e Capitalize member 2022-10-19 13:00:00 +01:00
apollo-dw
a7070b5168 Improve code quality 2022-10-19 12:56:21 +01:00
apollo-dw
82cbdccb57 Rename cognition to reading 2022-10-18 19:13:25 +01:00
apollo-dw
090b408229 Apply various changes 2022-10-18 19:09:49 +01:00
apollo-dw
441bea5701 Make angle nerf requirement narrower 2022-10-17 22:15:31 +01:00
apollo-dw
d50e67f80d Remove WIP ar11 stuff from Cognition 2022-10-17 22:05:04 +01:00
apollo-dw
b6d4fbf8b5 Add constant angle nerf to note density difficulty 2022-10-10 13:49:38 +01:00
apollo-dw
f42004f18d Remove outdated argument 2022-10-07 20:40:38 +01:00