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

41245 Commits

Author SHA1 Message Date
Joseph Madamba
d6ba7a9c6e Centralise INDEX_PATH to WikiOverlay 2024-01-08 14:28:16 -08:00
Joseph Madamba
58619f1684 Fix wiki main page not displaying custom layout 2024-01-08 14:16:05 -08:00
Bartłomiej Dach
4f7dcb3a50
Do not attempt to recalculate non-legacy scores or scores set on custom rulesets
Addresses discussions such as https://github.com/ppy/osu/discussions/26407
or https://github.com/ppy/osu/discussions/25914 wherein:

- the game would attempt to convert scores for custom rulesets, which
  makes no sense, especially so when they're not there,

- the game would also "recalculate" lazer scores, but that was never the
  intention or was never supported; the game would just increment the
  score version on those but still include them in the converted tally.
2024-01-08 22:47:13 +01:00
Bartłomiej Dach
aa83b84bb2
Fix Cinema mod being compatible with mods that can force failure
Addresses
https://github.com/ppy/osu/pull/26080#issuecomment-1868833214.
2024-01-08 22:34:41 +01:00
Bartłomiej Dach
67df7b33fb
Add failing test coverage for not attempting to upgrade custom ruleset scores 2024-01-08 22:10:08 +01:00
Bartłomiej Dach
58db39ec32
Fix crash when clicking osu! logo in song select immediately after exiting
Closes https://github.com/ppy/osu/issues/26415.

The crash report with incomplete log was backwards, the exit comes
first. Sentry events and the reproducing test in
8a87301c55 confirm this.
2024-01-08 21:37:25 +01:00
Bartłomiej Dach
c4ac53002c
Remove loop in combo score loss estimation calculation 2024-01-08 19:49:22 +01:00
Bartłomiej Dach
70ba5dd0d3
Merge pull request #26385 from peppy/carousel-thing
Fix beatmap carousel not preloading panels when off-screen
2024-01-08 19:37:34 +01:00
Dean Herbert
51bd32bf7e
Restore comment regarding usage of MinBy 2024-01-09 01:08:47 +09:00
Dean Herbert
e77d203a24
Refactor delayed load logic to hopefully read better 2024-01-09 01:08:17 +09:00
Bartłomiej Dach
8c82bb006c
Fix mania score conversion using score V1 accuracy
Partially addresses https://github.com/ppy/osu/discussions/26416

As pointed out in the discussion thread above, the total score
conversion process for mania was using accuracy directly from the
replay. In mania accuracy is calculated differently in score V1 than in
score V2, which meant that scores coming from stable were treated more
favourably (due to weighting GREAT and PERFECT equally).

To fix, recompute accuracy locally and use that for the accuracy
portion.

Note that this will still not be (and cannot be made) 100% accurate, as
in stable score V2, as well as in lazer, hold notes are *two*
judgements, not one as in stable score V1, meaning that full and correct
score statistics are not available without playing back the replay.

The effects of the change can be previewed on the following spreadsheet:

https://docs.google.com/spreadsheets/d/1wxD4UwLjwcr7n9y5Yq7EN0lgiLBN93kpd4gBnAlG-E0/edit#gid=1711190356

Top 5 changed scores with replays:

| score                                                                                                                            | master  | this PR | replay  |
| :------------------------------------------------------------------------------------------------------------------------------- | ------: | ------: | ------: |
| [Outlasted on Uwa!! So Holiday by toby fox [[4K] easy] (0.71\*)](https://osu.ppy.sh/scores/mania/460404716)                      | 935,917 | 927,269 | 920,579 |
| [ag0 on Emotional Uplifting Orchestral by bradbreeck [[4K] Rocket's Normal] (0.76\*)](https://osu.ppy.sh/scores/mania/453133066) | 921,636 | 913,535 | 875,549 |
| [rlarkgus on Zen Zen Zense by Gom (HoneyWorks) [[5K] Normal] (1.68\*)](https://osu.ppy.sh/scores/mania/458368312)                | 934,340 | 926,787 | 918,855 |
| [YuJJun on Harumachi Clover by R3 Music Box [4K Catastrophe] (1.80\*)](https://osu.ppy.sh/scores/mania/548215786)                | 918,606 | 911,111 | 885,454 |
| [Fritte on 45-byou by respon feat. Hatsune Miku & Megpoid [[5K] Normal] (1.52\*)](https://osu.ppy.sh/scores/mania/516079410)     | 900,024 | 892,569 | 907,456 |
2024-01-08 16:38:43 +01:00
Bartłomiej Dach
5337d999b5
Merge branch 'master' into disable-intro-track-pause 2024-01-08 12:54:37 +01:00
Bartłomiej Dach
b6ce57b777
Use override that was intended to steer global track control rather than local sets 2024-01-08 12:54:16 +01:00
Bartłomiej Dach
50eba9ebdb
Reduce code duplication in test 2024-01-08 12:52:14 +01:00
Bartłomiej Dach
3e9d222d67
Merge pull request #26409 from peppy/overall-ranking-overlap
Fix overall ranking text overlapping at some aspect ratios
2024-01-08 12:29:42 +01:00
Bartłomiej Dach
7b663a27bd
Fix score conversion incorrectly assuming zero combo score in certain cases 2024-01-08 10:47:22 +01:00
Dean Herbert
dc31c66f62
Return null on font lookup failure instead of asserting
Fallback weirdness.
2024-01-07 20:41:58 +09:00
Dean Herbert
16ea7f9b77
Avoid completely unnecessary string allocations in ArgonCounterTextComponent 2024-01-07 14:31:22 +09:00
Dean Herbert
9d9e6fcfdb
Remove LINQ calls in hot paths 2024-01-07 14:31:22 +09:00
Dean Herbert
b809d4c068
Remove delegate overhead from argon health display's animation updates 2024-01-07 14:31:22 +09:00
Dean Herbert
d3710f0bfd
Remove scores from song select leaderboard when leaving the screen 2024-01-06 20:53:20 +09:00
Dean Herbert
14a43375a7
Fix overall ranking text overlapping at some aspect ratios
Can't confirm on the actual ranking screen due to stuff not working.

Maybe it'll work tomorrow.

Closes https://github.com/ppy/osu/issues/26341.
2024-01-06 20:25:07 +09:00
Bartłomiej Dach
ea7078fab5
Implement approximate score conversion algorithm matching score V2 2024-01-05 20:46:11 +01:00
Bartłomiej Dach
8295ad1feb
Change catch scoring to match score V2 2024-01-05 20:46:11 +01:00
Zachary
091241634c Make IntroScreen set AllowTrackControl to false instead 2024-01-05 23:55:17 +10:00
Dean Herbert
fbc40ffc65
Merge pull request #26381 from Joehuu/flash-ongoing-operations-dialog
Flash blocking ongoing operations dialog when trying to force quit
2024-01-05 18:34:06 +09:00
Dean Herbert
e9289cfbe7
Reduce precision of audio balance adjustments during slider sliding 2024-01-05 02:26:30 +09:00
Dean Herbert
5b55ca6692
Cache legacy skin character glyph lookups to reduce string allocations 2024-01-05 02:26:30 +09:00
Dean Herbert
91bb3f6c57
Cache argon character glyph lookups to reduce string allocations 2024-01-05 01:24:00 +09:00
Zachary
9b734bac25 Allow track control after intro screen finishes. 2024-01-05 01:14:34 +10:00
Dean Herbert
35b9940c4e
Merge pull request #26140 from CaffeeLake/multiplier1x
Fix mod score multiplier rounding to 1.00x with specific mod combinations
2024-01-04 19:26:49 +09:00
Dean Herbert
81c6fd5589
Load items closer to the centre of the screen as a priority 2024-01-04 19:25:12 +09:00
Dean Herbert
adac3b65ce
Fix beatmap carousel not preloading panels when off-screen 2024-01-04 19:25:12 +09:00
Dean Herbert
b12011d501
Avoid rank updates after failing 2024-01-04 17:13:24 +09:00
Dean Herbert
a4dee1a01a
Don't unset Disabled on rank (never actually disabled?) 2024-01-04 17:13:24 +09:00
Dean Herbert
705f25e4b9
Make ScoreProcessor.Rank read-only 2024-01-04 17:13:24 +09:00
Dean Herbert
0bbc27e380
Add a gameplay configuration flag to disable fail animation 2024-01-04 17:13:24 +09:00
Dean Herbert
f0aeeeea96
...in a safer way 2024-01-04 17:13:21 +09:00
Dean Herbert
df99a37254
Fix another realm null inspection 2024-01-04 17:11:40 +09:00
Dean Herbert
0f11743fff
Merge pull request #26379 from wooster0/chat
Make chat command names case-insensitive
2024-01-04 16:17:42 +09:00
Dean Herbert
65c29b4f09
Make editor remain frame stable during normal playback 2024-01-04 15:47:16 +09:00
Joseph Madamba
ea714c86d4 Fix potential null reference with flash sample when exiting rapidly
Fixes `TestForceExitWithOperationInProgress()`.
2024-01-03 22:30:46 -08:00
Joseph Madamba
cd9bf0c753 Flash blocking ongoing operations dialog when trying to force quit 2024-01-03 22:30:46 -08:00
wooster0
cf5f0a2bdc Make chat commands case-insensitive
Would be nice if I accidentally have caps lock enabled and write "/HELP" it still works.
2024-01-04 15:06:10 +09:00
wooster0
659118c043 Fix wiki link path inconsistencies
If I access https://osu.ppy.sh/wiki/en/MAIN_PAGE or use any other
capitalization my browser always redirects me to
https://osu.ppy.sh/wiki/en/Main_page so I think Main_page is the
correct capitalization.

This might slightly reduce loading time? No idea though. Probably
negligible if so.
2024-01-04 12:20:51 +09:00
CaffeeLake
c7b0a7ff69
Merge branch 'master' into multiplier1x 2024-01-04 05:04:23 +09:00
CaffeeLake
8482d731c3
Merge branch 'master' into multiplier1x 2024-01-03 20:24:45 +09:00
Bartłomiej Dach
04147eb689
Fix lack of correct default value spec 2024-01-03 11:46:28 +01:00
Bartłomiej Dach
e686a6a1dd
Fix player submission test intermittent failures due to audio playback discrepancy logic kicking in
See https://github.com/ppy/osu/actions/runs/7384457927/job/20087439457#step:5:133.
2024-01-03 09:17:01 +01:00
Dean Herbert
bdfaa4b583
Fix crash when dragging rotation control in editor with both mouse buttons
Closes https://github.com/ppy/osu/issues/26325.
2024-01-03 13:34:50 +09:00
Dean Herbert
18820e60b3
Merge pull request #26337 from bdach/persist-user-status-to-config
Store user online state in config for next launch
2024-01-03 13:21:31 +09:00
Dean Herbert
e4ba7b81b0
Merge pull request #26343 from adryzz/fix-discord-multiplayer-presence
update the current activity when the multiplayer room updates
2024-01-03 13:10:56 +09:00
Dean Herbert
4e7b1e1190
Merge pull request #26333 from bdach/retry-perfect-unobserved-error
Fix possible double score submission when auto-retrying via perfect mod
2024-01-03 13:02:38 +09:00
CaffeeLake
79ef032182
Merge branch 'master' into multiplier1x 2024-01-03 07:40:02 +09:00
Lena
17656e9b9c
update the current activity when the multiplayer room updates 2024-01-02 18:38:25 +01:00
Dean Herbert
16c7c14602
Merge pull request #26332 from bdach/more-score-conversion-fail
Fix standardised score conversion failing for some taiko scores due to overestimating accuracy portion
2024-01-03 01:48:28 +09:00
Bartłomiej Dach
09b2a4e3b4
Fix users blipping online briefly before their online status is known 2024-01-02 14:07:59 +01:00
Bartłomiej Dach
d4e917448d
Fix login panel dropdown forcing user online
It was sort of assuming that the user can't be anything but online when
opening, thus forcing the status to online via the immediately-run value
change callback.
2024-01-02 14:07:04 +01:00
Bartłomiej Dach
f9f03ebc0f
Store user online state in config for next launch
Closes remainder of https://github.com/ppy/osu/issues/12635.
2024-01-02 14:04:40 +01:00
Dean Herbert
05d9aeefbc
Merge pull request #26248 from smoogipoo/slider-tail-judgement
Increase slider tails' worth to 150 points (up from 30)
2024-01-02 20:50:34 +09:00
Bartłomiej Dach
3c5e9ac9a9
Fix possible double score submission when auto-retrying via perfect mod
Closes https://github.com/ppy/osu/issues/26035.

`submitOnFailOrQuit()`, as the name suggests, can be called both when
the player has failed, or when the player screen is being exited from.
Notably, when perfect mod with auto-retry is active, the two happen
almost simultaneously.

This double call exposes a data race in `submitScore()` concerning the
handling of `scoreSubmissionSource`. The race could be experimentally
confirmed by applying the following patch:

diff --git a/osu.Game/Screens/Play/SubmittingPlayer.cs b/osu.Game/Screens/Play/SubmittingPlayer.cs
index 83adf1f960..76dd29bbdb 100644
--- a/osu.Game/Screens/Play/SubmittingPlayer.cs
+++ b/osu.Game/Screens/Play/SubmittingPlayer.cs
@@ -228,6 +228,7 @@ private Task submitScore(Score score)
                 return Task.CompletedTask;
             }

+            Logger.Log($"{nameof(scoreSubmissionSource)} is {(scoreSubmissionSource == null ? "null" : "not null")}");
             if (scoreSubmissionSource != null)
                 return scoreSubmissionSource.Task;

@@ -237,6 +238,7 @@ private Task submitScore(Score score)

             Logger.Log($"Beginning score submission (token:{token.Value})...");

+            Logger.Log($"creating new {nameof(scoreSubmissionSource)}");
             scoreSubmissionSource = new TaskCompletionSource<bool>();
             var request = CreateSubmissionRequest(score, token.Value);

which would result in the following log output:

	[runtime] 2024-01-02 09:54:13 [verbose]: scoreSubmissionSource is null
	[runtime] 2024-01-02 09:54:13 [verbose]: scoreSubmissionSource is null
	[runtime] 2024-01-02 09:54:13 [verbose]: Beginning score submission (token:36780)...
	[runtime] 2024-01-02 09:54:13 [verbose]: creating new scoreSubmissionSource
	[runtime] 2024-01-02 09:54:13 [verbose]: Beginning score submission (token:36780)...
	[runtime] 2024-01-02 09:54:13 [verbose]: creating new scoreSubmissionSource
	[network] 2024-01-02 09:54:13 [verbose]: Performing request osu.Game.Online.Solo.SubmitSoloScoreRequest
	[network] 2024-01-02 09:54:14 [verbose]: Request to https://dev.ppy.sh/api/v2/beatmaps/869310/solo/scores/36780 successfully completed!
	[network] 2024-01-02 09:54:14 [verbose]: SubmitSoloScoreRequest finished with response size of 639 bytes
	[network] 2024-01-02 09:54:14 [verbose]: Performing request osu.Game.Online.Solo.SubmitSoloScoreRequest
	[runtime] 2024-01-02 09:54:14 [verbose]: Score submission completed! (token:36780 id:20247)
	[network] 2024-01-02 09:54:14 [verbose]: Request to https://dev.ppy.sh/api/v2/beatmaps/869310/solo/scores/36780 successfully completed!
	[network] 2024-01-02 09:54:14 [verbose]: SubmitSoloScoreRequest finished with response size of 639 bytes
	[runtime] 2024-01-02 09:54:14 [error]: An unhandled error has occurred.
	[runtime] 2024-01-02 09:54:14 [error]: System.InvalidOperationException: An attempt was made to transition a task to a final state when it had already completed.
	[runtime] 2024-01-02 09:54:14 [error]: at osu.Game.Screens.Play.SubmittingPlayer.<>c__DisplayClass30_0.<submitScore>b__0(MultiplayerScore s) in /home/dachb/Documents/opensource/osu/osu.Game/Screens/Play/SubmittingPlayer.cs:line 250

The intention of the submission logic was to only ever create one
`scoreSubmissionSource`, and then reuse this one if a redundant
submission request was made. However, because of the temporal proximity
of fail and quit in this particular case, combined with the fact that
the calls to `submitScore()` are taking place on TPL threads, means that
there is a read-write data race on `scoreSubmissionSource`, wherein the
source can be actually created twice.

This leads to two concurrent score submission requests, which, upon
completion, attempt to transition only _the second_
`scoreSubmissionSource` to a final state (this is because the API
success/failure request callbacks capture `this`, i.e. the entire
`SubmittingPlayer` instance, rather than the `scoreSubmissionSource`
reference specifically).

To fix, ensure correct synchronisation on the read-write critical
section, which should prevent the `scoreSubmissionSource` from being
created multiple times.
2024-01-02 10:55:52 +01:00
Bartłomiej Dach
b0cfea4916
Fix standardised score conversion failing for some taiko scores due to overestimating accuracy portion
Standardised score conversion would return a negative total score for
https://osu.ppy.sh/scores/taiko/182230346.

The underlying reason for this is that the estimation of the accuracy
portion for a score can be above the actual accuracy portion in the
taiko ruleset.

When calculating the maximum accuracy portion achievable,
`TaikoLegacyScoreSimulator` will include the extra 300 points from
a double hit on a strong hit, per strong hit. However, this double hit
is not factored into accuracy.

Both of the aforementioned facts mean that in taiko

	maximumLegacyAccuracyScore * score.Accuracy

- which normally in other rulesets can be used pretty reliably as the
exact number of points gained from the accuracy portion - is an
estimate in the case of taiko, and an _upper_ estimate at that,
because it implicitly assumes that the user has also hit
`score.Accuracy` percent of all double hits possible in the beatmap. If
this assumption is not upheld, then the user will have earned _less_
points than that from the accuracy portion, which means that the combo
proportion estimate will go below zero.

It is possible that this has happened on other scores before, but did
not result in the total score going negative as the accuracy portion
gained would have counteracted the effect of that due to being larger in
magnitude than the score loss incurred from the negative combo
portion. In the case of the score in question this was not the case due
to very low accuracy _and_ very low max combo.
2024-01-02 10:11:49 +01:00
Dean Herbert
94531807e4
Make slider ends show on results screen again 2024-01-02 17:01:32 +09:00
iilwy
fbedcb29e4
Merge branch 'master' into fix-precision 2024-01-01 10:42:15 -06:00
CaffeeLake
ad4b5f6ded Fix: floating point errors
Signed-off-by: CaffeeLake <PascalCoffeeLake@gmail.com>
2024-01-01 08:32:21 +09:00
Salman Ahmed
34acb435b8
Merge branch 'master' into multiplier1x 2023-12-31 16:48:00 +03:00
Dean Herbert
e10733834b
Merge pull request #26201 from iminlikewithyou/menu-button-tweaks
Adjust menu buttons
2023-12-31 16:58:55 +09:00
Dean Herbert
68b1455257
Merge pull request #26267 from frenzibyte/fix-audio-offset-adjust-control
Fix suggested value in audio offset adjust control being opposite in signs
2023-12-31 16:32:13 +09:00
iminlikewithyou
5ae5d7f92d change floor to round 2023-12-30 23:59:47 -06:00
Salman Ahmed
4dc11c4c48 Update existing code to use helper method 2023-12-31 05:18:07 +03:00
Salman Ahmed
7cfb786b1a Add helper method for properly formatting score multiplier in ModUtils 2023-12-31 05:17:34 +03:00
Gabriel Del Nero
922b6ccb83
Use FontAwesome solid heart icon instead of OsuIcon's 2023-12-31 00:36:55 +01:00
iminlikewithyou
45f6c78314 Merge branch 'master' of https://github.com/ppy/osu into menu-button-tweaks 2023-12-30 12:58:10 -06:00
iminlikewithyou
452f201f06 use margins isntead of moving the position of the sprite 2023-12-30 12:56:38 -06:00
Salman Ahmed
e6fe631625 Fix suggested value in audio offset adjust control being opposite in signs 2023-12-30 21:34:37 +03:00
Salman Ahmed
cc89390ea8 Expose SuggestedOffset bindable for testing purposes 2023-12-30 21:33:03 +03:00
CaffeeLake
bca0600482 Use 0.99x or 1.01x
Signed-off-by: CaffeeLake <PascalCoffeeLake@gmail.com>
2023-12-31 00:47:09 +09:00
Dan Balasescu
807443b648
Add HitResult.SliderTailHit 2023-12-30 10:38:47 +09:00
Dean Herbert
0fa4cd5dfe
Merge pull request #26225 from peppy/new-menu-tips
Add some new menu tips (and reword some others)
2023-12-29 22:27:47 +09:00
Dean Herbert
61c46b78bd
Update MenuTip.cs
Co-authored-by: Salman Ahmed <frenzibyte@gmail.com>
2023-12-29 22:24:16 +09:00
Dean Herbert
9f0fe6c6ca
Fix common typos
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2023-12-29 22:20:29 +09:00
Dean Herbert
d00b7c9cdf
Add some new menu tips (and reword some others) 2023-12-29 22:14:51 +09:00
Bartłomiej Dach
f80f6a8c5b
Merge pull request #26207 from frenzibyte/fix-dropdown-colour
Fix dropdown colour not updating correctly on enabled state changes
2023-12-29 14:07:09 +01:00
Bartłomiej Dach
17753b8235
Remove opaque background from toolbar user button
Would close https://github.com/ppy/osu/issues/26223, and generally seems
more consistent with the rest of toolbar anyhow?
2023-12-29 13:49:11 +01:00
Dean Herbert
490c584982
Merge pull request #26222 from bdach/i-cannot-into-offsets
Fix global audio offset suggestion feature not taking previous offset value into account
2023-12-29 21:14:52 +09:00
Dean Herbert
2b81f4f557
Merge pull request #26221 from bdach/system-title-only-on-top-level-menu
Do not display system title in inital menu state
2023-12-29 21:13:40 +09:00
Bartłomiej Dach
cdcb3ef4aa
Fix global audio offset suggestion feature not taking previous offset value into account
See https://osu.ppy.sh/comments/2989193 etc.
2023-12-29 12:20:58 +01:00
Dan Balasescu
9548818a1b
Merge pull request #26220 from bdach/no-version-manager-on-deployed-builds
Do not show main menu version display on deployed builds
2023-12-29 19:54:30 +09:00
Bartłomiej Dach
db78d73fa5
Do not display system title in inital menu state
Addresses https://github.com/ppy/osu/discussions/26199.
2023-12-29 11:50:30 +01:00
Bartłomiej Dach
25fa76a1b2
Do not show main menu version display on deployed builds
See https://discord.com/channels/188630481301012481/188630652340404224/1190028102525530202.
2023-12-29 11:14:28 +01:00
Bartłomiej Dach
99cddb6317
Use alternative workaround 2023-12-29 11:07:45 +01:00
Bartłomiej Dach
cd1f6b46c4
Fix crash after changing audio track in editor
Closes https://github.com/ppy/osu/issues/26213.

Reproduction scenario: switch audio track in editor after timeline
loads.

Happens because `beatmap.Value.Track.Length` is 0 immediately after a
track switch, until BASS computes the actual track length on the audio
thread.

Yes this is a hack. No I have no better immediate ideas how to address
this otherwise.
2023-12-29 10:37:36 +01:00
Dan Balasescu
a6313c4ee8
Expose Mod.UsesDefaultConfiguration 2023-12-29 17:16:16 +09:00
Salman Ahmed
c147ec0a98 Update dropdown disabled state to match with other components 2023-12-29 05:31:13 +03:00
Salman Ahmed
150bf67064 Fix dropdown colour not updating correctly on enabled state changes 2023-12-29 05:30:50 +03:00
Nitrous
c68a850325
Make menu tip about mod select more up to date. 2023-12-29 08:51:54 +08:00
iminlikewithyou
51d26d2d71 make the hover scale bigger
as a consequence, the rotation needs to be tweaked to be lower
2023-12-28 17:20:44 -06:00
iminlikewithyou
f1f1221e0e move text left to be visually centered in the skewed rectangle 2023-12-28 17:18:41 -06:00
iminlikewithyou
4760c6aaee move icon upwards to be visually centered 2023-12-28 17:17:24 -06:00
iminlikewithyou
637119f7d4 increase the base size of button icons 2023-12-28 17:15:23 -06:00