1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-15 16:27:43 +08:00
Commit Graph

780 Commits

Author SHA1 Message Date
StanR
0bad5e4684 Move slider-related ratio multiplier out of the delta switch block, add nerf for ratios with delta difference fractions that are too big, adjust consts 2024-09-19 04:38:01 +05:00
StanR
c9ce7d29e6 Adjust multipliers 2024-09-16 01:04:46 +05:00
StanR
bee18b03e7 Reduce history max overall instead of using clock rate 2024-09-16 00:49:36 +05:00
StanR
145731bdef More balancing 2024-09-15 02:48:41 +05:00
StanR
863a74f980 Balancing 2024-09-15 02:08:37 +05:00
StanR
738d4bcb80 Reduce ratio if we're starting island counting after a slider 2024-09-15 01:49:52 +05:00
StanR
db626f168a Refactor 2024-09-15 01:12:41 +05:00
StanR
5e8174faa8 Reduce ratio for island size 1 2024-09-14 22:03:01 +05:00
StanR
d544498e8d Merge branch 'master' into rhythm-fixes 2024-09-12 15:29:20 +05:00
Dan Balasescu
d54c6aefbe
Merge branch 'master' into pp_refactoring_osustrainskill 2024-09-12 17:28:24 +09:00
StanR
3398497d4b Remove kickslider changes 2024-09-12 01:04:07 +05:00
Dan Balasescu
d935ed949c
Merge branch 'master' into pp_refactoring_speed_eval_change 2024-09-11 23:45:10 +09:00
StanR
7fda8bc95b Reduce repetition nerf for non-consecutive islands 2024-08-27 23:48:15 +05:00
StanR
ed45c947fc Adjust max history by clockrate to make rhythm calculation more consistent between rates 2024-08-27 15:50:08 +05:00
StanR
ce8286d299 Scale difficulty with doubletapness, make kicksliders not reduce the difficulty of the next object, adjust balancing 2024-08-24 04:37:58 +05:00
StanR
f1adc6f98c Don't cap max island size, make repetition nerf more lenient on high bpm, adjust balancing 2024-08-22 15:59:13 +05:00
StanR
3acd00b9b7 Tweak some values 2024-08-10 22:30:24 +05:00
Givikap120
a28913af7a multiplied numbers in multipliers 2024-08-06 14:47:05 +03:00
Givikap120
ace1a57242 Update SpeedEvaluator.cs 2024-08-05 16:53:06 +03:00
Givikap120
ac57cdd1b3 speed eval refactoring 2024-08-05 16:50:06 +03:00
Givikap120
8431e62c47 fixed CI 2024-08-05 16:14:32 +03:00
Givikap120
251d009394 moved conversion formulas to respective classes 2024-08-05 16:08:30 +03:00
Givikap120
0a9b11d3a7 removed default difficulty multiplier 2024-08-05 15:57:02 +03:00
StanR
c1532bcb57 Reduce base ratio a bit 2024-07-19 11:01:42 +05:00
StanR
bae9625b0b Make repetition nerf harsher, buff initial rhythm ratio, small refactoring 2024-07-19 10:13:50 +05:00
Dan Balasescu
ced11e6949
Even better readability 2024-07-16 12:23:46 +09:00
Dan Balasescu
fcc8e7be8a
Invert condition to reduce number of brain flips required 2024-07-16 12:09:09 +09:00
StanR
67cb4a2d02 InspectCode 2024-07-15 22:54:25 +05:00
StanR
e25642b484 Implement a bunch of rhythm difficulty calculation fixes 2024-07-15 14:45:31 +05:00
Bartłomiej Dach
b2722521fa
Merge branch 'master' into account-for-sliders-in-accuracy-pp 2024-05-31 07:41:04 +02:00
js1086
c25e1bdeb5 Use correct operation for 0 difficulty case 2024-05-26 14:21:47 +01:00
js1086
61afda1089 Fix NaN case when difficulty is 0 2024-05-26 11:24:06 +01:00
Fina
8dea601329
Merge branch 'master' into estimation-removal 2024-05-25 14:21:34 -07:00
Fina
6c9e906b2d Revert "merged givi's accuracy changes"
This reverts commit 1f55c1413b.
2024-05-24 14:00:42 -07:00
Fina
1f55c1413b merged givi's accuracy changes
stat acc save me
2024-05-24 13:50:26 -07:00
js1086
20c54ab697 Apply code quality changes 2024-05-23 19:08:32 +01:00
danielthirtle
c1efcc054c Change miss penalty (nerf longer maps) 2024-05-21 21:03:53 +12:00
Dan Balasescu
976c6c4f25
Merge pull request #28235 from tsunyoku/optimise-rhythm-evaluator-loop-logic
Reduce `Previous` calls in `RhythmEvaluator` by optimising loop logic
2024-05-20 20:31:46 +09:00
James Wilson
f31928875b Reduce Previous calls in RhythmEvaluator by optimising loop logic 2024-05-19 16:26:51 +01:00
James Wilson
609268786f remove unneeded extra Previous calls from RhythmEvaluator 2024-05-19 13:29:49 +01:00
apollo-dw
9b60abe486
Merge branch 'ppy:master' into no-combo-scaling 2024-05-11 13:24:16 +01:00
Fina
4fe55d437a Renamed useSliderHead to useClassicSlider (and refactored code accordingly) 2024-04-20 14:16:02 -07:00
Fina
d1dcac08c6 fix code formatting 2024-04-19 16:11:26 -07:00
Fina
4a7b8138ae Re-add bool useSliderHead
oops
2024-04-19 16:07:54 -07:00
Fina
759a82655c Clamp estimatedSliderEndsDrop 2024-04-19 16:04:49 -07:00
Fina
77814ec69f Fix getting slider head drops 2024-04-19 16:04:17 -07:00
Fina
ca246015d5 Add bool useSliderHead 2024-04-19 16:03:46 -07:00
TextAdventurer12
e2a5d1904b adjust count difficult strains formula 2024-04-17 01:21:06 +12:00
Dan Balasescu
0e218ee271
Merge pull request #27148 from Givikap120/traceable_pp
Add Traceable performance calculation support
2024-04-16 04:54:57 +09:00
Givikap120
4a21ff9726 removed duplication 2024-04-13 13:59:09 +03:00
Givikap120
feb9b5bdb8 Make traceable pp match HD 2024-04-13 13:42:57 +03:00
TextAdventurer12
b32d73ec9b adjust weighting function 2024-04-13 02:43:33 +12:00
Fina
dd17c898b3 removed large tick misses from effectivemisscount 2024-04-11 19:07:48 -07:00
Fina
2dd49036ed
Cap Buzz Slider Related Misses
After letting the comments @Flamiii left brew for a while, I realized they were very much right about the buzz slider thing. As such, I've implemented a quick and dirty untested fix that will hopefully have zero unintended side-effects :)

I don't see this as a permanent or final solution yet. There's definitely some potential issues/inaccuracies that could arise with maps like Notch Hell or IOException's Black Rover, but afaik this implementation would not cause any issues that stable doesn't already have.
2024-04-10 20:31:52 -07:00
TextAdventurer12
9f5f6b5d37 stop capping difficult strains per note 2024-04-06 21:39:27 +13:00
Fina
58bc184e0a Use sliderend data for all non-legacy scores
As per suggestion by givikap, I was not aware that non-legacy cl scores stored this data
2024-03-23 14:43:26 -07:00
Fina
6fe478c865 Add slider ticks and reverse arrows to effective misscount
Very much open to discussion on if these should be weighed differently
2024-03-21 23:49:54 -07:00
Fina
b0d20e68ae Update OsuPerformanceCalculator.cs 2024-03-21 23:31:45 -07:00
Fina
eb30b4aa38
Merge branch 'estimation-removal' into dropped-tail-fix 2024-03-21 23:29:45 -07:00
Fina
840845527f Use miss count for effective miss count
No need to estimate misses for non-CL scores.
2024-03-21 23:24:37 -07:00
Fina
3dafdc01bb Revert "Make length bonus account for sliders, use proper misscount for classic"
This reverts commit 941c0487a4.
2024-03-21 23:17:10 -07:00
Fina
4db6f288d3 Use actual sliderends dropped instead of estimating
Score data for non-CL scores includes sliderends dropped, meaning no need to estimate.

CL scores are still estimated.
2024-03-21 23:15:36 -07:00
Fina
941c0487a4 Make length bonus account for sliders, use proper misscount for classic 2024-03-21 19:02:36 -07:00
TextAdventurer12
0db910deb9 cap each note at adding 1 difficult strain count 2024-02-22 15:20:32 +13:00
TextAdventurer12
7d34542c12 use difficulty instead of topstrain 2024-02-22 15:14:56 +13:00
Andrei Zavatski
22f5a66c02 Reduce allocations during beatmap selection 2024-02-17 15:46:38 +03:00
Givikap120
6402f23f02 Added Traceable support for pp 2024-02-12 21:00:15 +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
tsunyoku
8ccb14f19f include slider count in accuracy pp if slider head accuracy is in use 2024-02-06 13:08:17 +00: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
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
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