1
0
mirror of https://github.com/ppy/osu.git synced 2024-09-29 12:07:25 +08:00
Commit Graph

3425 Commits

Author SHA1 Message Date
Bartłomiej Dach
6948035a3c
Ensure score submission attempt completion before notifying spectator server when exiting play early
When a `SubmittingPlayer` gameplay session ends with the successful
completion of a beatmap, `PrepareScoreForResultsAsync()` ensures that
the score submission request is sent to and responded to by osu-web
before calling `ISpectatorClient.EndPlaying()`.

While previously this was mostly an implementation detail, this becomes
important when considering that more and more server-side flows (replay
upload, notifying about score processing completion) hook into
`EndPlaying()`, and assume that by the point that message arrives at
osu-spectator-server, the score has already been submitted and has been
assigned a score ID that corresponds to the score submission token.

As it turns out, in the early-exit path (when the user exits the play
midway through, retries, or just fails), the same ordering guarantees
were not provided. The score's submission ran concurrently to the
spectator client `EndPlaying()` call, therefore creating a network
race. osu-server-spectator components that implciitly relied on the
ordering provided by the happy path, could therefore fail to unmap the
score submission token to a score ID.

Note that as written, the osu-server-spectator replay upload flow is
not really affected by this, as it self-corrects by essentially polling
the database and trying to unmap the score submission token to a score
ID for up to 30 seconds. However, this change would have the benefit of
reducing the polls required in such cases to just one DB retrieval.
2022-12-21 22:23:26 +01:00
Dean Herbert
b64a5cbda6 Merge branch 'master' into guard-url-protocols 2022-12-19 15:46:45 +09:00
Bartłomiej Dach
fea0895f16
Call spectator EndPlaying() immediately after score submission
As it turns out, in current `master`, if a gameplay session ends
normally (i.e. by the player completing the beatmap in full), then
the spectator server `EndPlaying()` method will not be called until
`SubmittingPlayer.OnExiting()`, which in practice turns out to be
the moment where the user exits from the post-gameplay results screen
back to song select.

There is seemingly no reasonable cause for not calling this earlier. In
fact the solo spectator flow looks more broken without this call than
with, because without it the spectator view just hangs until the
spectated player exits gameplay, and *only then* shows results, rather
than do it upon normal gameplay completion.
2022-12-17 21:35:43 +01:00
Dean Herbert
27c497145f Fix the MOTHERLOAD of undetected issues that are now visible thanks to net6.0 2022-12-16 18:16:26 +09:00
Dan Balasescu
caa0b7c290 Move score token to BeginPlaying 2022-12-12 13:59:27 +09:00
Dan Balasescu
4a65f5c864 Add score token to spectator state 2022-12-09 19:09:51 +09:00
mk56-spn
fc630165fd Adjust formatting of BPM text 2022-12-06 15:08:21 +01:00
mk56-spn
f69c084969 Add roll duration 2022-12-05 17:08:00 +01:00
mk56-spn
b6a6db1160 Add dynamic BPM counter to SkinEditor 2022-12-05 12:29:23 +01:00
Dean Herbert
896f2d8f74 Fix multiple instances of last hitobject time being calculated incorrectly 2022-12-01 18:04:06 +09:00
Bartłomiej Dach
894ef15e79
Merge branch 'master' into update-framework 2022-11-26 16:19:36 +01:00
Dan Balasescu
7bc8908ca9 Partial everything 2022-11-27 00:00:27 +09:00
Dean Herbert
53b03df93d Combine TriangleButton and RoundedButton classes 2022-11-24 16:26:57 +09:00
Dean Herbert
b381b4fd2d Merge branch 'master' into update-framework 2022-11-24 01:27:58 +09:00
Dean Herbert
06ce8130c2 Apply changes in line with framework NRT updates 2022-11-18 18:13:15 +09:00
Dean Herbert
d59befc9d3 Fix initial visual state of positions before sort runs 2022-11-18 16:08:27 +09:00
Dean Herbert
aff218dfd5 Redirect through validity function rather than overriding Sort 2022-11-18 16:03:40 +09:00
Dean Herbert
20af8217f4 Tidy up bindable flow 2022-11-18 15:50:41 +09:00
Dean Herbert
e4f522aad1 Fix inspections / typos 2022-11-18 15:47:37 +09:00
Dean Herbert
d17c091d63 Move constant to a better location 2022-11-18 15:47:31 +09:00
Dean Herbert
3faa7f5f74
Merge branch 'master' into gameplay-leaderboard-fix 2022-11-18 15:44:30 +09:00
Dan Balasescu
219d049edf
Merge pull request #21140 from maromalo/long-standard
Standardise scores to `long` type
2022-11-18 15:26:33 +09:00
Dan Balasescu
57b8495c7a Merge branch 'master' into long-standard 2022-11-18 14:24:04 +09:00
Dean Herbert
e4d134a820 Reduce time waited on a score submission token from 60 to 30s 2022-11-18 14:07:40 +09:00
Dawid Sośnia
0dbf491872
Merge branch 'master' into gameplay-leaderboard-fix 2022-11-17 22:06:51 +01:00
Piggey
eb691266c1 cleanup 2022-11-17 21:50:39 +01:00
Piggey
fa00fc5c6d change scoresType to be a bindable 2022-11-17 13:27:56 +01:00
Piggey
dea2a6ed8d override sort() function in SoloGameplayLeaderboard 2022-11-17 12:12:36 +01:00
Dean Herbert
489dca79a1 Remove upper limit for pooling 2022-11-15 12:31:25 +09:00
Dean Herbert
308ed1abd1 Fix number of judgements shown potentially exceeding upper limit 2022-11-15 12:31:25 +09:00
Dean Herbert
59a8603728 Ensure flowing animation starts correctly from zero 2022-11-15 12:04:40 +09:00
Dean Herbert
aef6ee23eb Apply pooling support to ColourHitErrorMeter 2022-11-15 12:04:40 +09:00
Dean Herbert
a86b50d62a Apply nullability to BarHitErrorMeter 2022-11-15 11:33:27 +09:00
Dean Herbert
576f462f59 Add pooling support to BarHitErrorMeter 2022-11-15 11:33:27 +09:00
maromalo
1911120afe
Merge branch 'master' into long-standard 2022-11-12 09:52:11 -03:00
Dan Balasescu
db25e9e9c8 Merge branch 'master' into combo-colour-brightness-limit 2022-11-11 15:31:28 +09:00
Piggey
0011f4e7be fix comment lol 2022-11-09 19:59:04 +01:00
Piggey
ab53fb17d3 change displayed text from #? to - 2022-11-09 19:53:36 +01:00
Dean Herbert
1aa0e40f2f Add "Component" prefix to lookup naming 2022-11-09 17:46:43 +09:00
Dean Herbert
e75c3b3f94 Rename SkinnableTarget to GlobalSkinLookup 2022-11-09 17:46:43 +09:00
Piggey
d48c56818f change positionText to display "#?" if tracked score is being 51st on the leaderboard 2022-11-08 20:02:21 +01:00
maromalo
8eef2ba8de quality shenanigans 2022-11-06 20:12:26 -03:00
maromalo
b7ef9b176d Make score type consistent 2022-11-06 19:59:27 -03:00
Bartłomiej Dach
84179fb087
Merge branch 'master' into combo-colour-brightness-limit 2022-11-05 16:48:56 +01:00
Dean Herbert
4154be6cda Adjust auto-skip to skip multiple times if necessary 2022-11-03 13:52:29 +09:00
Dean Herbert
aef3c7918c Add total skip count to SkipOverlay 2022-11-03 13:52:24 +09:00
Dean Herbert
3ec9686e58 Fix test failures and rename configuration value to match better 2022-11-02 18:15:18 +09:00
Dean Herbert
37300ba9e2 Standardise "Visual Settings" components to fix mismatched paddings and labels 2022-11-02 14:01:57 +09:00
Dean Herbert
50b6fe4acb Localise new label 2022-11-02 14:01:03 +09:00
Dean Herbert
61fc3c8cc0 Add setting to visual settings toolbox 2022-11-02 13:58:34 +09:00
Dean Herbert
d8aa06ea92 Standardise "Visual Settings" components to fix mismatched paddings and labels 2022-11-02 13:55:56 +09:00
Dean Herbert
1035b5fb19 Fix hold to pause button not working when HUD is hidden 2022-10-30 21:38:45 +09:00
Joseph Madamba
87328dd1f5 Fix bar hit error meter labels not clearing when setting to none 2022-10-27 23:59:01 -07:00
Dean Herbert
71970d83cf Remove obsoleted ShowProgressGraph global setting
This was moved to the component itself.
2022-10-28 12:47:45 +09:00
Dean Herbert
6b26547d03
Merge pull request #20835 from frenzibyte/improve-hide-mouse-on-keyboard
Improve automatic cursor hiding logic and limit to gameplay screen
2022-10-20 11:44:20 +09:00
Dean Herbert
77b25c4a5c
Merge pull request #20788 from frenzibyte/handle-submitting-player-request-timeout
Fix potential exception in `SubmittingPlayer` token retrieval on request timeout
2022-10-20 09:51:57 +09:00
Salman Ahmed
4bf4938b72 Keep cursor hiding feature to gameplay screens for now 2022-10-20 03:44:58 +03:00
Dean Herbert
fbad33bef7 Adjust durations and make start off screen 2022-10-18 15:01:53 +09:00
Dean Herbert
0f809dcaa7 Merge branch 'master' into player-loader-improvements 2022-10-18 14:22:55 +09:00
Dean Herbert
516320edd9
Merge branch 'master' into handle-submitting-player-request-timeout 2022-10-17 18:51:13 +09:00
Dean Herbert
1e7b8cd227 Fix formatting issues 2022-10-17 13:22:06 +09:00
Salman Ahmed
ae05f374a2 Fix potential invalid operation exception in SubmittingPlayer token retrieval 2022-10-17 03:26:29 +03:00
outfoxxed
85de802793
Only create hit error bar icon containers once
Move icon container creation to BDL, and only recreate the contained
icon when `recreateLabels` is called
2022-10-16 11:47:21 -07:00
outfoxxed
d6030891a2
Reuse existing code in hit error bar fix
Use `UprightAspectMaintainingContainer` instead of a local fix for
hit error bar orientation
2022-10-16 10:06:38 -07:00
outfoxxed
cd1885a17b
Fix hit error bar icon orientation
Icons now keep their original orientation when the hit error bar is
flipped
2022-10-16 02:55:10 -07:00
Dean Herbert
3645269108 Improve logo transition and reduce delay of exiting player loader in optimal conditions 2022-10-13 17:29:47 +09:00
Dean Herbert
b33935e392 Fix player loading screen settings scaling in
This always looked weird, and from the looks of the structure was
probably unintentional from the start (it is in the logo tracking
container for whatever reason).
2022-10-13 17:12:36 +09:00
Dean Herbert
0f4a2a6059 Improve feel of settings toolbox group 2022-10-13 16:36:19 +09:00
Dean Herbert
c9b4cacc20
Merge pull request #20724 from mk56-spn/Highest_Combo_Counter
Add "longest combo" counter to HUD components.
2022-10-13 12:26:49 +09:00
Dean Herbert
19f3810020 Revert namespace change
Let's not
2022-10-12 18:50:47 +09:00
Dario Headley
b72c8970eb Max Combo Counter added 2022-10-12 09:50:01 +02:00
Dean Herbert
d2d589a156 Expose HUD state via Player 2022-10-12 15:11:52 +09:00
Dean Herbert
20adc522b9 Fix HUD components being interactive even when the HUD is visually hidden 2022-10-10 16:05:41 +09:00
Dan Balasescu
c18d4afdcc Merge branch 'master' into fix-leaderboard-first-place-fade 2022-10-07 19:55:16 +09:00
Dan Balasescu
57e4d6cc4a
Merge pull request #20562 from peppy/fix-score-submission-crash
Fix potential crash when score submission token retrival fails
2022-10-07 19:24:35 +09:00
Dean Herbert
276021dd85 Remove now unnecessary ScheduleAfterChildren 2022-10-05 14:20:01 +09:00
Dean Herbert
42aac16b37 Adjust leaderboard score panels sizing based on accuracy/combo width 2022-10-03 18:12:36 +09:00
Dean Herbert
65369e96eb Ensure token retrieval failure logic only runs once 2022-10-03 17:29:46 +09:00
Dean Herbert
c4dd23ed15 Log token retrieval failures even when gameplay is allowed to continue 2022-10-03 17:29:34 +09:00
Dean Herbert
4dbac917fc
Merge pull request #20547 from nanashi-1/solo-gameplay-leaderboard-max-combo
Display highest combo rather than current combo for local play on leaderboard
2022-10-03 16:57:05 +09:00
Salman Ahmed
a810afafb3 Reschedule results display delegate to avoid potential softlocks in the future 2022-10-02 15:37:56 +03:00
Salman Ahmed
59728b0ccb Fix results display delegate potentially cancelled while not exiting 2022-10-02 15:30:06 +03:00
nanashi-1
2493468800 display highest combo instead of current combo 2022-10-02 18:40:31 +08:00
Dean Herbert
cbbca616c1 Merge branch 'master' into fix-leaderboard-first-place-fade 2022-09-28 17:58:45 +09:00
Dean Herbert
cdcc8494c9 Fix fade being applied for too long when leaderboard scrolls to start 2022-09-28 16:10:19 +09:00
Dean Herbert
c8643ed265 Set ClampExtension to zero to stop jittering 2022-09-28 15:58:00 +09:00
Dean Herbert
8edb1cb98a Add test coverage of current score staying on screen 2022-09-28 15:57:50 +09:00
Dean Herbert
0296685c74 Start key counter / gameplay leaderboard hidden to avoid initial fade out 2022-09-27 17:25:24 +09:00
Dean Herbert
320f134634 Use same logic as KeyCounterDisplay 2022-09-27 15:01:18 +09:00
nanashi-1
5d18001d75 move config 2022-09-26 21:11:38 +08:00
nanashi-1
4295d9c169 revert 2022-09-26 21:11:14 +08:00
nanashi-1
ee4d1b2d58 add config visibility 2022-09-26 20:13:07 +08:00
Dean Herbert
20da1051d9 Apply NRT to GameplayLeaderboard hierarchy
Just some cleanup work that I wanted to do as part of my last changes.
2022-09-26 16:21:24 +09:00
o-dasher
feadac1f79 Cleanup all other leftover binding instantiation 2022-09-25 16:02:40 -04:00
Dan Balasescu
1d1012e196
Merge pull request #20286 from peppy/gameplay-leaderboards
Add basic gameplay leaderboard display
2022-09-22 21:16:12 +09:00
Dan Balasescu
445e026a32
Merge pull request #20389 from peppy/fix-gameplay-leaderboard-layout
Fix gameplay leaderboard sometimes not showing up
2022-09-22 20:51:54 +09:00
Dean Herbert
8f7a306d81 Inline comment regarding margin necessity 2022-09-22 19:53:16 +09:00
Dean Herbert
f0dcda9acc Decrease precision of spacing setting 2022-09-22 15:49:02 +09:00
Dean Herbert
26d98323ff Fix bindable flow, code quality, everything 2022-09-22 15:45:23 +09:00
Dean Herbert
0f663deda0 Fix changing shape causing alpha to be permanently reset to zero 2022-09-22 15:24:57 +09:00