1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-15 14:37:30 +08:00
Commit Graph

2063 Commits

Author SHA1 Message Date
Dan Balasescu
6304a5ed41
Merge pull request #27341 from Hiviexd/taiko-constant-speed-mod
Add osu!taiko `Constant Speed` mod
2024-05-23 21:01:53 +09:00
Dean Herbert
d0b1ebff5a
Revert "Temporary rollback of framework / SDL3"
This reverts commit d7d569cf4e.
2024-05-22 16:29:39 +08:00
Dean Herbert
d7d569cf4e
Temporary rollback of framework / SDL3 2024-05-21 14:36:16 +08:00
Dan Balasescu
3b8b56cbcb
Apply required changes after framework masking updates 2024-05-09 20:18:53 +09:00
Dan Balasescu
362a7b2c77
Remove unused members from GameplaySkinComponentLookup 2024-04-19 18:03:13 +09:00
Salman Ahmed
51f79c33e1 Fix URL pointing to non-existent commit 2024-03-29 23:33:06 +03:00
Dean Herbert
c21805589e
Fix taiko mascot size not matching stable 2024-03-29 22:40:04 +08:00
Bartłomiej Dach
b74f8dba41
Merge branch 'master' into verify-abnormal-difficulty-settings 2024-03-26 11:13:16 +01:00
Bartłomiej Dach
1866b4b6b1
Refactor abstract check to reduce duplication 2024-03-26 11:13:03 +01:00
Bartłomiej Dach
e7cf1ab4df
Add checks for taiko drain rate 2024-03-26 10:58:39 +01: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
Arthur Araujo
6fa663c8ca Make check ruleset specific 2024-03-22 14:48:22 -03:00
Dan Balasescu
0beaa8e8c5
Merge branch 'master' into tcm-resume 2024-03-14 12:22:46 +09: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
Hivie
a8792b3585 better assertion 2024-03-08 16:02:17 +01:00
Hivie
48c8319567 change multiplier to 0.9x 2024-03-08 16:01:57 +01:00
Salman Ahmed
dac8f98ea6 Fix GameplayState not handled as nullable 2024-02-29 07:13:32 +03:00
Salman Ahmed
847a8ead4f Hide taiko scroller when beatmap has storyboard 2024-02-29 05:39:59 +03:00
Hivie
4ea9519db8 revert changes to IncompatibleMods 2024-02-23 21:15:52 +01:00
Hivie
46a1f5267f account for beatmap base scroll speed in constant visualisation method 2024-02-23 21:15:18 +01:00
Hivie
65c0b73dd5 mark TaikoModConstantSpeed as incompatible with EZ/HR 2024-02-23 17:55:49 +01:00
Hivie
7762d2469b exclude EZ/HR for now 2024-02-23 14:24:26 +01:00
Hivie
14b0c41937 remove unnecessary ComputeTimeRange override 2024-02-23 14:22:56 +01:00
Hivie
1cbc2f07ab use more correct implementation 2024-02-23 14:01:12 +01:00
Hivie
0113fce02f Add osu!taiko Constant Speed mod 2024-02-23 11:27:12 +01:00
Berkan Diler
6adf0ac01e Use new LINQ Order() instead of OrderBy() when possible 2024-02-08 18:01:00 +01:00
Dan Balasescu
dcb195f3c8
Add delayed resume for taiko/catch/mania 2024-02-08 02:16:08 +09:00
Dan Balasescu
ee05743921
Bump databased star rating versions 2024-02-06 22:58:11 +09:00
Dan Balasescu
c18cd65081
Merge pull request #26694 from chandler14362/hit-object-result-allocations
Avoid closure allocations when applying hit object results
2024-02-06 17:49:26 +09:00
Bartłomiej Dach
26e4b0bacb
Merge branch 'master' into settings-remaining-strings-localisation 2024-02-05 18:07:03 +01:00
Bartłomiej Dach
fb80d76b4a
Apply further changes to remove remaining weirdness 2024-02-05 13:37:38 +01:00
Bartłomiej Dach
39fe078984
Merge branch 'master' into hit-object-result-allocations 2024-02-05 13:24:10 +01:00
Bartłomiej Dach
efe6bb25b1
Refactor result application around again to remove requirement for fields
Co-authored-by: Dean Herbert <pe@ppy.sh>
2024-02-05 13:21:01 +01:00
Loreos7
4d324a3057 localise remaining parts of the game settings 2024-02-03 00:08:36 +03:00
Dan Balasescu
6e4d52863c
Upgrade to .NET 8 SDK 2024-02-02 21:28:51 +09:00
Dan Balasescu
b44f77cee1
Update R# + fix inspections 2024-02-02 21:00:28 +09:00
Salman Ahmed
959cc7c7d9 Rewrite time range computation logic to be completely based on stable code 2024-01-29 21:26:36 +03:00
Bartłomiej Dach
2667cb8b36
Merge pull request #26703 from peppy/smaller-slider-misses
Adjust slider tick / end defaults again
2024-01-29 13:51:07 +01:00
Dean Herbert
68d5e8affc
Use a better constant for playfield positioning 2024-01-26 18:52:36 +09:00
Dean Herbert
afc4b63473
Merge branch 'master' into shift-taiko-playfield 2024-01-26 18:15:30 +09:00
Dean Herbert
aca1ce9972
Merge branch 'master' into fix-taiko-hit-position-v2 2024-01-26 17:51:06 +09:00
Dean Herbert
b84457fd15
Merge branch 'master' into constant-taiko-input-drum-width 2024-01-26 17:18:26 +09:00
Dean Herbert
e78f0bc89b
Merge pull request #26631 from frenzibyte/refactor-taiko-playfield-layout
Rewrite osu!taiko playfield adjustment container to keep playfield height constant
2024-01-26 17:17:49 +09:00
Dean Herbert
6cfd2813ed
Fix incorrect cast 2024-01-26 16:52:03 +09:00
Chandler Stowell
682dab5d83 check if parent was hit in taiko's DrawableDrumRoll.CheckForResult 2024-01-25 11:30:52 -05:00
Chandler Stowell
93bd3ce5ae update DrawableHitCircle.ApplyResult to pass this to its callback 2024-01-25 11:25:41 -05:00
Dean Herbert
5aa4235c3d
Simplify TaikoLegacyHitTarget container hierarchy 2024-01-25 21:02:22 +09:00
Dean Herbert
dda96d7106
Rename JudgementPiece to TextJudgementPiece 2024-01-25 19:31:57 +09:00
Chandler Stowell
d2775680e6 use stack to pass action state when applying hit results
this removes closure allocations
2024-01-24 13:13:45 -05:00
Bartłomiej Dach
20ed7e13e3
Fix back-to-front conditional in taiko processor
Would be weird to degrade a score due to *no* misses wouldn't it?
2024-01-22 19:57:12 +01:00
Bartłomiej Dach
cb8ec48717
Make RankFromScore()'s dictionary param readonly
Just to make sure nobody tries any "funny" business.
2024-01-22 19:56:30 +01:00
Bartłomiej Dach
5bae9074aa
Merge branch 'master' into s-rank-change 2024-01-22 19:54:53 +01:00
Dean Herbert
c8521b49cd
Change S rank to require no miss 2024-01-22 21:43:32 +09:00
Salman Ahmed
d8cba1cbfd Move taiko playfield down a nudge to visually match stable 2024-01-20 02:08:11 +03:00
Salman Ahmed
2f618b7f35 Change taiko hit position to always match stable 2024-01-20 01:53:39 +03:00
Salman Ahmed
d4fef99e1f Define constant input drum width for osu!taiko 2024-01-20 01:46:15 +03:00
Salman Ahmed
0c03326eaf Update remaining usages of playfield height 2024-01-20 01:45:39 +03:00
Salman Ahmed
fa2c33c641 Upscale playfield by difference in game height as well
I honestly don't have much clue about this one but doing so matches master.
2024-01-20 01:15:15 +03:00
Salman Ahmed
f5ce9eaf75 Refactor taiko playfield layout to use constant values 2024-01-20 01:15:15 +03:00
Salman Ahmed
3e17d01ceb Rewrite taiko playfield adjustment container to keep height constant 2024-01-20 00:21:34 +03:00
Salman Ahmed
ce4fd6aca5 Rename DEFAULT_HEIGHT to BASE_HEIGHT 2024-01-19 23:58:58 +03:00
mouzedrift
cbfc6091af apply proposed changes 2024-01-18 08:22:26 +01:00
mouzedrift
a870f99877 ease out input drum animation and add delay before fading out 2024-01-18 07:19:29 +01:00
Bartłomiej Dach
d335c01553
Merge pull request #26589 from peppy/key-binding-overlay-ordering
Change key overlay to use the ordering provided by rulesets
2024-01-17 13:37:26 +01:00
Bartłomiej Dach
a8970d7642
Jiggle ordering a bit further to fix revert-to-default buttons showing up 2024-01-17 12:24:48 +01:00
Dean Herbert
a4c0bfd099
Change taiko's default key ordering to better match display order
Fixes the issue originally fixed via
https://github.com/ppy/osu/pull/10553 in a slightly different way,
allowing more flexibility.
2024-01-17 17:37:56 +09:00
Bartłomiej Dach
fc37c5e4c2
Fix taiko maps containing only drum rolls / swells not being passable without mods
Closes https://github.com/ppy/osu/issues/26370.

As was noted in the issue thread stable does not attempt to account for
such maps, and the maps are impassable in stable without No Fail.
Nevertheless that seems like a pretty anti-player behaviour and I
honestly believe that it is fine to change this in lazer.
2024-01-16 20:18:32 +01:00
Dean Herbert
0fbca59523
Fix osu!taiko judgments not being pooled correctly
They weren't being initialised correctly on initial pool.
2024-01-15 20:50:09 +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
Salman Ahmed
eedb436389 Move combo counter to ruleset-specific HUD components target 2023-12-30 03:47:52 +03: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
Dean Herbert
831c273b45
Merge pull request #25887 from smoogipoo/restore-taiko-accuracy
Restore taiko accuracy to ScoreV2 values
2023-12-20 17:29:40 +09:00
OliBomby
ec578e1d9f fix near-zero length sliders n stuff being placeable 2023-12-19 21:20:21 +01:00
Dan Balasescu
35c0eaee1c
Make taiko OKs worth 150 points 2023-12-19 14:01:05 +09:00
Dan Balasescu
c1b55c7fac
Add ScoreProcessor methods to override numeric result 2023-12-19 13:50:31 +09:00
clayton
f84c181573
Don't convert TaikoModRandom to/from legacy mods 2023-12-17 23:47:50 -08:00
Dan Balasescu
30116512ca
Populate MaxCombo scoring attrib for non-osu rulesets 2023-12-18 12:01:51 +09:00
Bartłomiej Dach
0f4d054bfe
Use HitWindows data directly for computing effective OD 2023-12-14 20:41:12 +01:00
Bartłomiej Dach
fd1c72bf74
Use IBeatmapDifficultyInfo.(Inverse)DifficultyRange() instead of local reimplementations
Also adds explicit references to places from where the magic constants
were lifted.
2023-12-14 20:41:12 +01:00
Dean Herbert
9a982a9564
Tidy up GetRateAdjustedDisplayDifficulty implemetations 2023-12-13 17:13:21 +09:00
Dean Herbert
0259ab761b
Merge branch 'master' into arod_rate_adjust 2023-12-13 16:35:18 +09:00
Dan Balasescu
987fe9322e
Merge pull request #24166 from Zyfarok/scorev3
Modify osu! standardised scoring to introduce a combo exponent
2023-12-12 17:38:44 +09:00
Givikap120
faf54bca43
Merge branch 'master' into arod_rate_adjust 2023-12-10 01:49:18 +02:00
Dean Herbert
323808ad1e
Add more inline commenting around VELOCITY_MULTIPLIER application to TimeRange 2023-12-07 16:34:26 +09:00
Dean Herbert
b8694aba98
Remove unnecessary prefix
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2023-12-06 22:00:35 +09:00
Dean Herbert
1b50d1011a
Move constant local to taiko 2023-12-06 15:59:34 +09:00
Dean Herbert
8a0d152bcf
Reapply legacy taiko velocity multiplier in all relevant places 2023-12-06 15:59:34 +09:00
Dean Herbert
1cb3c710ba
Remove complex implementation of taiko SV multiplier 2023-12-06 15:59:34 +09:00
Dean Herbert
f9dd5bd828
Remove unused constant 2023-12-06 13:39:59 +09:00
Dan Balasescu
1c3bcbd548
Use IHasPath instead of IHasDistance for mania/taiko 2023-11-29 17:30:21 +09:00
Dan Balasescu
301d503b0b
Add another source of FP inaccuracy to match osu!stable 2023-11-29 16:41:19 +09:00
Dan Balasescu
16577829e2
Fix mania and taiko slider conversion distance 2023-11-28 21:14:56 +09:00
Zyf
71e5654b64 Account for legacyAccScore in score conversion 2023-11-24 23:07:27 +01:00
Dean Herbert
9172632b0b
Rename method and adjust xmldoc to be very explicit about how wrong this is 2023-11-17 17:04:20 +09:00
Dean Herbert
a04f9aaef7
Apply various inspections 2023-11-12 16:24:35 +09:00