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
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
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
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
abstrakt
6e1edc4d8d
Use the StackedEndPosition
to determine the jump distance in the FlashlightEvaluator
.
...
Signed-off-by: abstrakt <abstrakt.osu@gmail.com>
2022-09-26 14:06:35 +02:00
Dan Balasescu
1e9b60f07f
Merge pull request #16524 from stanriders/move-td-reduction
...
Fix touch device difficulty reduction not affecting star rating
2022-09-21 12:51:14 +09:00
StanR
1801ae3c6a
Move flashlight TD difficulty reduction to diffcalc
2022-09-14 17:40:22 +03:00
StanR
6338b87c63
attributes
2022-09-09 17:31:52 +03:00
StanR
c2e3fcfa3f
Merge branch 'master' into move-td-reduction
2022-09-09 17:24:58 +03:00
apollo-dw
1997519364
Don't use full hit window in rhythm
2022-09-07 13:25:35 +01:00
apollo-dw
b5779508d0
Retrieve great hit window from the hit object
2022-09-06 17:10:32 +01:00
Dan Balasescu
9645bfe708
Bump difficulty calculator versions
2022-09-02 16:27:25 +09:00
apollo-dw
ad650adab0
Fix speed note count sum
2022-08-30 18:03:44 +01:00
Dan Balasescu
e34c8e4975
Merge pull request #19716 from MBmasher/fl-grid
...
Nerf repeated angles in Flashlight skill
2022-08-29 21:15:45 +09:00
MBmasher
b082dc1fe4
Slightly buff flashlight multiplier
2022-08-27 18:31:07 +10:00
MBmasher
454d868dd5
Remove unnecessary using call
2022-08-26 20:42:02 +10:00
MBmasher
249c3f868f
Compare raw angle values instead of rounding angles
2022-08-26 20:40:18 +10:00
MBmasher
5082ee26cf
Ensure a negative value cannot be added to angleRepeatCount
2022-08-26 20:30:14 +10:00
MBmasher
08cb70b093
Lessen repeated angle nerf for objects further back in time
2022-08-26 20:27:31 +10:00
MBmasher
d8854413cb
Add newline
2022-08-26 12:38:36 +10:00
MBmasher
6651e76e2e
Remove whitespace
2022-08-26 12:37:56 +10:00
MBmasher
b0e7f63361
Update angle multiplier to nerf repeated angles
2022-08-26 12:34:33 +10:00
StanR
43e471c2a5
Clamp effective miss count to maximum amount of possible braks
2022-08-16 16:12:13 +03:00
MBmasher
21c5fed45f
Adjust capitalisation
2022-08-12 14:09:16 +10:00
MBmasher
f70588a423
Add newline before brace
2022-08-12 14:08:32 +10:00
MBmasher
037f56077b
Apply Flashlight grid nerf
2022-08-12 13:29:04 +10:00
Dan Balasescu
61a3758cd9
Merge branch 'master' into pp-balancing
2022-08-11 19:46:16 +09:00
Dan Balasescu
7cac089246
Merge branch 'master' into fl-slider
2022-08-10 21:19:05 +09:00
Dan Balasescu
2c6c315e3a
Merge branch 'master' into pp-balancing
2022-08-04 15:40:46 +09:00
MBmasher
267d55a6a8
Remove osuSlider from statement
2022-07-23 14:48:39 +10:00
MBmasher
230943f698
Merge branch 'fl-slider' of https://github.com/mbmasher/osu into fl-slider
2022-07-23 14:40:54 +10:00
MBmasher
f44a5def90
Move repeat bonus to TravelDistance
2022-07-23 14:40:16 +10:00
Dan Balasescu
71912e10c4
Merge branch 'master' into fl-slider
2022-07-22 15:22:50 +09:00
Dean Herbert
aca19a005e
Add versioning to difficulty calculators
2022-07-21 18:15:25 +09:00
StanR
163c3f9c2d
Adjust multipliers to account for speed changes
2022-07-20 16:10:34 +03:00
StanR
35e841de95
Move base performance multiplier to a const
2022-07-20 15:54:49 +03:00
StanR
9c9f32b435
Merge branch 'master' into pp-balancing
2022-07-20 15:40:29 +03:00
StanR
633f6fe620
Increase global multiplier
2022-07-18 21:58:11 +03:00
MBmasher
42b9dc877d
Divide slider bonus by repeat count
2022-07-18 16:14:06 +10:00
MBmasher
72c096f9af
Update xmldoc
2022-07-18 15:59:20 +10:00
MBmasher
7c680afc3c
Change initialisation of osuSlider
2022-07-18 15:59:00 +10:00
MBmasher
204fbde07b
Remove debug code
2022-07-18 15:58:32 +10:00
MBmasher
8413c40442
Remove debug code
2022-07-18 15:58:09 +10:00
MBmasher
68caafa210
Update xmldoc
2022-07-17 17:02:30 +10:00
MBmasher
dae698638c
Add repeat bonus to Flashlight, move repeat multiplier to AimEvaluator
2022-07-17 16:56:05 +10:00
MBmasher
a950deb7db
Re-implement slider changes to FlashlightEvaluator
2022-07-17 16:27:55 +10:00
Jamieson Berida
a0dd6cbab3
Merge branch 'master' into fl-slider
2022-07-17 16:18:18 +10:00
StanR
760742e358
Move relax global multiplier to diffcalc
2022-07-14 00:42:50 +03:00
StanR
0983e4f81e
Increase 50s nerf again
2022-07-12 17:57:00 +03:00
StanR
58c687172b
Reduce low AR bonus
2022-07-12 10:52:44 +03:00
apollo-dw
5b96f67a8b
Remove non-overlapping velocity buff
2022-07-04 20:49:26 +01:00
StanR
4f77637946
Update desmos
2022-07-04 21:52:57 +03:00
StanR
bf738aa04f
Account for extreme ODs in relax multipliers
2022-07-04 21:49:45 +03:00
StanR
afa3f8cda3
Make relax ok/meh multipliers dependent on OD
2022-07-04 20:53:20 +03:00
StanR
11eb344476
Reduce 50s nerf further
2022-07-04 20:28:15 +03:00
StanR
db8bb07c78
Reduce 50s nerf effect
2022-07-04 20:10:26 +03:00
StanR
212360f67e
Make relax ok/meh nerfs less drastic, add flashlight nerf, remove ar bonus for relax
2022-07-04 19:59:30 +03:00
StanR
45258b3f14
Buff aim slightly
2022-07-04 19:53:34 +03:00
Dan Balasescu
d4aa18112b
Merge pull request #15035 from emu1337/speed-acc-scaling
...
Change speed accuracy scaling to be closer to worst case scenario
2022-06-29 18:04:23 +09:00
Dan Balasescu
6d91c0f375
Resolve inspection issue
2022-06-29 16:57:11 +09:00
Dan Balasescu
ad95f037de
Prevent another case of potential div-by-0
2022-06-29 16:42:53 +09:00