github ppy/osu 2024.519.0

latest releases: 2024.1115.0, 2024.1104.0, 2024.1023.0...
5 months ago

Audio

Reduce startup volume (#28031 by @peppy)

Constant complaints about startup volume mean we should reduce it further and let users adjust as they see fit.

Values are from matching roughly with Apple Music volume of the same song, which should be a good guideline for not overpowering other things on system.

Smaller changes

  • Fix preview tracks playing after their owning overlay has hidden (#27898 by @bdach)

Editor

Add a chevron to distinguish editor menus with submenus (#27974 by @peppy)

Before After

Preserve storyboard events when saving a beatmap in the editor (#28033 by @peppy)

Until we have full encoding support for storyboards, this stop-gap measure ensures that storyboards don't just disappear from existence. Without this, saving a beatmap in the editor removes all local storyboard content (ie. anything in the .osu file). The most noticeable is any video background.

Smaller changes

  • Improve performance in timing setup screen (#27958 by @EVAST9919)
    • |master|pr|
      |---|---|
      |osu_2024-04-21_17-42-22|osu_2024-04-21_17-43-25|
  • Add verify checks for incorrect audio formats (#27895 by @64ArthurAraujo)
  • Fix deleting modified difficulty via editor leaving user in broken state (#27996 by @bdach)
    • If the difficulty being edited has unsaved changes, the editor exit flow would prompt for save after the deletion method has run. This is undesirable from a UX standpoint, and also leaves the user in a broken state.
  • Fully refetch working beatmap when entering editor (#27997 by @bdach)
  • Fix adding slider control points via context menu not undoing correctly (#27993 by @bdach)
  • Fix changing distance spacing multiplier hiding the distance snap grid when it's already shown (#28066 by @bdach)
  • Improve slider placement performance (#28102 by @EVAST9919)
  • Reduce container nesting inside PathControlPointPiece (#28205 by @EVAST9919)

Framework

Fix texture memory leak in Direct3D (ppy/osu-framework#6250 by @smoogipoo)

If you were seeing sluggish performance the longer the game was running (and potentially switched your renderer as a result), please give direct3d another chance!

Upgrade to SDL3 (#27815 by @Susko3)

Migrate Android framework to SDL (ppy/osu-framework#6105 by @hwsmm)

Removes a lot of legacy code and means we have less things to worry about with android.

Smaller changes

Gameplay

Tweak resume overlay to allow better visibility of hit objects underneath (#28050 by @peppy)

This change decreases alpha as the count proceeds. It also adds an initial delay before the countdown starts, to make things feel a bit less jank when resuming gameplay. Had to restructure slightly to make that part work.

Don't hide playfield layer with HUD (#28062 by @peppy)

Touched on in #12039. I think this makes sense - things which are attached to the playfield are expected to always be attached and not disappear. Something like an osu!mania health bar.

This gives users a way to make elements always display (regardless of the HUD hide setting) which is also cool.

Improve storyboard performance by using native loop support (#27539 by @frenzibyte)

Smaller changes

  • Fix storyboard videos not accepting transforms (#27967 by @peppy)
    • In stable, storyboard videos can actually accept all kinds of transforms just like other sprites. That wasn't working until now.
  • Continue loading even when osu! logo is being dragged at loading screen (#28174 by @peppy)

Gameplay (osu!)

  • Add Traceable performance calculation support (#27148 by @Givikap120)
  • Fix resume overlay not appearing after pausing when mouse cursor is inside window but outside of actual playfield area (#27896 by @bdach)
  • Fix cursormiddle not using the same skin source as cursor (#27964 by @smoogipoo)
  • Fix touches on judged circles changing cursor position (#28167 by @smoogipoo)

Gameplay (osu!catch)

Fix gameplay PP counter not matching results screen (#27808 by @smoogipoo)

Gameplay (osu!mania)

Add more usable osu!mania touch input system (#28173 by @peppy)

This takes smoogi's previous effort (#27790) and presents it in a state where it can be merged without skin configurability concerns. I've left the configurable settings in code for exposing in the future.

I've made changes to bring it more in line with how taiko's touch area system was implemented for conformity. The major change is that it no longer uses the presence of touch mod to decide whether to display (and can now be summoned using a mouse click or touch).

Do not change mania column width on mobile platforms (#28186 by @bdach)

With the new touch overlay, this doesn't make as much sense.

Input

  • Implement focus traps (ppy/osu-framework#6286 by @smoogipoo)
    • By extracting focus-management logic out of InputManager, we can implement something akin to a focus trap. Components can trap the focus management (ChangeFocus()/TriggerFocusContention()) of their subcomponents to add supplementary logic.

This PR features a partial redesign of Dropdown making use of this. There are two components wanting to manage focus here - the Menu and the TextBox.

  • The Menu's focus is trapped by Dropdown and reduced to a no-op.
  • The TextBox's focus is trapped within DropdownSearchBox to perform additional functionality such as opening the dropdown on focus, selecting items on commit, clearing text on escape, etc.

This is not a breaking change, but I've obsoleted InputManager.TriggerFocusContention() and InputManager.ChangeFocus() partially to make this easy to test.

Main Menu

  • Fix incorrect background being loaded due to async race (#28040 by @peppy)
    • If the API login (and thus user set) completed between load and LoadComplete, the re-fetch on user change would not yet be hooked up, causing an incorrect default background to be used instead.

Of note, moving this out of async load doesn't really affect load performance as the bulk of the load operation is already scheduled and LoadComponentAsynced anyway

  • Randomise which menu content is shown on arriving at the menu (#28127 by @peppy)
    • Many users don't spend much time at the main menu, so let's randomise where in the carousel of available images we start at to give each a fair chance.

Multiplayer

Apply chat filters to room name when editing multiplayer room settings (ppy/osu-server-spectator#227 by @bdach)

Fix audio being paused in a spectator session when all players finish playing (#28003 by @peppy)

Better signify private rooms by showing a different status pill design (#28080 by @peppy)

Smaller changes

Network

  • Allow insecure requests on debug builds via OSU_INSECURE_REQUESTS environment variable (ppy/osu-framework#6283 by @smoogipoo)
      • Adds the environment variable (OSU_INSECURE_REQUESTS).
  • WebRequest.AllowInsecureRequests updated to act as an override of the environment variable.
  • Added validation to OnlineStore.GetAsync(). This existed originally but was removed and incorrectly reverted at some point. Can't seem to pinpoint the exact commit where this happened.
  • Adjusted OnlineStore to check for either http or http schemes. Added tests.

WIki entry: https://github.com/ppy/osu-framework/wiki/Environment-variables#osu_insecure_requests

Online

  • Use hash rather than online ID as primary lookup key when presenting score (#28171 by @bdach)
    • If inclined to test this manually, here's a pair of replays that should demonstrate the issue: example-replays.zip

One should have cursor movement start-to-end (client-side recording), one should have no movement for the first half a minute or so and then resume playback after (server-side recording after a restart)

  • Fix discord arbitrarily refusing to work on "too short" strings (#28193 by @bdach)

Performance

  • Fix high memory usage during spectator modes when background processing is running (#27891 by @peppy)
  • Don't redraw Path on colour invalidation (ppy/osu-framework#6276 by @EVAST9919)
  • Set a rudimentary lifetime end to improve seek performance in scrolling rulesets (#28170 by @peppy)

Platform

  • Check realm file can be written to before attempting further initialisation (#28019 by @peppy)
    • Rather than creating a "corrupt" realm file in such cases, the game will now refuse to start. This behaviour is usually what we want. In most cases a second click on the game will start it successfully (the previous instance's file handles are still doing stuff, or windows defender is being silly).
  • Fix filenames containing japanese not being read correctly (#28034 by @peppy)

Reliability

  • Globally silence Discord RPC registration failures (#27908 by @smoogipoo)
  • Update local metadata lookup cache more often (#28067 by @bdach)

Results

Add ability to quick exit from results screen (#27922 by @peppy)

Smaller changes

  • Fix replay export not working correctly from online leaderboards (#27866 by @Joehuu)
  • Stop showing non-timed results in timing distribution graph (#27994 by @bdach)

Scoring

Store total score without mod multipliers to local database and to replays, and send it on score submission (#27912 by @bdach)

Groundwork for adjusting mod multipliers in the future.

Smaller changes

  • Preserve score rank on lazer scores during encode/decode (#28058 by @frenzibyte)
  • Do not lookup usernames for scores without an online ID (#28082 by @bdach)
  • Persist user ID to replay data (#28119 by @bdach)

Settings

Update bundled beatmaps (#28128 by @peppy)

Provided courtesy of pishifat and the mappers' guild.

Note that this increases the number of bundled map downloads – I think this is okay.

I did add a new text line to let users know they can continue with game setup, as I have seen countless people wait at this screen for the progress bar to fill before moving on. I want to improve the screen further but this is a minimum requirement for adding more bundled beatmaps to the mix.

Add setting to allow hiding all country flags (#28144 by @peppy)

There have been enough requests for this at this point to implement it. Required for some countries which have outlawed displaying some flags.

Smaller changes

  • Do not show integration settings on mobile (#28116 by @bdach)
    • The settings weren't actually doing anything at all there anyway.

Skin Editor

Autosave edited skin on skin change (#28030 by @bdach)

Automatically choose origin (along with anchor) to make skin editor placement easier for users (#28089 by @peppy)

Users still don't really understand anchors and origins (and I kinda don't blame them – as a concept it takes a bit of brain power to get right), so let's choose for them in most cases and take the guesswork out of it.

Smaller changes

  • Fix settings colour scheme wrong when viewing gameplay from skin editor button (#27973 by @peppy)
  • Add ability to show beatmap source using skin editor's beatmap attribute text (#27978 by @peppy)
  • Fix BeatmapAttributeText breaking due to enum serialisation woes (#28083 by @bdach)
  • Fix sizing of gameplay preview in skin editor not updating on scaling mode change (#28118 by @bdach)

Song Select

  • Don't re-filter unless mods may change the filter (#27881 by @smoogipoo)
  • Do not attempt to preserve incompatible system mods when activating mod presets (#28095 by @cdwcgt)
  • Add mod display and unranked indicator to new song select footer (#28141 by @frenzibyte)
    • For future use.
  • Improve animation of new song select footer buttons (#28142 by @frenzibyte)
    • For future use.
  • Add glow to footerV2 buttons (#28154 by @tomm13)
    • For future use.
  • Rename and move new footer classes to appropriate places (#28182 by @frenzibyte)

UI

Fix toolbar volume bar looking weird at low volume levels (#27853 by @Drison64)

Add chevron to distinguish menus with submenus (#27982 by @Joehuu)

Fix beatmap listing cards being far too large (#28074 by @peppy)

I'm going to start fixing these locally to the screens/elements which look out of place, one at a time.

Before After

Fix chat overlay being far too large (#28075 by @peppy)

Before After

Scroll now playing overlay text when overflowing (#28017 by @Joehuu)

Before After
Kapture 2024-04-27 at 20 25 31

Takes inspiration of Winamp (Classic skin) and Apple Music:
Kapture 2024-04-27 at 20 37 12 Kapture 2024-04-27 at 20 38 33

Allow using right click in dropdown menus to toggle state without closing menu (#28086 by @424ever)

menu.webm

Make deletion confirmation less confusing (#28122 by @Ekischleki)

This also has the neat side effect, of allowing localisation for deletion confirmation content

Before After
image image

Update logo to new version "v4b" (#28143 by @peppy)

Goodbye dot. Also adjusts metrics a bit based on user feedback.

Smaller changes

  • Fix missing underscore in invalid beatmap_hash notification message (#27845 by @Loreos7)
  • Fix stable scores showing with faded out pp display due to classic mod presence (#27877 by @bdach)
  • Add sound feedback to all tab controls when using keyboard interaction (#27909 by @frenzibyte)
  • Fix mod search box not tracking external changes to focus state (#27780 by @mafarrica)
  • Fix mod select overlay columns not displaying properly sometimes (#27972 by @bdach)
  • Allow confirming keybinding overwrite on conflict via "select" binding (#27969 by @bdach)
  • Add missing space in setup wizard (#28014 by @TTTaevas)
  • Stop using visually noisy bg4 for default backgrounds (#28078 by @peppy)
    • This has always really annoyed me. The illustration doesn't match what the background is visualising (a fallback when nothing else is available).
  • Fix beatmap backgrounds loading default briefly before final display (#28079 by @peppy)
    • | Before | After |
      | :---: | :---: |
      | 2024-05-03 13 47 07 | 2024-05-03 13 46 04 |
  • Use existing AutomaticallyDownloadMissingBeatmaps localisation on solo spectator screen (#28109 by @Joehuu)
  • Fix now playing overlay text scroll breaking when toggling metadata language setting (#28111 by @Joehuu)
  • Localisation updates (ppy/osu-resources#322 by @peppy)
  • Fix duplicated localisation key in DeleteConfirmationContentStrings (#28190 by @bdach)
  • Add "daily challenge" icon (ppy/osu-resources#324 by @bdach)
    • For future use :).
  • Fix checkboxes looking misaligned when placed next to a slider bar (#28201 by @frenzibyte)
    • | Before | After |
      |--------|-------|
      | CleanShot 2024-05-18 at 11 06 08 | CleanShot 2024-05-18 at 11 07 05 |

I just noticed this while working on this and it felt jarring. The padding existed for a very long time, and I couldn't find any reason for it. @peppy requesting your review because I'm not sure if this remains to be intentional.

New Contributors

Full Changelog: 2024.312.1...2024.519.0

Don't miss a new osu release

NewReleases is sending notifications on new releases.