osu icon indicating copy to clipboard operation
osu copied to clipboard

Song Select V2: Difficulty Slider end bit decolors too early

Open Lorsoen opened this issue 6 months ago • 6 comments

Type

Cosmetic

Bug description

Does not look coherent with carousel color scheme, where purple persists during 8 star maps.

Screenshots or videos

https://github.com/user-attachments/assets/93e8f46f-ac7e-4922-8d77-393b303e514c

Version

b597f3e

Logs

compressed-logs.zip

Lorsoen avatar May 30 '25 13:05 Lorsoen

https://github.com/ppy/osu/blob/9d3ee2a57340e6935ce6cd278f5cabbcd245b19f/osu.Game/Screens/SelectV2/FilterControl_DifficultyRangeSlider.cs#L158-L159

I can't tell if this was done intentionally or was typo'd because 9 stars is where black starts. @peppy do we just change this to 9?

bdach avatar May 30 '25 17:05 bdach

If things are still legible at 9 then changing it is fine, yes.

The cutoff was arbitrarily chosen by @frenzibyte, intending to be the point where it would stop being legible to read dark-on-dark.

peppy avatar May 30 '25 17:05 peppy

Any colour at 8* or afterwards becomes too dark for the nub, because it interpolates from the 7.7* dark purple to 9* black. One suggestion I can offer is to alter the spectrum such that the 9* black is replaced with the grey colour currently used instead:

diff --git a/osu.Game/Screens/SelectV2/FilterControl_DifficultyRangeSlider.cs b/osu.Game/Screens/SelectV2/FilterControl_DifficultyRangeSlider.cs
index 58c9c60460..9cc4bc7ac7 100644
--- a/osu.Game/Screens/SelectV2/FilterControl_DifficultyRangeSlider.cs
+++ b/osu.Game/Screens/SelectV2/FilterControl_DifficultyRangeSlider.cs
@@ -29,7 +29,13 @@ public partial class DifficultyRangeSlider : ShearedRangeSlider
 
             private static readonly (float, Color4)[] spectrum = OsuColour.STAR_DIFFICULTY_SPECTRUM
                                                                           .Skip(1)
-                                                                          .Prepend((0.0f, OsuColour.STAR_DIFFICULTY_SPECTRUM.ElementAt(1).Item2)).ToArray();
+                                                                          .Prepend((0.0f, OsuColour.STAR_DIFFICULTY_SPECTRUM.ElementAt(1).Item2))
+                                                                          .SkipLast(2)
+                                                                          .Concat(new[]
+                                                                          {
+                                                                              (9.0f, OsuColour.Gray(0.25f)),
+                                                                              (10f, OsuColour.Gray(0.25f)),
+                                                                          }).ToArray();
 
             public DifficultyRangeSlider()
                 : base("Star Rating")
@@ -155,9 +161,6 @@ protected override void UpdateDisplay(double value)
                     Colour4 nubColour = ColourUtils.SampleFromLinearGradient(spectrum, (float)Math.Round(value, 2, MidpointRounding.AwayFromZero));
                     nubColour = nubColour.Lighten(0.4f);
 
-                    if (value >= 8.0)
-                        nubColour = colours.Gray4;
-
                     Nub.AccentColour = nubColour;
                     Nub.GlowingAccentColour = nubColour.Lighten(0.2f);
                     Nub.ShadowColour = Color4.Black.Opacity(0.2f);

https://github.com/user-attachments/assets/998c4627-7698-441c-8e96-283860742ff8

Compared to the actual colours used in difficulties at such star ratings, this spectrum will give a greyed version instead.

frenzibyte avatar May 30 '25 18:05 frenzibyte

that diff above is probably fine

bdach avatar May 30 '25 18:05 bdach

If things are still legible at 9 then changing it is fine, yes.

The cutoff was arbitrarily chosen by @frenzibyte, intending to be the point where it would stop being legible to read dark-on-dark.

I don't want to pretend like I know better from the design team but I don't get why white is used in the first place. I would've assumed that the slider's color scheme would stay similar to the diff. color scheme. (website, carousel... Where yellow text starts on 6.5 diff.) but white text on 7+ diff doesn't correspond.

Text should be readable if it's mimicking the already known color diff. scheme.

Lorsoen avatar May 30 '25 20:05 Lorsoen

Video to show what I mean, done on a separate branch

https://github.com/user-attachments/assets/ac733c44-06cf-4361-9573-f76765789287

(numbs unselected)

Image

Lorsoen avatar May 31 '25 15:05 Lorsoen