I can't count the number of times where someone backed up just the file
store without the realm database and lost data. As such this moves the
"IMPORTANT READ ME" disclaimer a directory higher and attempts to
describe the "proper" backup procedure in detail.
People don't read, but maybe this will at least partially lower the
volume.
Closes https://github.com/ppy/osu/issues/33231.
I'm not sure how to reproduce the instances of this reported to sentry
with `Drawable{Slider,Spinner}`, but this bug is about to be made worse
by `DrawableHoldNote` in mania getting its own `JudgementResult` subtype
in https://github.com/ppy/osu/pull/33194 - for that one to reproduce
just start gameplay test while editor is seeked to a time instant where
a hold note is mid-hold.
There's possibly an argument here that `CreateResult()` should live on
`HitObject` and not `DrawableHitObject`, and I'd even be partial to such
an argument, but doing that would be a rather hard ruleset API break
(albeit trivial one to resolve), and also may dredge up past
conversations about `Judgement` and `JudgementResult` (cf.
https://github.com/ppy/osu/pull/26563) that I would rather not get into
again.
Notably this is not source-breaking for rulesets. It may be
binary-breaking, I haven't tested.
Probably closes https://github.com/ppy/osu/issues/33230.
I say "probably" because I couldn't reproduce this myself using the
scenario provided in the issue but looking at the code involved I can
see why it would happen. Long and short of it is that the speed
adjustment cleanup code was much too reliant on disposal executing
quickly, which as we've learned on several occasions before, cannot be
relied upon.
Closes https://github.com/ppy/osu/issues/21732.
While the problem of multiple judgements in one frame and ordering of
`RevertResult()` calls as described in the issue is a real one, this
commit is a bit of a sidestep of the entire issue.
The idea here that while *snapshots* of instantaneous combo values are
susceptible to such ordering foibles on revert, *deltas* are not - and
such, when deltas are using to update the combo counts on revert,
ordering stops mattering so much.
As spotted in https://github.com/ppy/osu/pull/33191/checks?check_run_id=42460062656
Seems like just a bog-standard race. Could be reproduced via
diff --git a/osu.Game/Screens/Ranking/SoloResultsScreen.cs b/osu.Game/Screens/Ranking/SoloResultsScreen.cs
index d11e7db178..1a594fd21b 100644
--- a/osu.Game/Screens/Ranking/SoloResultsScreen.cs
+++ b/osu.Game/Screens/Ranking/SoloResultsScreen.cs
@@ -45,6 +45,8 @@ protected override async Task<ScoreInfo[]> FetchScores()
if (Score.BeatmapInfo!.OnlineID <= 0 || Score.BeatmapInfo.Status <= BeatmapOnlineStatus.Pending)
return [];
+ await Task.Delay(5000).ConfigureAwait(false);
+
var criteria = new LeaderboardCriteria(
Score.BeatmapInfo!,
Score.Ruleset,