1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-13 01:42:57 +08:00
Commit Graph

1977 Commits

Author SHA1 Message Date
Bartłomiej Dach
f13ca28d5e
Fix performance overhead from ternary state bindable callbacks when selection is changing
Closes https://github.com/ppy/osu/issues/28369.

The reporter of the issue was incorrect; it's not the beat snap grid
that is causing the problem, it's something far stupider than that.

When the current selection changes,
`EditorSelectionHandler.UpdateTernaryStates()` is supposed to update the
state of ternary bindables to reflect the reality of the current
selection. This in turn will fire bindable change callbacks for said
ternary toggles, which heavily use `EditorBeatmap.PerformOnSelection()`.

The thing about that method is that it will attempt to check whether any
changes were actually made to avoid producing empty undo states, *but*
to do this, it must *serialise out the entire beatmap to a stream* and
then *binary equality check that* to determine whether any changes were
actually made:

	7b14c77e43/osu.Game/Screens/Edit/EditorChangeHandler.cs (L65-L69)

As goes without saying, this is very expensive and unnecessary, which
leads to stuff like keeping a selection box active while a taiko beatmap
is playing under it dog slow. So to attempt to mitigate that, add
precondition checks to every single ternary callback of this sort to
avoid this serialisation overhead.

And yes, those precondition checks use linq, and that is *still* faster
than not having them.
2024-06-04 10:32:12 +02:00
Dean Herbert
0d6adf160b
Share scale factor with hit target 2024-05-27 14:20:28 +09:00
Joppe27
76f13b21da Correct scale of taiko-glow element 2024-05-25 23:28:51 +02:00
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
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