Osu Versions Save

rhythm is just a *click* away!

2023.1221.0

5 months ago

Editor

Fix near zero-length sliders being placeable and crashing the game (ppy/osu#25916 by @OliBomby)

Gameplay

Adjust "classic" mod multiplier back up to 0.96x (ppy/osu#25934 by @peppy)

Following discussions on discord, this seems like the most agreed upon value. Increasing this is important so that imported legacy scores don't lose too much value.

Gameplay (osu!)

Allow failing with "relax" and "autopilot" mods (ppy/osu#25917 by @rushiiMachine)

A significant portion of players that play primarily using relax mod have asked for the ability to compile relax with other mods, such as "perfect". This wasn't possible until now as relax blocked failing.

This change allows both "relax" and "autopilot" mods to fail, and as a result allows combining "no fail", "perfect" and "sudden death" with them.

If you're a relax player and want to keep the mod as relaxing as you remember it to, you can make a mod preset with RX+NF!

Fix osu! standardised score conversion sometimes exceeding bounds (ppy/osu#25876 by @bdach)

Users reported that some stable scores would convert to large negative total scores in lazer after the introduction of combo exponent. Those large negative total scores were actually mangled NaNs.

(This fix was in yesterday's release)

Show slider tick / slider end misses with a visible judgement (ppy/osu#25951 by @peppy)

I mentioned adding this multiple times this week, so here it is. Design is placeholder in all cases.

Gameplay (osu!mania)

Remove mania mod multiplier for DT/NC (ppy/osu#25958 by @smoogipoo)

Discussed here and here

The general gist of it is that, right now DT and NC are seen more as a personal preference than mods that have any significant impact to scores. The 1M score cap is seen as "sacred" to the degree that these mods, whether the reader agrees with the idea that these are personal preference or not, are not significant enough to justify breaking the score cap.

I believe we've reached the amicable conclusion that we are not adverse to experimenting with mods and their effects, multipliers, and other ways to display scores for showcasing purposes.

One such idea proposed, is to see whether a DT/NC mod with fixed hitwindows becomes more worthy of having a mod multiplier, combined with a separate mod for the current hitwindow-affecting rate adjustment

But, that is for future work. For the time being, I'm satisfied with the conclusion and bringing things to a common ground that everyone can agree with is an objective point of reference.

Adjust mania scoring to be more in line with ScoreV2 + 85% acc / 15% combo (ppy/osu#25945 by @smoogipoo)

See feedback here and here

Gameplay (osu!taiko)

Restore taiko accuracy to ScoreV2 values (ppy/osu#25887 by @smoogipoo)

"Good"s are now worth 150 instead of 100, bringing things in line with osu!(stable) and TnT.

Reliability

  • Fix thread safety of OnlineMetadataClient.UserStates (ppy/osu#25931 by @peppy)

Song Select

Update song select to always show difficulty stats (ppy/osu#25898 by @peppy)

We have a larger redesign planned, but let's just get this in so people can easily see both leaderboards and beatmap stats.

This also sets the default display mode to local leaderboard, instead of details, as it's a better look.

Was a bit confusing until now. Even I hit this at least once.

CleanShot 2023-12-19 at 11 00 48

Fix song select running updates when screen is not active (ppy/osu#25943 by @peppy)

This is the reason some sound effects for selecting beatmaps were playing during gameplay.

This fixes the carousel making one unnecessary selection every time the current selection is updated. Basically, on returning from gameplay this will cause the selection sound to no longer (incorrectly) play, but also likely improves smoothness as it's not randomly selecting a beatmap somewhere in the carousel before correcting back to the retained selection.

New Contributors

Full Changelog: https://github.com/ppy/osu/compare/2023.1220.0...2023.1221.0

2023.1220.0

5 months ago

Code Quality

Don't convert TaikoModRandom to/from legacy mods (ppy/osu#25823 by @cl8n)

Gameplay (osu!)

Fix slider's sliding sample playing before start time (ppy/osu#25893 by @smoogipoo)

Online

Update packages for mod settings changes (ppy/osu-server-spectator#205 by @peppy)

Stop tracking build user counts when shutting down (ppy/osu-server-spectator#206 by @bdach)

Performance

Improve song select smoothness when running background processing (ppy/osu#25838 by @peppy)

Fix some beatmaps being reprocessed each startup (ppy/osu#25895 by @peppy)

Song Select

Fix incorrect ordering of items at song select when certain sort modes are used (ppy/osu#25888 by @peppy)

This is quite an unfortunate one, but I can't see a good way of fixing beyond undoing most of the performance gains from the last major release when certain sort modes (like difficulty sort) are used.

If you have a large library and want best search performance, use a simple sort mode for now (ie. artist or title). We'll iterate on this once things calm down.

Fix mod search textbox having focus while settings are visible (ppy/osu#25857 by @peppy)

UI

Fix opening log files from notification not presenting the correct file (ppy/osu#25871 by @Susko3)

Full Changelog: https://github.com/ppy/osu/compare/2023.1218.1...2023.1220.0

2023.1218.1

5 months ago

What's Changed

Also contains unmerged hotfixes:

New Contributors

Full Changelog: https://github.com/ppy/osu/compare/2023.1218.0...2023.1218.1

2023.1218.0

5 months ago

Code Quality

  • Make CircularProgressDrawNode and its properties protected (ppy/osu-framework#6060 by @EVAST9919)
  • Encapsulate common HP logic from osu and catch HP calculations (ppy/osu#25569 by @smoogipoo)
  • Uncomment .NET 6 logging code (ppy/osu-framework#6064 by @Susko3)
  • Bring inspections and dotsettings in line with osu project (ppy/osu-server-spectator#198 by @peppy)
  • Fix overlapping chat links crashing the game (ppy/osu#25627 by @Susko3)
  • Cleanup DrawNode drawing methods (ppy/osu-framework#6073 by @smoogipoo)
  • Uncomment net6.0 code and remove old code in BeatmapListingOverlay (ppy/osu#25671 by @Susko3)
  • Add IsLegacyScore to SoloScoreInfo (ppy/osu#25746 by @smoogipoo)
  • Apply framework DrawNode cleanup changes (ppy/osu#25660 by @smoogipoo)
  • Move object counts to BeatmapInfo (ppy/osu#25749 by @smoogipoo)
  • Fix GetRateAdjustedDisplayDifficulty() (partially incorrectly) locally reimplementing difficulty range calculations (ppy/osu#25762 by @bdach)
  • Populate MaxCombo scoring attrib for non-osu rulesets (ppy/osu#25808 by @smoogipoo)

Editor

Show the filename of the current file in song setup (ppy/osu#25675 by @vegguid)

Change default slider velocity for new beatmaps to match osu!stable (ppy/osu#25688 by @peppy)

1.4x is the default in osu!stable (ie. on creating a new beatmap in the editor) and plays better than 1.0x, so let's match that on lazer.

Fix osu!taiko slider velocity being written incorrectly to .osu file on export (ppy/osu#25689 by @peppy)

Add verify screen check for delayed hitsounds (ppy/osu#24648 by @ItsShamed)

image

Improve free-hand drawing of sliders to the editor (ppy/osu#25658 by @OliBomby)

Put simply, curves match your user input 100% better, and create smoother corners. Free-hand slider drawing has basically gone from "oh that's cool but i can make better because i am pro mapper" to "why would you ever not use this?"

Framework

  • FFmpeg: Enable Microsoft MPEG-4 v1-3 decoders (ppy/osu-framework#6068 by @FreezyLemon)
  • Request READ_EXTERNAL_STORAGE on older android versions (ppy/osu#25636 by @Susko3)
  • FFmpeg: Add VP6 and WMV2 video formats (ppy/osu-framework#6074 by @FreezyLemon)
  • Add a session timestamp prefix to log files (and retain 7 days of logs) (ppy/osu-framework#6063 by @peppy)
  • Add format provider argument to IParseable.Parse() (ppy/osu-framework#6065 by @Neuheit)
  • Add proper handling for BindableList collection changes in dropdown (ppy/osu-framework#6061 by @frenzibyte)
  • Add method to convert piecewise linear curves to spline control points (ppy/osu-framework#6056 by @OliBomby)
  • Improve incremental B-spline builder via stochastic optimisation (ppy/osu-framework#6066 by @OliBomby)
  • Implement dropdown searching (ppy/osu-framework#6072 by @frenzibyte)

Gameplay

Fix osu!taiko and osu!mania using the incorrect slider length when converting beatmaps (ppy/osu#25595 by @smoogipoo)

Fix hit error displays not clearing lines on seek (ppy/osu#25747 by @peppy)

Adjust some mod multipliers for initial leaderboard sanity (ppy/osu#25744 by @peppy)

Mod Old New
Half Time 0.7x 0.3x
Classic 1x 0.5x
Synesthesia 1x 0.8x

There may be others we want to adjust. Note that these are basically placeholder safe values (lower is better) so we can allow these scores on the leaderboard without people complaining about unfairness... unless they are complaining the multiplier is too low (which is fine for now).

Show back button when spectating (ppy/osu#25770 by @peppy)

Avoids getting stuck at some screens. It's a bit ugly having the back button visible like this, but is the best approach we have for now.

Smaller changes

  • Fix ArgonHealthDisplay sometimes behaving weirdly on miss judgements (ppy/osu#25672 by @frenzibyte)
  • Fix "IgnoreMiss" judgements not updating accuracy (ppy/osu#25740 by @smoogipoo)
  • Fix ArgonHealthDisplay not displaying miss correctly during initial transition (ppy/osu#25673 by @frenzibyte)

Gameplay (osu!)

Implement Argon's spinner progress glow (ppy/osu#25562 by @EVAST9919)

Modify osu! standardised scoring to introduce a combo exponent (ppy/osu#24166 by @Zyfarok)

In osu! with ScoreV1 and ScoreV2, the cost of a miss was growing fast (quadratically) with the surrounding combos. This implied that a single miss could completely ruin the score of a play and cost up to 350k in ScoreV2.

To reduce this effect, a combo exponent of 0.5 was introduced. This effectively reduces the miss-penalty at high combos while keeping it high at low combos, in a similar spirit as how combo is capped in taiko or catch but without any hard-cap.

This combo exponent change is introduced together with a complete re-balance of the Combo/Accuracy split based on user feedback. Note that the new formula will imply higher scores overall and might require a bit of time getting used to. A table showing the effects of the new formula is available at here

Allow sliders to track if hit early (ppy/osu#25748 by @smoogipoo)

Smaller changes

  • Add spinner glow resources (ppy/osu-resources#298 by @EVAST9919)
  • Make osu! ruleset once again use the lazer default HP drain (ppy/osu#25797 by @smoogipoo)
    • Playing around since the re-introduction of osu!stable's HP drain mechanics, I've become uncertain about using the osu!stable drain by default since it doesn't quite match the "feel" of osu!stable.

Most of my issues appear at higher HP drain rates, but with HR even on old maps the minimum is usually HP 8.4, which falls into the problematic region. I believe the difference is mostly where the judgements are placed - in osu!stable sliders have a big judgement at the end (300 + tick), whereas in lazer they have a medium-high judgement at the start (300) and a small judgement at the end (tick). The raw HP drain rate seems to be quite similar, and if anything osu!stable should be harsher on the cases I've found.

I've also attempted to make lazer stable better, but I haven't been able to get it "just right".

There are others that have wanted the old algorithm back, which pretty much echo what I've said above: https://github.com/ppy/osu/discussions/25631

So... This PR moves the osu!stable algorithm to the classic mod.

Here's a replay demonstrating this: https://drive.google.com/file/d/1-AEIhaVF2YfXVR9GYc8UFAnV7zfFFHvA/view?usp=sharing Note that osu!stable will play with V1 mechanics, but V1 and V2 feel about the same (just accuracy is slightly worse on V2).

  • Allow sliders to track if hit late (ppy/osu#25776 by @smoogipoo)
    • This allows slider heads to be hit late. In basic terms, this means that as long as your cursor is in the right position to hit ticks / repeats at the point of hitting the slider head late, they will now be hits instead of misses.

For those wishing to delve deeper into this change, please check the technical descriptions (and videos) in the pull request

https://github.com/ppy/osu/assets/191335/f4cfe558-cb05-45ed-8401-0f4ecd4c9670

Gameplay (osu!catch)

Adjust catch score grade cutoffs (ppy/osu#25601 by @smoogipoo)

This is how things look across all modes:

grade osu! / osu!taiko osu!catch osu!mania
SS 100% 100% 100%
S ≥95%FC ≥98% ≥95%
A ≥90% ≥94% ≥90%
B ≥80% ≥90% ≥80%
C ≥70% ≥85% ≥70%

Fix several issues with osu!catch beatmap conversion (ppy/osu#25685 by @smoogipoo)

This was originally intended to fix hyperdash generation around "pixeljumps", however it turned into much more general fixing of beatmap conversion because I couldn't provide beatmap conversion comparisons without fixing other issues.

Smaller changes

  • Use stable sort for catch hyperdash generation (ppy/osu#22499 by @ekrctb)
  • Fix catch applying positional clamping too early (ppy/osu#25726 by @smoogipoo)

Gameplay (osu!mania)

Change osu!mania HP drain to match stable (ppy/osu#25587 by @smoogipoo)

Fix osu!mania beatmap conversions sometimes having the wrong key count (ppy/osu#25712 by @smoogipoo)

Fix mania "autoplay" mod missing 0ms hold notes (ppy/osu#25727 by @PercyDan54)

Fix column sizing exceeding screen width on tablets (ppy/osu#25777 by @peppy)

The mobile stretching mode now applies to all skins, and adjusts to your device's aspect ratio. Note that this changes the width of special columns slightly – we'll be watching feedback as to whether this is throwing people off.

Smaller changes

  • Fix precision issue when converting mania beatmaps (ppy/osu#25697 by @smoogipoo)
  • Fix mania conversion following new discoveries (ppy/osu#25702 by @smoogipoo)
  • Fix fallback column colors for legacy split stage mania skins (ppy/osu#25787 by @cl8n)

Mobile

  • Fix file access not working on some older android devices (ppy/osu-framework#6071 by @Susko3)

Multiplayer

Add ability for the host to abort an in-progress match (ppy/osu#25637 by @smoogipoo)

The host can now click a handy abort button to end a match at any point!

Online

Disconnect existing client connections when another client instance for same user is detected (ppy/osu-server-spectator#196 by @bdach)

This avoids any shenanigans from multiple connections.

Display other users' online presence state in dashboard overlay (ppy/osu#25694 by @bdach)

Broadcast user online presence updates to other users (ppy/osu-server-spectator#202 by @bdach)

Track user counts per build (ppy/osu-server-spectator#203 by @bdach)

This will allow finally displaying lazer usage on the changelog page!

Smaller changes

  • Implement flow allowing disconnection from online services when another client instance for same user is detected (ppy/osu#25522 by @bdach)
  • Fix issues with concurrent connection filtering (ppy/osu-server-spectator#199 by @bdach)
  • Simplify user presence structures for serialisability (ppy/osu#25693 by @bdach)
  • Add support for aborting multiplayer matches (ppy/osu-server-spectator#201 by @smoogipoo)
  • Fix user tracking database logic to match production reality (ppy/osu-server-spectator#204 by @bdach)

Performance

  • Reduce some allocations in SongSelect in the mania ruleset (ppy/osu#25768 by @smoogipoo)

Results

Fix results screen not including slider end misses in tick count (ppy/osu#25602 by @peppy)

This brings us a step closer to sanity with slider end misses. Now you can at least see when you missed a slider end, as it will reduce the "slider ticks" count.

Settings

Add button to compress log files for bug submission (ppy/osu#25588 by @peppy)

Intended for use in conjunction with https://github.com/ppy/osu-framework/pull/6063. Now that there are many log files, let's compress them on behalf of the user to make reporting bugs easier.

Allow new common cases when a user is locating a stable osu! install directory for import (ppy/osu#25775 by @peppy)

This allows:

  • Selecting a Songs or Skins folder directly (will automatically use the parent for imports)
  • Selecting an osu! folder without it containing a osu!.*.cfg file (which is the case for some users that have only backed up their Songs or Skins folders)

Skin Editor

Fix being able to change ruleset / beatmap when opening skin editor from main menu (ppy/osu#25687 by @peppy)

Smaller changes

  • Fix several edge cases in skin editor gameplay scene opening flow (ppy/osu#25665 by @bdach)
  • Fix skin editor crashing in some circumstances when opened in main menu (ppy/osu#25691 by @bdach)

Song Select

Improve song select search performance (ppy/osu#25679 by @peppy)

Reduces time taken to search beatmaps at song select by 88%.

Allow right clicking anywhere on a leaderboard score to get the "use mods" menu (ppy/osu#25683 by @POeticPotatoes)

It was hard to know that you had to click directly on mods previously to use this.

https://drive.google.com/file/d/1bDb6ICbhaAimkQRDHhrQhOhW9QgsyAdu/view?usp=sharing

Note that this currently doesn't update with mod selection.

Show adjusted AR/OD values when applying DT/HT mods (ppy/osu#24642 by @Givikap120)

Change mod select to focus the search box without pressing tab (ppy/osu#25756 by @bdach)

This feels like a better default for most users. Now, the serach box is focused by default so that you can type immediately after the overlay pops in. But it is also toggleable so that users who are accustomed to hotkeys can continue using hotkeys. As such the "classic" default for the setting is to not focus the search box.

For existing lazer users that want to use classic hotkeys, please adjust the new setting Automatically focus search text box in mod select.

Improve handling of beatmap collection changes in CollectionDropdown (ppy/osu#25575 by @frenzibyte)

Smaller changes

  • Fix searching at song select matching incorrect ruleset (ppy/osu#25686 by @peppy)
    • Broke in the last release.
  • Fix adjusted attributes tooltip not updating without mods (ppy/osu#25759 by @Givikap120)
  • Fix AdjustedAttributesTooltip being broken by design (ppy/osu#25760 by @bdach)
  • Fix star rating display changing width depending on number displayed (ppy/osu#25774 by @peppy)

Testing

  • Refactor dropdown test scene thoroughly (ppy/osu-framework#6058 by @frenzibyte)
  • Include mod multipliers in scoring test scenes (ppy/osu#24933 by @bdach)
  • Attempt to fix diffcalc script comment-based variable extraction once again (ppy/osu#25597 by @smoogipoo)
  • Fix visual tests crashing when using params and TestCase attribute (ppy/osu-framework#6069 by @Susko3)
  • Refactor multiplayer invite tests (ppy/osu-server-spectator#200 by @smoogipoo)
  • Cleanup chat link tests (ppy/osu#25626 by @Susko3)
  • Fix last tick handling in osu beatmap conversion tests (ppy/osu#25695 by @smoogipoo)
  • Ensure that SoloScoreInfo serialisation result does not contain interface members (ppy/osu#25703 by @bdach)
  • Fix editor test not waiting for editor to load (ppy/osu#25741 by @smoogipoo)

Tournament

Add ban count option to round editor (ppy/osu#25598 by @rodrigopina360)

This idea came from this comment, which remembered me that indeed it's always assumed it's a single ban, even tho (even in OWC) having 2 bans per team further in the bracket is the norm. This change allows setting the ban count between 0 and 5, and also standardises the rotation order to what is used in most osu! tournaments.

UI

Add support for searching in dropdown menus (e.g. skins) (ppy/osu#25682 by @frenzibyte)

You can finally search for skins by name (and anything else in a dropdown)!

Smaller changes

  • Fix chat overlay top bar icon being incorrect (ppy/osu#25618 by @Joehuu)
  • Show search bar by default in language and collection dropdowns (ppy/osu#25757 by @peppy)
  • Update localisations (ppy/osu-resources#299 by @peppy)

Full Changelog: https://github.com/ppy/osu/compare/2023.1213.0...2023.1218.0

2023.1130.0

6 months ago

Code Quality

  • Add test coverage of accessing skin layout after importing customised default skins (ppy/osu#25468 by @peppy)
  • Change ResourceStore provided to Skin to be a fallback, not replacement (ppy/osu#25481 by @peppy)
  • Update localisation analyser (ppy/osu#25491 by @peppy)
  • Refactor OsuAutoGenerator to allow custom SPM specifications (ppy/osu#25490 by @peppy)
  • Fix implicitly used method being named incorrectly (ppy/osu#25521 by @Syriiin)
  • Fix android compile failures due to invalid java version (ppy/osu#25533 by @bdach)
  • Improve commenting around IHasCombo interfaces (ppy/osu#25536 by @peppy)
  • Attempt to fix intermittent failures on new tests (ppy/osu#25540 by @peppy)
  • Remove manual changes to Xcode versions in CI (ppy/osu#25544 by @Frederisk)
  • Fix a couple of new r# inspections (ppy/osu#25552 by @peppy)
  • Replace all hexacon lookups with strongly typed properties (ppy/osu#25560 by @peppy)

Editor

Allow opening editor timestamp URLs from modding discussions in browser (ppy/osu#25371 by @RatinFX)

Add free-hand drawing of sliders to the editor (ppy/osu#25409 by @Tom94)

Collab with @default0.

This allows free-hand drawing of a slider by clicking and dragging in the osu! editor. As a dependent addition, "B-Splines" curve support has been added as a new slider type that generalize Bezier curves. The new B-Spline slider type is used to represent / approximate the hand-drawn slider and exposes a couple of settings for manual control over how the curve is fit.

Smaller changes

  • Fix slider length not updating when adding new anchor via ctrl-click (ppy/osu#25549 by @bdach)
  • Fix freehand-drawn sliders with distance snap (ppy/osu#25539 by @default0)

Framework

  • PathApproximator: no BSpline degree <1 and better special case handling (ppy/osu-framework#6045 by @Tom94)
  • Fix audio tests not checking for unobserved exceptions and not disposing on the audio thread (ppy/osu-framework#5946 by @Susko3)
  • Allow enabling computed mipmaps in LargeTextureStore (ppy/osu-framework#6048 by @EVAST9919)
  • Update some inspections to (mostly) satisfy latest rider EAP (ppy/osu-framework#6050 by @peppy)
  • IncrementalBSplineBuilder: rewrite algorithm with many improvements (ppy/osu-framework#6047 by @Tom94)
  • Use better RunOnAudioThread() logic in audio tests (ppy/osu-framework#6049 by @Susko3)
  • Add support for Vector3 interpolation (ppy/osu-framework#6051 by @EVAST9919)
  • Fix android pack action failing due to missing OpenJDK (ppy/osu-framework#6054 by @peppy)
  • Expose B-spline to Bezier conversion method (ppy/osu-framework#6053 by @bdach)
  • Improve incremental b-spline builder (ppy/osu-framework#6055 by @Tom94)
  • Attempt to fix android compile failures due to invalid java version again (ppy/osu-framework#6057 by @bdach)
  • Allow using custom ITexturedGlyphLookupStores as texture sources (ppy/osu-framework#6059 by @peppy)

Gameplay

Change unstable rate calculation to account for rate-change mods (ppy/osu#25415 by @Poyo-SSB)

This makes UR comparable across rate adjust mods, including static (e.g. Double Time), linear (e.g. Wind Up), and dynamic (e.g. Adaptive Speed) mod types.

Fix handling of combo and combo colours around spinners (ppy/osu#25551 by @smoogipoo)

Smaller changes

  • Fix classic scoring overflowing in osu! ruleset due to integer multiplication overflow (ppy/osu#25546 by @bdach)
  • Fix break time simulation in HP calculation not matching osu!stable (ppy/osu#25420 by @smoogipoo)

Gameplay (osu!)

Adjust slider follow circle animation to not abruptly scale on early ticks (ppy/osu#25493 by @peppy)

Reimplement HP drain to match osu!stable (ppy/osu#25418 by @smoogipoo)

Gameplay (osu!catch)

Reimplement HP drain to match osu!stable (ppy/osu#25563 by @smoogipoo)

Add second level menu for editors (ppy/osu#25561 by @peppy)

As mentioned in discussion, while the skin editor has evolved to be really powerful, it's quite hidden from the user. To solve this, I've added a second level menu under the "Edit" button to house both editors.

Performance

Unload beatmap storyboards when not in main menu screen (ppy/osu#25400 by @frenzibyte)

This frees up resources that would otherwise be held ransom until returning to the menu.

Don't draw the game when the window is minimised (ppy/osu-framework#6052 by @Susko3)

This change reduces the CPU and GPU usage when the window is minimised.

Skinning

Fix default argon health bar width being zero (ppy/osu#25466 by @bdach)

Will fix:

  • appearance of the health bar in toolbox
  • size of the health bar when added from toolbox
  • skins which had the default value of the width setting set

Fix argon health bar folding in on itself when too narrow (ppy/osu#25472 by @bdach)

Add ability to toggle labels on argon counter components (ppy/osu#25469 by @Joehuu)

Save any unsaved changes in the skin editor when game changes screens (ppy/osu#25523 by @peppy)

Allow use of skin username/flag/avatar components outside of gameplay (ppy/osu#25553 by @peppy)

CleanShot 2023-11-23 at 08 15 46

Load gameplay immediately on entering the skin editor while at the main menu (ppy/osu#25568 by @peppy)

Smaller changes

  • Fix skin editor crashing when pasting with nothing in clipboard (ppy/osu#25547 by @bdach)
  • Fix skin element "PlayerFlag" responding to clicks/hovers (ppy/osu#25530 by @yesseruser)

Spectator

Fix spectator mode not showing when a spectated user quits correctly (ppy/osu#25565 by @peppy)

Fix spectator not immediately showing when a spectated user fails (ppy/osu#25566 by @peppy)

UI

Show full user cards when hovering avatars everywhere in the game (ppy/osu#25339 by @joshika39)

Allow context menus to have visible spacers (ppy/osu#25520 by @peppy)

CleanShot 2023-11-21 at 05 25 17

More correctly handle login flow when user profile overlay is visible (ppy/osu#25510 by @Stedoss)

Before After

Add drag bar on chat overlay to better signal resize-ability (ppy/osu#25567 by @peppy)

Smaller changes

  • Use existing localisation for corner radius in BoxElement (ppy/osu#25458 by @Joehuu)
  • Fix links in comments not showing with correct styling (ppy/osu#25478 by @Joehuu)
  • Update translations (ppy/osu-resources#297 by @peppy)

New Contributors

Full Changelog: https://github.com/ppy/osu/compare/2023.1114.1...2023.1130.0

2023.1114.1

6 months ago

What's Changed

Full Changelog: https://github.com/ppy/osu/compare/2023.1114.0...2023.1114.1

2023.1114.0

6 months ago

Code Quality

  • Update country code names to match database (ppy/osu#25217 by @peppy)
  • Fix some new nullable inspections (ppy/osu#25301 by @peppy)
  • Improve log output surrounding score submission (ppy/osu#25300 by @peppy)
  • Clean up mod usability flags (ppy/osu#25328 by @bdach)
  • Rename and invert flags for slider classic behaviours (ppy/osu#25341 by @peppy)
  • Refactor KeyCounterDisplay to use autosize (ppy/osu#25411 by @peppy)

Editor

Fix editor not prompting before saving beatmap for export (ppy/osu#25223 by @peppy)

Fix various osu!catch distance snap grid breakage (ppy/osu#25240 by @bdach)

Fix slider velocity changes not being undone correctly (ppy/osu#25307 by @bdach)

Decouple metronome tick playback from pendulum movement (ppy/osu#25316 by @peppy)

I originally wanted the sounds to match the visuals, but it turns out that mappers want the sound to play immediately. So now it will always play, regardless of whether the pendulum passes the centre point or not.

Smaller changes

  • Fix right clicks on timeline potentially not working as expected (ppy/osu#25304 by @peppy)
  • Select text in beat divisor popover automatically (ppy/osu#23823 by @peppy)
  • Automatically refresh the verify screen's issue list on re-entering it (ppy/osu#25376 by @peppy)
  • Fix editor crash when creating a new difficulty in a non-existent beatmap (ppy/osu#25380 by @frenzibyte)

Framework

Fix releasing mouse buttons outside of window not working in relative mode (ppy/osu-framework#6036 by @Susko3)

Fix mouse not working as expected on iOS (ppy/osu-framework#6041 by @Susko3)

Smaller changes

  • Disable retrieval of SDL display modes on non-desktop platforms (ppy/osu-framework#6032 by @frenzibyte)
  • Correctly handle tablets which report mutliple pieces of information per report (ppy/osu-framework#6035 by @Susko3)
  • Allow selecting all text in a textbox programatically (ppy/osu-framework#5823 by @peppy)
  • Fix wrong bytes per sample in TrackBass (ppy/osu-framework#6039 by @hwsmm)
  • Fix FrameStatisticsViaTouch to work as described in the wiki (ppy/osu-framework#6040 by @Susko3)
  • Update framework (ppy/osu#25407 by @peppy)
  • Add class for efficiently building B-Splines (ppy/osu-framework#6044 by @default0)

Gameplay

Enforce minimum gameplay sample volume of 5% (ppy/osu#25185 by @bdach)

osu!stable's sample volume floor is actually 8%, but it is enforced in what seem to be completely stupid ways (in the UI it's 5%, but actual playback takes place at minimum 8%). Since that seems weird and bad, and basically nobody seems to know about it (source: a brief discussion I had with the NAT today), and it seems there should be no harm in actually having the cap be 5% without weird gymnastics or lying to the users, that's what I ended up doing.

Add ability to quick retry using Ctrl-R (ppy/osu#25235 by @peppy)

Fix quick retry immediately after completion marking score as failed (ppy/osu#25264 by @bdach)

Allow argon's key counter display to be rotated while keeping text upright (ppy/osu#25349 by @Joehuu)

Smaller changes

  • Exclude video events from being accounted for when calculating storyboard time bounds (ppy/osu#25269 by @bdach)
  • Add "Argon" score digit textures (ppy/osu-resources#292 by @frenzibyte)
  • Fix resume cursor changing clickable radius depending on cursor size setting (ppy/osu#25364 by @frenzibyte)
  • Add more "Argon" counter symbols (ppy/osu-resources#295 by @frenzibyte)

Gameplay (osu!)

Fix repeat circles on sliders not correctly getting dimmed (ppy/osu#25221 by @peppy)

Before:

After:

Fix all spinner ticks being alive and causing performance degradation (ppy/osu#25333 by @peppy)

Continue to play spinner bonus sounds when MAX display occurs (ppy/osu#25343 by @peppy)

Fix osu! (slider) combo not matching expectations when classic mod is disabled (ppy/osu#25342 by @peppy)

Until now, the max combo of sliders has been lower than expected due to the tail not giving a combo. This has been fixed, so now max combo will match classic mod (and stable). This will make cross-comparisons much saner.

Implement basic touchscreen detection (ppy/osu#25348 by @bdach)

The "touch device" mod will now be shown when using touch input, both at song select and during gameplay.

Smaller changes

  • Fix out-of-order judgements when missing a slider head (ppy/osu#25218 by @peppy)
    • Would sometimes lead to unstable total score calculations.

Gameplay (osu!mania)

Add support for "argon" default skin to expand columns when on mobile devices (ppy/osu#25336 by @peppy)

Should ease those looking to play the game on mobile until we (potentially) have a better solution in the future.

If this works out well, we can consider rolling it out to other skins.

Keys
4 CleanShot 2023-11-02 at 06 17 51
5 CleanShot 2023-11-02 at 06 18 17
7 CleanShot 2023-11-02 at 06 12 42
20 CleanShot 2023-11-02 at 06 18 57

Gameplay (osu!taiko)

Apply same changes to "argon" osu!taiko barline design that were applies to osu!mania (ppy/osu#25222 by @peppy)

Before After
CleanShot 2023-10-25 at 05 22 06 CleanShot 2023-10-25 at 05 20 20

Import

Update the last played date of a beatmap when importing a replay by the local user (ppy/osu#25303 by @peppy)

With this change, importing beatmaps scores from stable will now choose a more correct "Last Played" date for beatmaps based on the most recent score imported. This also applies when importing one of your own scores at any point.

SFX improvements for ButtonSystem/MainMenu (ppy/osu#25395 by @nekodex)

Makes the main menu feel a bit more polished IMO while also reducing the ability to spike playback volume by spamming stuff.

Smaller changes

  • Update samples for ButtonSystem/MainMenu (ppy/osu-resources#290 by @nekodex)

Mods

  • Make FreezeFrame and Transform Incompatible (ppy/osu#25233 by @Termincc)
  • Fix StopUsingBeatmapClock() applying adjustments to track it was supposed to stop using (ppy/osu#25253 by @bdach)
  • Fix another potential crash in bubbles mod (ppy/osu#25334 by @peppy)

Online

  • Fix replay upload flow not encoding player username (ppy/osu-server-spectator#194 by @bdach)
  • Correctly handle multiple online score ID types (ppy/osu#24794 by @bdach)
  • Update game packages (ppy/osu-server-spectator#195 by @bdach)

Overlays

Update user profile overlay to show more than one tournament banner (ppy/osu#25287 by @frenzibyte)

CleanShot 2023-10-29 at 01 49 53

Add ability to view kudosu rankings (ppy/osu#25388 by @Joehuu)

Reliability

  • Fix iOS AOT compilation failure due to SharpCompress library upgrade (ppy/osu#25236 by @peppy)
  • Do not revert to default value when double-clicking disabled slider (ppy/osu#25230 by @bdach)
  • Fix skin editor freezing game if opened during active gameplay (ppy/osu#25265 by @bdach)
  • Update installer to latest release (ppy/osu#25385 by @peppy)

Settings

Automatically select existing search text when opening settings (ppy/osu#25286 by @frenzibyte)

Allows for a better search experience, as a user usually wants to find a new setting each time they come to the settings screen.

This fixes the previous "disable clicks" toggle from also affecting touch input.

Smaller changes

  • Show touch input settings on mobile (ppy/osu#25399 by @Susko3)

Skin Editor

Add skin editor context menu items to reset rotation and scale (ppy/osu#25375 by @peppy)

Fix skin editor not clearing undo history on skin change (ppy/osu#25406 by @bdach)

Add "export" item to skin editor menu (ppy/osu#25408 by @peppy)

Add support for adjusting size of skin elements (ppy/osu#25402 by @peppy)

Dragging a skin elements from an edge will now adjust size, not scale. This allows resizing elements which support it without stretching them (which looked really bad).

Support is limited for now, but we can easily roll this out to more components in the future.

Before After
CleanShot 2023-11-10 at 05 37 19 CleanShot 2023-11-10 at 05 39 58

Skinning

Add "player name" skin component (ppy/osu#25374 by @peppy)

Update "Argon" skin gameplay counters to new design (ppy/osu#25226 by @frenzibyte)

Smaller changes

  • Correctly apply slider velocity into slider ball animation rate (ppy/osu#25191 by @frenzibyte)
  • Fix legacy sprite texts not matching stable with respect to fixed width (ppy/osu#25267 by @bdach)
  • Fix non-matching legacy skin animation capabilities and frame rates (ppy/osu#25190 by @frenzibyte)
  • Fix potential texture corruption when cropping gameplay textures of weird aspect ratios (ppy/osu#25318 by @peppy)

Song Select

Fix cut/copy not working in song select search filter textbox (ppy/osu#25277 by @Susko3)

Change osu!mania conversion mod ordering to be more appeasing (ppy/osu#25338 by @peppy)

Smaller changes

  • Use better colours for system mods (ppy/osu#25377 by @bdach)

Testing

  • Use current date as default value for tournament date text boxes (ppy/osu#25227 by @frenzibyte)
  • Fix incorrect assertion placement in spinner rotation tracker (ppy/osu#25311 by @bdach)
  • Fix TestScenePlayerMaxDimensions texture loading process bottlenecking CI (ppy/osu#25272 by @frenzibyte)
  • Address some flaky tests from recent times (ppy/osu#25315 by @peppy)
  • Fix key binding row fire-and-forgetting writes (ppy/osu#25323 by @bdach)
  • Attempt to support quotes in handling of GH comment body (ppy/osu#25403 by @smoogipoo)

Tournament

Support displaying team seeds in tournament client (ppy/osu#25274 by @frenzibyte)

CleanShot 2023-10-28 at 09 28 48

Split tournament player lists more equally (ppy/osu#25398 by @peppy)

Requested by OWC team.

Before After
CleanShot 2023-11-09 at 12 36 36 CleanShot 2023-11-09 at 12 36 28

Smaller changes

  • Change tournament date text box parsing to use invariant culture info (ppy/osu#25279 by @frenzibyte)

UI

  • Update translations (ppy/osu-resources#294 by @peppy)
  • Fix bar graph displays flickering when a bar is too small (ppy/osu#25386 by @EVAST9919)

New Contributors

Full Changelog: https://github.com/ppy/osu/compare/2023.1013.0...2023.1114.0

2023.1026.0

7 months ago

Audio

Add new generic-error sample (ppy/osu-resources#288 by @nekodex)

SFX tweaks (ppy/osu#25178 by @nekodex)

A bunch of little fixes grouped together:

  • Fixes toolbar ruleset buttons not having hover sounds
  • Replaces NowPlayingOverlay pop-in/pop-out sounds with newer generic overlay pop-in/pop-out ones
  • Changes NewsCard select samples from Default sample set to Button
  • Reduces LoginOverlay sample panning to match NowPlayingOverlay
  • Changes back button sample set (in KeyBindingPanel) from ButtonSidebar to Default
  • Adds keypress feedback/sound when binding keys (in KeyBindingPanel)
  • Changes RevertToDefaultButton from Button sample set to Default

Smaller changes

  • Use new generic-error sample in appropriate places (ppy/osu#25113 by @nekodex)
    • Used by the duplicate keybinding popup and also replaces password-fail (incorrect room password popup)

Code Quality

Remove reference to multiplayer_scores table (ppy/osu-server-spectator#192 by @bdach)

Smaller changes

  • Clean up KeyBindingRow and related classes (ppy/osu#25092 by @bdach)
  • Remove remaining usages of LargeTick{Hit,Miss} in mania (ppy/osu#25100 by @bdach)
  • Refactor key binding panel for easier usage (ppy/osu#25104 by @bdach)
  • Remove no longer used scoring difficulty attributes (ppy/osu#25142 by @bdach)
  • Apply various fixes and cleanup to spinner logic (ppy/osu#25143 by @peppy)
  • Fix various new rider EAP inspections (ppy/osu#25155 by @peppy)
  • Replace DistancedHitObjectComposer with composition-based approach (ppy/osu#25171 by @bdach)
  • Isolate diffcalc workflow runs (ppy/osu#25176 by @smoogipoo)

Editor

Fix osu!mania beat snap grid sometimes not displaying correctly (ppy/osu#25073 by @peppy)

Persist the state of "show speed changes" between editor sessions (ppy/osu#25153 by @peppy)

Add beat snap grid to osu!taiko editor (ppy/osu#25154 by @peppy)

Framework

Add button to randomise test scene background colour (ppy/osu-framework#6022 by @peppy)

https://github.com/ppy/osu-framework/assets/191335/560b8924-f5d5-4cc9-b3f1-1bc5e8dbb7b0

Fix some beatmap videos no longer rendering (ppy/osu-framework#6024 by @FreezyLemon)

MPEG-4 Part 2 is a video coding standard that sits "between" H.262 and H.264. Xvid, DivX and some less known formats implement it.

Smaller changes

  • Add notes regarding using inline delegates with Scheduler.AddOnce (ppy/osu-framework#6023 by @peppy)
  • Update FFmpeg binaries (ppy/osu-framework#6026 by @github-actions[bot])
  • Update native libs (ppy/osu-framework#6027 by @peppy)
  • Bring back shader workaround to fix blur on iOS (ppy/osu-framework#6031 by @frenzibyte)
  • Throw exception when pushing a screen at OnExiting without blocking (ppy/osu-framework#6033 by @hwabis)

Gameplay

Fix argon health bar not completing flash animation correctly (ppy/osu#25074 by @peppy)

Noticed this while doing some work around the health bar. The flash just wasn't playing due to an oversight in the miss-finish-animation logic. I've also adjusted the flash a bit.

Show results immediately if user hits "back" key after finishing gameplay (ppy/osu#25097 by @peppy)

I've gone ahead and matched the osu!stable behaviour for this, as it seems like it's what people are used to and they will settle for no less.

Smaller changes

  • Fix legacy score calculators using incorrect mod multipliers (ppy/osu#24988 by @smoogipoo)
  • Fix multiplayer not correctly pausing the track on initialisation (ppy/osu#25079 by @peppy)
    • This resolves crashes experience in the last release (before the hotfix).
  • Fix default preview point being incorrect on old beatmaps (ppy/osu#25083 by @peppy)
  • Fix health bar animating startup sequence when it shouldn't be (ppy/osu#25136 by @peppy)
  • Fix incorrect volume on some beatmaps (ppy/osu#25179 by @bdach)

Gameplay (osu!)

Adjust slider repeat animation on legacy skins to closer match stable (ppy/osu#25160 by @bdach)

Add an "Adjust pitch" switch to DT/HT (ppy/osu#24640 by @Givikap120)

Adjust slider ends to be more lenient during very fast sliders (ppy/osu#24966 by @peppy)

On very fast sliders, you now only need to be tracking somewhere in the last 36ms, rather than precisely at the (hidden) position of the last tick.

######### Miss

######### Valid hits

Fix circle scale not matching stable due to missing multiplier (ppy/osu#25167 by @peppy)

This fixes some replays incorrectly having misses due to a floating-point scale mismatch.

Change spinner score display to show when reaching max bonus score (ppy/osu#25177 by @peppy)

Fix spinner cheese by accounting for spin directionality (ppy/osu#25157 by @peppy)

You now need to spin in one direction for a full spin in order to increment the total spin count.

Smaller changes

  • Adjust approach circle maximum size limits for backwards compatibility (ppy/osu#25067 by @bdach)
  • Apply a few more object sizing limits (ppy/osu#25110 by @peppy)
  • Fix spinner ticks not playing samples correctly sometimes (ppy/osu#25216 by @bdach)
    • This was probably revealed by the lowering of the spinner cap, which made the ticks more spread out and made this issue more likely to occur.

Gameplay (osu!catch)

Adjust legacy skin catcher sizing to match 1:1 with osu!(stable) (ppy/osu#25070 by @frenzibyte)

Overall, here are visual cross-comparisons of the catcher's display between lazer and stable:

master this PR
catcher-master catcher-PR

Fix "Floating Fruits" mod not flipping playfield properly (ppy/osu#25173 by @bdach)

Gameplay (osu!mania)

Remove osu!mania hold note "ticks" (ppy/osu#25062 by @smoogipoo)

Change osu!mania "perfect" judgements to only award bonus score (ppy/osu#25111 by @peppy)

Online

Add ability to invite players to multiplayer rooms (ppy/osu#25005 by @minetoblend)

Adds invites for multiplayer matches. Players can be invited by right clicking their profile in the user list (F9 menu).

https://github.com/ppy/osu-server-spectator/assets/8039761/d945cf2d-d1ef-4d2b-8faf-2691bd59731a

We will add more places to trigger the invite from in the future!

Smaller changes

  • Fix score importer looking up guest user by username online (ppy/osu#25077 by @bdach)
  • Add ability to invite players to multiplayer rooms (ppy/osu-server-spectator#188 by @minetoblend)
    • Server-side changes.
  • Don't upload replays for failed scores (ppy/osu-server-spectator#190 by @smoogipoo)

Performance

Ensure health displays don't pile up transforms when off-screen (ppy/osu#25076 by @peppy)

Results

Show maximum bonus statistics on results screen (ppy/osu#25096 by @peppy)

CleanShot 2023-10-12 at 05 54 47

CleanShot 2023-10-12 at 05 55 42

Settings

Disallow binding multiple bindings in a single section to one key (ppy/osu#25105 by @bdach)

Add ability to revert slider settings to default when double-clicking nub (ppy/osu#25163 by @Joehuu)

Kapture 2023-10-17 at 21 58 18

Smaller changes

  • Clear pre-existing bindings of same key combination to single action (ppy/osu#25152 by @bdach)

Song Select

Improve mouse interactions at song select (ppy/osu#25182 by @peppy)

Add ability to search for difficulty names using square brackets (ppy/osu#24921 by @Pasi4K5)

Smaller changes

  • Fix "Hard Rock" mod affecting CS/AR in osu!mania and osu!taiko (ppy/osu#25101 by @peppy)
    • Not sure if there are other exceptions we should account for here. This is mostly fixing this for visual purposes. We'd probably want to hide these stats in the mod select screen at some point if they are not relevant to a ruleset.
  • Remove drag handles from manage collections dialog for now (ppy/osu#25140 by @peppy)
    • The realm implementation doesn't support this. May come back at a future date, but this matches stable so it's not a huge deal.
  • Fix collections not being sorted alphabetically in context menus (ppy/osu#25139 by @peppy)

Testing

  • Remove test scene background stack and use new ChangeBackgroundColour (ppy/osu#25082 by @peppy)
  • Fix key binding panel test failures from introducing placeholder text (ppy/osu#25115 by @bdach)

Tooling

  • Fix + improve diffcalc command for comment-based execution (ppy/osu#25159 by @smoogipoo)
    • The biggest change here is to use actions-cool/check-user-permission to check permissions. My intention is for only those with write permissions to this repo to be able to run the action via commenting !diffcalc.

The text at the top of the workflow details how to use this.

A second, somewhat important change is to run the timeout job on the self-hosted runner, since it has different usage limits to the GH runners. This was missed in my initial implementation, but the limits are appropriate for self-hosted runners.

Documentation: https://docs.github.com/en/rest/overview/issue-event-types?apiVersion=2022-11-28#properties-for-commented (grep)

Tournament

Reduce black fill of song bar in tournament UI back to reasonable levels (ppy/osu#25081 by @peppy)

UI

Move playlist item download button to left (ppy/osu#25063 by @peppy)

Felt really anti-user when you go to click the results button and the downloads button pops into its place.

Before:

After:

Smaller changes

  • Add extended info support to tiny mod switches (ppy/osu#25093 by @Joehuu)
  • Use dimmed placeholder text instead of empty box on cleared bindings (ppy/osu#25106 by @bdach)
  • Fix dangerous buttons using different shades of pink (ppy/osu#25112 by @bdach)
  • Change beatmap listing key to B to match Ctrl-B shortcut (ppy/osu#25180 by @Susko3)
    • B is also better than D because the button says browse. This matches P for play and E for edit.
  • Localisation updates (ppy/osu-resources#291 by @peppy)
  • Limit image size in comments (ppy/osu#25202 by @EVAST9919)

Full Changelog: https://github.com/ppy/osu/compare/2023.1013.0...2023.1026.0

2023.1008.1

7 months ago

Hotfix for mjultiplayer crahes

2023.1008.0

7 months ago

Behavioural

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

Code Quality

  • Tidy up LegacyLastTickOffset usages and stop passing everywhere (ppy/osu#24965 by @peppy)
  • Adjust clock usage in line with framework changes (ppy/osu#24885 by @peppy)
    • This removes four workarounds/hacks. Wow.
  • Fix some incorrect bindable-related code (ppy/osu#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 (ppy/osu#24953 by @peppy)

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

Framework

  • Stop logging non-error output from OpenTabletDriver (ppy/osu-framework#6006 by @peppy)
  • Add new DecouplingClock and obsolete DecoupleableInterpolatingFramedClock (ppy/osu-framework#6001 by @peppy)
  • Fix flaky editor beatmap creation test (ppy/osu#24935 by @bdach)
  • Fix keyboard handler getting disabled on window creation failure (ppy/osu-framework#6005 by @peppy)
  • Fix WaveformGraph overhead when DrawPosition is changed (ppy/osu-framework#6009 by @peppy)
  • Increase tolerance in decoupling framed clock tests (ppy/osu-framework#6011 by @bdach)
  • Reduce FFmpeg binary size (ppy/osu-framework#5981 by @FreezyLemon)
  • Disable linux video hardware acceleration for now (ppy/osu-framework#6015 by @peppy)
  • Fix race condition in ThreadedTaskScheduler when adding tasks (ppy/osu-framework#6014 by @smoogipoo)
  • Update nativelibs to latest version (ppy/osu-framework#6013 by @peppy)
  • Fix source clock not correctly getting started after a decoupled transition (ppy/osu-framework#6017 by @peppy)
  • Simplify SaturationValueSelector (ppy/osu-framework#6018 by @EVAST9919)
  • Fix TestReplayExport intermittent failure (ppy/osu#25015 by @peppy)
  • Fix incorrect implementation of TrackVirtual (ppy/osu-framework#6019 by @peppy)
  • Add new GitHub Actions diffcalc spreadsheet generator workflow (ppy/osu#25013 by @smoogipoo)
  • Fix InterpolatingFramedClock not correctly handling seeks when source clock is stopped (ppy/osu-framework#6020 by @peppy)

Gameplay

Add maximum dimensions limit to skinnable gameplay elements (ppy/osu#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 (ppy/osu#24924 by @bdach)

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

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

CleanShot 2023-10-01 at 01 22 56@2x

Smaller changes

  • Split legacy scoring attributes into their own table (ppy/osu#24779 by @smoogipoo)
  • Fix skin version being incorrectly set to 1.0 when skin is missing skin.ini (ppy/osu#24942 by @peppy)
  • Add GetDisplayScore() extension for SoloScoreInfo (ppy/osu#24957 by @bdach)
  • Adjust gameplay element maximum size limits for backwards compatibility (ppy/osu#25023 by @bdach)
  • Adjust argon health bar to fit with existing layout (ppy/osu#25030 by @peppy)
  • Add initial animation for health bars (ppy/osu#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 (ppy/osu#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 (ppy/osu#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 (ppy/osu#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) (ppy/osu#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

  • Fix game crash when using "Bubbles" mod on a beatmap with no hit circles (ppy/osu#24889 by @Fabiano1337)
  • Add repeat-edge-piece texture for argon sliders (ppy/osu-resources#287 by @peppy)
  • Fix spinner requirements being susceptible to FP precision (ppy/osu#25006 by @smoogipoo)

Gameplay (osu!mania)

Adjust osu!mania "major" barlines to be less visually distracting (ppy/osu#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 (ppy/osu#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

  • Improve TriangleBorder shader (ppy/osu-resources#286 by @EVAST9919)

Reliability

  • Fix WaveformComparisonDisplay potentially crashing on invalid track length (ppy/osu#25016 by @peppy)
  • Fix OAuth refresh attempt when no network available causing full logout (part 2) (ppy/osu#25029 by @peppy)

Skinning

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:

CleanShot 2023-09-30 at 01 25 35@2x

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 (ppy/osu#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 (ppy/osu#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 (ppy/osu#24922 by @Fabiano1337)

Improve notification display when score import fails (ppy/osu#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 (ppy/osu#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

  • Add missing locales mapping in crowdin.yml (ppy/osu-resources#282 by @agatemosu)
  • Add mod icon resources (ppy/osu-resources#285 by @peppy)
  • Display mod icons using stable (consistent, not osu!stable) ordering (ppy/osu#24955 by @peppy)
  • Also flash "discard changes" dialog popup when force quitting room/playlist creation with changes (ppy/osu#24962 by @Joehuu)
  • Update translations (ppy/osu-resources#284 by @peppy)
    • Includes fixes for several languages that had the wrong country code mapping causing translations to not actually display.
  • Add legacy ranking texture (ppy/osu-resources#274 by @nanashi-1)

Full Changelog: https://github.com/ppy/osu/compare/2023.1004.0...2023.1008.0