github ppy/osu 2023.1008.0

latest releases: 2024.1104.0, 2024.1023.0, 2024.1018.0...
13 months ago

Behavioural

  • Add color search keyword for colour settings (#24948 by @NiceAesth)
  • Don't show replay import "missing beatmap" notifications during stable import (#24943 by @peppy)
  • Fix legacy beatmap importer not always handling nested paths correctly (#24998 by @peppy)

Code Quality

  • Tidy up LegacyLastTickOffset usages and stop passing everywhere (#24965 by @peppy)
  • Adjust clock usage in line with framework changes (#24885 by @peppy)
    • This removes four workarounds/hacks. Wow.
  • Fix some incorrect bindable-related code (#25028 by @peppy)
    • Came across these while doing a find-in-files for SettingSource usage, and WTFing at publicly settable bindables in most cases.

Also a few other inconsistencies, touched on in each commit message.

Editor

Flash dialog popup when attempting to exit editor while exit is being blocked (#24953 by @peppy)

Minor QoL, as i keep wondering for a split second why my cmd-w isn't closing the editor.

Framework

Gameplay

Add maximum dimensions limit to skinnable gameplay elements (#24706 by @frenzibyte)

This applies to osu! hit circles, taiko hits (drum rolls are already limited), and catch hit objects (fruits, bananas, and droplets). Mania is not included as I'm not even sure how to go about it (if I should).

Update classic scoring formula to closer match stable score V1 (#24924 by @bdach)

Lots of complex match, now classic scoring matches better than ever.

Implement redesigned health bar display for "Argon" skin (#24980 by @frenzibyte)

Smaller changes

  • Split legacy scoring attributes into their own table (#24779 by @smoogipoo)
  • Fix skin version being incorrectly set to 1.0 when skin is missing skin.ini (#24942 by @peppy)
  • Add GetDisplayScore() extension for SoloScoreInfo (#24957 by @bdach)
  • Adjust gameplay element maximum size limits for backwards compatibility (#25023 by @bdach)
  • Adjust argon health bar to fit with existing layout (#25030 by @peppy)
  • Add initial animation for health bars (#24986 by @peppy)
    • Pretty jank and I'm not sure how to make better, or how to get it matching stable. Probably need to make a subcomponent which is operating in game time to track the interpolation correctly. Main goal was to breathe some life back into things, so maybe this is fine as a first step.

Gameplay (osu!)

Cap maximum spinner RPM based on OD (#24932 by @smoogipoo)

The RPM required to clear spinners (i.e. minimum RPM) is unchanged from stable and the previous implementation:

OD RPM
0 90
5 150
10 225

With this PR, the RPM required to complete spinners becomes:

OD RPM
0 250
5 380
10 430

To come to these values, I've taken a mix of:

  • Watching players I could find on YouTube, trying to take a healthy mix of all skill levels.
  • My personal experience as what I would consider an "advanced" player but someone that has never cared about getting full score on spinners.
  • Spinning through a remote desktop connection + mouse. This artifically lowers my skill.

My (rough, biased, not rooted in absolute fact) observations from this are:

  • New players tend to range around 200-280 RPM.
  • Intermediate players tend to range around 250-320 RPM.
  • Advanced players tend to range around 320-380 RPM.
  • Expert players tend to sit comfortably around 450 RPM.
  • Even top players - those that are considered good at the game, tend to sit in the 300-400 RPM range

Keep in mind, however, that:

  • OD is skewed upwards such that it is more typical for even new players to see ODs >= 4. Those at the advanced level, for example, are usually going to see at least OD >= 7 (~405 RPM) which should still give them a bit of a challenge (at least they'll need to try).
  • Once you reach 6*, which is not considered hard these days, it's rare to see OD < 8.
  • RPM isn't consistent - there's ramp-up time whether caused by acceleration (stable) or by the player realising they need to start spinning.

Reduce approach circle's final opacity to match stable (#24964 by @peppy)

Turns out that approach circles were more visible on lazer until now. So let's bring them back in line with stable expectations.

Before After
osu! 2023-09-29 at 03 50 28 osu! 2023-09-29 at 03 50 01

Fix object dim being applied to approach circles (#24968 by @peppy)

Before After
osu Game Rulesets Osu Tests 2023-09-29 at 09 28 08 osu Game Rulesets Osu Tests 2023-09-29 at 09 27 35

Add edge highlight to "argon" slider repeat arrow (and improve all skins' reverse arrow animations) (#24990 by @peppy)

This addresses concerns about visibility of repeat arrows on short sliders by adding a border element which animated outwards.

I've also fixed multiple inconsistencies when compared to stable, including disabling beat sync and having the animation start as soon as the hit object appears. This helps massively with visibility, as otherwise the animation may not start until much later. It also looks better as every slider is not longer synchronised to the same animation cycle.

Smaller changes

Gameplay (osu!mania)

Adjust osu!mania "major" barlines to be less visually distracting (#24930 by @peppy)

Applies to both "triangles" and "argon" skins.

Before After
osu! 2023-09-26 at 07 59 07 osu! 2023-09-26 at 07 58 38

Gameplay (osu!taiko)

Allow judging at most one swell tick per frame (#25010 by @bdach)

This changes swell input handling such that only one swell tick can be judged in a given update frame. This is supposed to curtail cases wherein a user binds (either in-game, or via external tools) all four taiko actions to one key, to knock out four hits at a time with one key.

Performance

Reliability

Skinning

  • Crop oversized gameplay textures instead of downscaling them (#24975 by @frenzibyte)
      • Resolves mainly the "incorrect glyph rendering" part of #24973

This is a better approach to handle skins that have certain elements with extra empty space on all sides. Take this skin for example, observe the size of the hitcircle number elements:

The size is already larger than the specified maximum size for hit circles (128x128, which affects the glyph sprites). Cropping the texture from the centre fixes the issue. I've also refactored the max dimensions test scene to output upscaled textures all the way from the TextureLoaderStore for the visual test to be accurate.

Song Select

Reduce delay before loading beatmap after selection change at song select (#24929 by @peppy)

This was originally set high because of performance concerns. We have since improved things quite drastically. Even with a very low debounce my song select is amazingly smooth.

Storyboard

  • Fix storyboard UseSkinSprites being implemented incorrectly (#24861 by @peppy)
    • This was implemented as a "fallback", but it's actually intended to be an "override". As in it allows storyboarders to prefer a skin sprite before falling back to a local version contained within the storyboard.

UI

Fix SR/BPM display showing no info in multiplayer playlist rooms (#24922 by @Fabiano1337)

Improve notification display when score import fails (#24928 by @peppy)

Before After
osu! 2023-09-26 at 06 02 03 osu! 2023-09-26 at 06 03 57

Add the ability for mod icons to show extended information (#24954 by @peppy)

A remaining usability concern was players adjusting the rate of DT/HT, but this information being hidden when perusing leaderboards. We've changed how mod icons look to allow exposing this information when required.

osu! 2023-09-28 at 09 59 50
osu! 2023-09-28 at 10 00 25
osu! 2023-09-28 at 10 00 49
osu! 2023-09-28 at 10 00 58
osu! 2023-09-28 at 10 01 23

Smaller changes

Full Changelog: 2023.1004.0...2023.1008.0

Don't miss a new osu release

NewReleases is sending notifications on new releases.