Osu Versions Save

rhythm is just a *click* away!

2024.412.1

2 weeks ago

What's Changed

Full Changelog: https://github.com/ppy/osu/compare/2024.412.0...2024.412.1

2024.412.0

2 weeks ago

Code Quality

  • Fix broken wiki link on readme (ppy/osu-server-spectator#226 by @Joehuu)
  • Remove unused ScreenBreadcrumbControl (ppy/osu#27675 by @peppy)
  • Add extended logging when discarding online metadata lookup results (ppy/osu#27676 by @bdach)
  • Make slider path parsing more friendly with spans (ppy/osu#27418 by @huoyaoyuan)
  • Fix discord RPC errors in multiplayer (ppy/osu#27728 by @bdach)
  • Update localisations (ppy/osu-resources#315 by @peppy)
  • Fix NVAPI startup exception on non-Windows platforms (ppy/osu#27733 by @smoogipoo)
  • Update action versions in diffcalc workflow (ppy/osu#27748 by @smoogipoo)
  • Fix SpectatorClient holding references to Player (ppy/osu#27778 by @smoogipoo)
  • Fix SkinEditor binding event to external bindable (ppy/osu#27779 by @smoogipoo)
  • Update osu.Framework package (ppy/osu#27788 by @smoogipoo)
  • Fix icon render script not negating correctly on newer imagemagick versions (ppy/osu-resources#316 by @bdach)
  • Update Sentry to fix iOS build (ppy/osu#27827 by @smoogipoo)

Editor

Improve editor performance when many timeline ticks are present (ppy/osu#27632 by @EVAST9919)

Improve editor performance for maps with many control points (ppy/osu#27630 by @EVAST9919)

Smaller changes

  • Fix audio in video check crashing on unexpected failures (ppy/osu#27600 by @bdach)
  • Add verify checks to unused audio at the end (ppy/osu#27639 by @64ArthurAraujo)
  • Add verify check for too high video resolution (ppy/osu#27708 by @64ArthurAraujo)
  • Add verify checks for abnormal difficulty settings (ppy/osu#27683 by @64ArthurAraujo)
  • Fix reverse selection not updating new combo location (ppy/osu#27723 by @64ArthurAraujo)
  • Update Slider path control points and connections after stacking application (ppy/osu#27761 by @64ArthurAraujo)
  • Fix rotate tool button in editor disabled when selecting 1 circle (ppy/osu#26702 by @honguyenminh)
  • Fix merging sliders with the same StartTime causing a Unhandled Exception (ppy/osu#27768 by @64ArthurAraujo)

Framework

Fix word wrapping not working well with chinese/japanaese/korean languages (ppy/osu-framework#6231 by @bdach)

Smaller changes

  • Fix over time degradation of deferred renderer performance (ppy/osu-framework#6210 by @smoogipoo)
  • Use a union struct for RenderEvents (ppy/osu-framework#6209 by @smoogipoo)
  • Check BASS error codes more diligently when retrieving waveform data (ppy/osu-framework#6213 by @bdach)
  • Remove effect prioritisation to fix segfaults (ppy/osu-framework#6214 by @smoogipoo)
  • Reduce scope of experimental renderer (ppy/osu-framework#6219 by @smoogipoo)
  • Add event handler for user change of TabControl tab selection (ppy/osu-framework#6218 by @frenzibyte)
  • Update SDL2 package + use SDL_GetWindowSizeInPixels (ppy/osu-framework#6226 by @smoogipoo)
  • FFmpeg Linux binaries: Include version in file name (ppy/osu-framework#6153 by @FreezyLemon)
  • Update FFmpeg binaries (ppy/osu-framework#6227 by @github-actions[bot])
  • FFmpeg: Only load versioned libraries on Linux (ppy/osu-framework#6154 by @FreezyLemon)
  • Tweak behavior of cursor movement while text is selected to better match expectations (ppy/osu-framework#6228 by @ggliv)
  • Prepare SDL2ControllerBindings class for SDL3 (ppy/osu-framework#6232 by @Susko3)
  • Fix tablet driver log output subscription not unsubscribing after disposing/disabling (ppy/osu-framework#6237 by @Joehuu)
  • Update SDL3 (ppy/osu-framework#6240 by @smoogipoo)

Gameplay

Change gameplay disclaimers to show inline and not delay gameplay start (ppy/osu#27616 by @bdach)

Add delayed resume for taiko/catch/mania (ppy/osu#27079 by @smoogipoo)

Fix some maps requiring multiple intro skips that weren't there on stable (ppy/osu#27784 by @bdach)

Add new icons for hit error meter (ppy/osu-resources#317 by @peppy)

2024-04-04 14 29 55@2x

Update hit error metre to use new icons (ppy/osu#27787 by @peppy)

Smaller changes

  • Fix incorrectly encoded score IsPerfect value (ppy/osu#27668 by @smoogipoo)
  • Add sample for gameplay resume countdown (ppy/osu-resources#314 by @nekodex)
  • Fix break overlay arrows look ugly on bright backgrounds (ppy/osu#27760 by @EVAST9919)
    • | before | after | |--------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------| | master | pr |

Gameplay (osu!)

  • Fix bulbs on Catmull sliders (ppy/osu#27734 by @smoogipoo)
    • Some old maps were showing weird loops in sliders which weren't rendered in stable. Now they don't render here either.

Gameplay (osu!catch)

Gameplay (osu!mania)

  • Consider keymods in beatmap filtering + panel display (ppy/osu#27747 by @smoogipoo)

Gameplay (osu!taiko)

Fix taiko mascot size not matching expectations (ppy/osu#27758 by @peppy)

Smaller changes

  • Fix taiko legacy score simulator not including swell tick score gain into bonus portion (ppy/osu#27729 by @bdach)

Import

  • Fix SkinImporter not using invariant culture when parsing skins without skin.ini (ppy/osu#27739 by @Susko3)
  • Avoid reporting an import as successful when all beatmaps failed to import (ppy/osu#27755 by @peppy)

Online

Support Discord game invites in multiplayer lobbies (ppy/osu#27443 by @jvyden)

Smaller changes

  • Skip score uploads when nothing was hit in score (ppy/osu-server-spectator#224 by @bdach)
  • Fix EndPlaySession() not broadcasting play end to other users on unranked beatmap plays (ppy/osu-server-spectator#225 by @bdach)
  • Add custom message in the case of a invalid beatmap_hash (ppy/osu#27783 by @64ArthurAraujo)
    • Will now show a more friendly "A new version of this beatmapset is available please update. Your score will not be submitted."
  • Disable Discord URI registration on macOS for now (ppy/osu#27789 by @smoogipoo)

Platform

######## Changes

  • (SDL3-CS) from namespace SDL2 & class SDL to namespace SDL & class SDL3 (made more sense as the functions are imported from SDL3.dll)
  • (SDL3-CS) structs and enums now live in the namespace instead of being nested in the SDL3 class
  • (SDL3-CS) pointer types are now proper pointers instead of IntPtr, which means more "unsafe" code
  • (SDL3-CS) minor changes to return/struct types, reducing need for casts
  • (SDL3-CS) simple function signature changes: from ref, in & out to pointers (unfortunate, but automatically generating these would be hell)
  • (SDL3-CS) function that take strings now take ReadOnlySpan<byte>, requiring Encoding.UTF8.GetBytes() calls or UTF-8 string literals
  • (SDL3-CS) function pointers instead of delegates in native callback functions
  • simple renames done via SDL-provided build-scripits/rename_symbols.py
  • migrations from the Migrating to SDL 3.0 guide
  • minor update of SDL3ControllerBindings logic (basically per SDL3 migration guide)
  • removal of borderless fullscreen on macOS and Linux (merged into fullscreen with SDL3)
  • updated windowing logic to account for SDL_DisplayID instead of previously used display index
  • osu!framework DisplayMode.RefreshRate changed from int to float
  • SDL relative mouse mode instead of custom WindowsMouseHandler mouse logic including removal of custom tablet handling logic. SDL_pen.h would be the replacement for that, but it's currently only supported on Linux
  • updated WindowsWindow to account for SDL_SYSWMEVENT removal has caused some minor regressions in IME handling (the new method isn't giving us all the expected messages)
  • updated JetBrains.Annotations to latest version
  • renamed SDL2 → SDL3

######## Issues

  • IOpenGLGraphicsSurface.BackbufferFramebuffer used to return useful information on iOS
  • waiting un upstream: https://github.com/libsdl-org/SDL/issues/9430
  • OpenGL probably won't work on iOS?
  • minor IME regressions on windows
  • releasing mouse button outside window with relative mouse mode causes next click to be ignored (SDL issue, it seems)
  • (possible issue) non-OTD tablet input with relative mouse mode on windows (WindowsMouseHandler logic was removed)

######## Future work

  • add full support for async raw mouse + keyboard on windows #6235
  • look into windows IME regressions (and maybe switch to SDL IME events)
  • update my currently open PRs to SDL3 (when I feel like it)

######## Testing

I've tested mouse, keyboard

Reliability

Attempt to disable custom rulesets that can be linked to an unhandled crash (ppy/osu#27698 by @bdach)

After seeing yet another report of this something in me broke and I decided I have had enough of it.

What this does is that when the game is dying, it will hand off the exception to RulesetStore for a last-ditch inspection. RulesetStore will walk the call stack, and check if any ruleset has been involved in the trash fire. If it finds one, it banishes it to the blagole by renaming the dll to something that won't match the dll pattern (namely by attaching a .broken faux-extension suffix to the filename).

On launch, the game checks for .dll.broken ruleset files in the rulesets directory, and raises a notification for every single one that it finds to let the users know. And yes it will do that on every startup. I don't much care at this point (partially because I don't even know if reviewers will accept the starting premise of this - if they will I am willing to put some more work into this).

Smaller changes

  • Warn about not using an official "deployed" build (ppy/osu#27681 by @smoogipoo)
    • Some package managers (e.g. the AUR) may choose to build "deployed" game packages from tags, attaching the true game version to the built assembly (e.g. 2024.312.0). This PR allows an attribute to be attached that indicates whether this is an officially sanctioned build, and displays a notification if not.
  • Fix double binding causing game crash after API enters failing state (ppy/osu#27754 by @peppy)
  • Fix possible crash due to race in DiscordRichPresence (ppy/osu#27810 by @smoogipoo)
    • Encountered by chance:

As far as I can tell the failure path looks something like this:

  • OsuGameBase.load() -> loads APIAccess
  • APIAccess will begin receiving Update()s immediately upon game's LoadComplete
  • OsuGameDesktop.LoadComplete() -> begins async load of DiscordRichPresence
  • DiscordRichPresence.load() -> binds event with runOnceImmediately.
  • At some point APIAccess updates the user object (from the update thread), creating a race condition between it and the runOnceImmediately above.

Results

Display misses in the hit accuracy heatmap (ppy/osu#27064 by @smoogipoo)

Screenshot 2024-02-06 at 22 23 37

Apply partial fade on pp display on results screen when score will not give pp (ppy/osu#27756 by @bdach)

osu_2024-03-29_11-14-44 osu_2024-03-29_11-13-02

Skin Editor

  • Fix newly placed items in skin editor not getting correct anchor placement (ppy/osu#27832 by @peppy)
    • | Before | After | | :---: | :---: | | 2024-04-12 17 09 41@2x | 2024-04-12 17 09 27@2x |

Song Select

Support filtering for multiple statuses when searching beatmaps in the map picker (ppy/osu#27635 by @vladfrangu)

This adds the ability to search for something like status=r status=l and include both.

Smaller changes

  • Stop blocking player load when hovering over osu! logo (ppy/osu#26937 by @frenzibyte)

Storyboard

  • Revert recent storyboard optimisations (ppy/osu#27797 by @smoogipoo)
    • They were causing issues with some edge cases.

UI

Remember login by default (ppy/osu#27587 by @peppy)

Kinda what is expected from a user's perspective

Add ability to schedule and rotate main menu content (ppy/osu#27722 by @peppy)

Smaller changes

  • Rearrange rankings overlay tabs to match web (ppy/osu#27595 by @Joehuu)
  • Fix first word bold not applying correctly after first language change (ppy/osu#27601 by @bdach)
  • Fix noticeable masking artifact of beatmap cards when already downloaded (ppy/osu#27607 by @Joehuu)
    • | Before | After | | --- | --- | | Screenshot 2024-03-13 at 11 23 00 PM | Screenshot 2024-03-13 at 11 21 16 PM |
  • Fix animated UI elements not beat syncing correctly at slower playback rates (ppy/osu#26707 by @peppy)
  • Localisation updates (ppy/osu-resources#318 by @peppy)

2024.312.1

1 month ago

Code Quality

  • Implement a "deferred" renderer (ppy/osu-framework#6190 by @smoogipoo)
    • Available for testing in the next release, probably.
  • Fix incorrect disposal pattern (ppy/osu-framework#6211 by @smoogipoo)

Online

Fix medals which are specific to a game mode not displaying correctly (ppy/osu#27574 by @bdach)

Performance

Reduce update overhead in osu! playfield when many objects are visible (ppy/osu#27562 by @EVAST9919)

Reliability

Downgrade realm to work around crashes on latest release (ppy/osu#27585 by @peppy)

Running osu! with data stored on an ExFAT drive stopped working with the last release. This will be fixed in this release. If your data is missing, please open your osu! data folder and rename the client_xxx_corrupted.realm file to client.realm (deleting the new one created with a smaller filesize) after completing the update.

Fix exports containing zero byte files after import from specific ZIP archives (ppy/osu#27586 by @bdach)

Full Changelog: https://github.com/ppy/osu/compare/2024.312.0...2024.312.1

2024.312.0

1 month ago

Code Quality

  • Don't clear Logger.NewEntry handlers when flushing (ppy/osu-framework#6191 by @Susko3)
  • Update github actions to resolve deprecation warnings (ppy/osu-server-spectator#221 by @bdach)
  • Update github actions to resolve most node deprecation warnings (ppy/osu-framework#6194 by @bdach)
  • Update github actions to resolve most node deprecation warnings (ppy/osu#27324 by @bdach)
  • Cleanup common Renderer methods (ppy/osu-framework#6186 by @smoogipoo)
  • Don't use sentry when running in debug mode (ppy/osu-server-spectator#223 by @peppy)
  • Fix first call to cycleLogs failing due to directory not existing (ppy/osu-framework#6200 by @peppy)
  • Fix test failure on leap years (ppy/osu#27427 by @Detze)
  • Remove useless DrawablePool in ColourHitErrorMeter (ppy/osu#27441 by @cdwcgt)
  • Fix DebugUtils.IsDebugBuild not working on Android (ppy/osu-framework#5617 by @Susko3)
  • Use new BCL APIs from .NET 7/8 (ppy/osu-framework#6203 by @huoyaoyuan)
  • Introduce abstraction of VeldridDevice and pipelines (ppy/osu-framework#6187 by @smoogipoo)
  • Use new ToDictionary() overload without delegates (ppy/osu#27502 by @turbedi)
  • Log GlobalStatistics when exporting logs from settings (ppy/osu#27242 by @Susko3)
  • Update framework (ppy/osu#27506 by @peppy)
  • Increase interface surface of Veldrid components (ppy/osu-framework#6189 by @smoogipoo)
  • Use ThrowHelper methods in more places (ppy/osu#27501 by @turbedi)
  • Use ThrowHelper methods in more places (ppy/osu-framework#6184 by @turbedi)
  • Fix TestSceneSkinnableSound failing (ppy/osu#27558 by @EVAST9919)
  • Remove leftover method in KeyCombination struct (ppy/osu-framework#6208 by @frenzibyte)
  • Track Veldrid staging resources per-frame (ppy/osu-framework#6206 by @smoogipoo)
  • Implement a "deferred" renderer (ppy/osu-framework#6190 by @smoogipoo)
    • Available for testing in the next release, probably.
  • Fix incorrect disposal pattern (ppy/osu-framework#6211 by @smoogipoo)

Editor

Fix editor displaying combo colours in effectively incorrect order (ppy/osu#27344 by @bdach)

Fix "Use current" snap not working (ppy/osu#27386 by @peppy)

Change editor screen switcher control design and behaviour to act like a button (ppy/osu#27516 by @frenzibyte)

Smaller changes

  • Fix incorrect gradient application to some timeline blueprints (ppy/osu#27564 by @EVAST9919)
    • We were applying colour to the drawable with negative padding (which by itself is a workaround). Now applying directly to the content.
master pr
master-long pr-long
master-short pr-short

Gameplay

Make flashlight scale with playfield (ppy/osu#26181 by @rushiiMachine)

When the playfield is shrunk with mods such as BarrelRoll, flashlight does not account for this, making it significantly easier to play. This makes it scale along with the playfield Scale.

Avoid stopping / starting gameplay when running behind but a replay isn't attached (ppy/osu#27504 by @peppy)

Should fix the underlying issue causing the backwards seeks during gameplay.

Add "Argon" performance points counter (ppy/osu#27498 by @frenzibyte)

Add new hitsounds for "argon" skin (ppy/osu-resources#311 by @nekodex)

My primary goal with this sampleset is to offer a fresh, modern take on stable/legacy's hitsounds that would work as a drop-in replacement for beatmaps that were created with stable/legacy's sampleset in mind.

I've used reverb and increased stereo width to make the hitsounds less 'in your face' than the stable/legacy ones, making them more pleasant to the ear IMO. To compensate for potential audibility loss, I've used increased transients (punchyness), greater frequency range (with distortion/saturation/etc) and in some cases a volume bump to get them sounding equally legible.

I also decided to shorten the samples (relative to stable/legacy) in response to modern beatmaps being of increased difficulty/hitobject-density compared to maps from back when peppy created the stable/legacy sampleset.

In theory this allows for new players to progress further through harder maps before feeling the need to find an alternative skin/sampleset to hear what they're doing accurately - at which point, there's now conveniently also argon pro.

The sampleset does diverge a bit in some aspects (i.e. spinner sounds, fail sound, etc) to lean into lazer's aesthetic, but otherwise I hope the hitsounds should still be recognizable as some facsimile of their stable/legacy counterparts and hopefully still feel and play just as good (if not better) than stable/legacy did.

Smaller changes

  • Fix Argon and Triangles spinner freeze at low replay speed (ppy/osu#27359 by @EVAST9919)
  • Fix menu cursor tracking rotation while override by gameplay cursor (ppy/osu#27412 by @frenzibyte)
  • Fix missing event unbinds (ppy/osu#27520 by @smoogipoo)
  • Add support for new "argon" hitsounds (ppy/osu#27535 by @nekodex)

Gameplay (osu!)

  • Fix old-style legacy spinner fade-in not matching stable (ppy/osu#27320 by @frenzibyte)
  • Allow pp for muted mod for any combination of settings (ppy/osu#27144 by @cdwcgt)
    • "Muted" doesn't change gameplay so can we make it ranked when adjust settings.
  • Fix slider head being incorrectly dimmed twice (ppy/osu#27369 by @Detze)
    • | before | after | | :---: | :---: | | before | after |
  • Rewrite legacy slider path rendering to match stable better (ppy/osu#27383 by @Detze)
  • Fix slider tails sometimes not dimming correctly (ppy/osu#27401 by @bdach)
  • Fix osu! standardised score estimation algorithm violating basic invariants (ppy/osu#27513 by @bdach)
  • Fix slider tracking state not restoring correctly in all cases on rewind (ppy/osu#27429 by @bdach)
  • Fix cross-talk between pooled DrawableSliderRepeat usage causing incorrect rotation (ppy/osu#27529 by @peppy)

Gameplay (osu!catch)

  • Fix draining processor failing gameplay on bonus misses, tiny droplet misses, and ignore hits (ppy/osu#27154 by @bdach)
  • Fix catch fruit position getting randomised when last fruit has zero position (ppy/osu#27456 by @frenzibyte)
  • Fix catch pp calculator not matching live with respect to miss handling (ppy/osu#27489 by @bdach)

Gameplay (osu!mania)

  • Fix osu!mania key images potentially showing gaps between columns (ppy/osu#27453 by @frenzibyte)
    • | Before | After | |--------|--------| | CleanShot 2024-03-01 at 22 52 59 | CleanShot 2024-03-01 at 22 53 28 |

Gameplay (osu!taiko)

  • Hide osu!taiko scrolling graphic when the beatmap has storyboard (ppy/osu#27424 by @frenzibyte)
  • Fix 1px flashlight gaps when gameplay scaling mode is active (ppy/osu#27533 by @bdach)

Allow better menu navigation using same hotkey to progress to destination (ppy/osu#27389 by @peppy)

You can now use:

  • L L L to get to playlists
  • M M M to get to multiplayer
  • S to get to settings
  • E E to get to the beatmap editor

Smaller changes

  • Fix main menu eating keys if user presses too fast (ppy/osu#27393 by @peppy)

Multiplayer

Implement difficulty tooltips for multiplayer lobbies (ppy/osu#26531 by @smallketchup82)

image

Online

Show user statistics updates on multiplayer and playlists results screens (ppy/osu#27331 by @bdach)

When discord is set to privacy mode, don't show beatmap being edited (ppy/osu#27440 by @peppy)

Scenarios include:

  • Editing one's own map and revealing their username in the creator field
  • Editing a private beatmap by someone else (ie. an unrevealed pool beatmap for a tournament)

Add flow for displaying achieved medals (ppy/osu#27276 by @bdach)

Smaller changes

  • Clear stored username/token from config when relevant checkboxes are unticked on login panel (ppy/osu#27299 by @BoudewijnPopkema)
  • Resolve issues with Discord RPC while on Do Not Disturb (ppy/osu#27354 by @jvyden)

Performance

Improve storyboard performance by better handling sprites lifetime (ppy/osu#27454 by @EVAST9919)

Let's use world.execute(me) as a storyboard example, since it has a lot of objects, which makes all the values exaggerated and easier to see the difference.

Smaller changes

  • Fix allocations in SliderInputManager.updateTracking (ppy/osu#27230 by @EVAST9919)
  • Reduce allocations in TimelineBlueprintContainer (ppy/osu#27297 by @EVAST9919)
  • Rework AccuracyCircle to not use BufferedContainers (ppy/osu#26769 by @EVAST9919)
  • Reduce allocations in SmokeSegment (ppy/osu#27357 by @EVAST9919)
  • Reduce osu spinner allocations (ppy/osu#27364 by @EVAST9919)
  • Further reduce allocations during gameplay (ppy/osu#27379 by @EVAST9919)
  • Reduce allocations in PerformanceOverlay while in expanded state (ppy/osu-framework#6197 by @EVAST9919)
  • Reduce allocations in AggregateBindable (ppy/osu-framework#6198 by @smoogipoo)
  • Reduce allocations when ModSelectOverlay is visible (ppy/osu#27366 by @EVAST9919)
  • Remove bindable from CircularProgress (ppy/osu-framework#6199 by @EVAST9919)
  • Use high performance session during gameplay (ppy/osu#27391 by @smoogipoo)
  • Reduce frequency of global UBO changes (ppy/osu-framework#6188 by @smoogipoo)
  • Fix allocations in EffectPointVisualisation (ppy/osu#27432 by @EVAST9919)
  • Fix WikiPanelContainer causing allocations and poor performance (ppy/osu#27543 by @EVAST9919)
  • Reduce allocations while hovering DrawableFlag (ppy/osu#27551 by @EVAST9919)
  • Reduce allocations in CursorEffectContainer and TooltipContainer (ppy/osu-framework#6207 by @EVAST9919)
  • Reduce allocations in editor timing screen (ppy/osu#27556 by @EVAST9919)

Platform

Add missing .olz association to iOS (ppy/osu#27329 by @SupDos)

Associate with files and URIs on windows (ppy/osu#27001 by @Susko3)

Smaller changes

  • Fix file association descriptions not being written when updating from an older version (ppy/osu#27449 by @Susko3)

Skin Editor

  • Fix skin editor freezing when replay screen exits early (ppy/osu#26149 by @rushiiMachine)

Song Select

  • Fix visual BPM difference between beatmap wedge and mod selection (ppy/osu#27232 by @maromalo)
  • Adjust search terms for mods (ppy/osu#27192 by @smoogipoo)
  • Adjust beatmap carousel padding to avoid scrollbar disappearing underneath logo (ppy/osu#26701 by @peppy)
  • Fix mod select overlay settings order not always matching mod panels (ppy/osu#27497 by @frenzibyte)
  • Update F rank badge colours to match latest designs (ppy/osu#27491 by @bdach)
  • Fix mod selection in online-play rooms not accounting for mods of selected item (ppy/osu#27214 by @Givikap120)
  • Change initial scroll effect to mod columns (ppy/osu#27403 by @Gabixel)

UI

Add highest rank tooltip to global rank display (ppy/osu#27107 by @Joehuu)

Screenshot 2024-02-09 at 3 56 49 PM

Fix low pass filter getting stuck in multiple locations (ppy/osu#27390 by @peppy)

Fix advanced stats in beatmap info overlay showing "key count" on non-mania beatmaps (ppy/osu#27380 by @frenzibyte)

Smaller changes

  • Update markdown code block implementation in line with framework changes (ppy/osu#27218 by @frenzibyte)
  • Localisation updates (ppy/osu-resources#310 by @peppy)
  • Add feedback to delete buttons even when no-op (ppy/osu#27234 by @brandondong)
  • Move back/quit button from bottom left to fail overlay when spectating (ppy/osu#27414 by @Joehuu)
  • Fix wireframe misalignment in argon accuracy counter (ppy/osu#27417 by @bdach)
  • Fix "unranked explanation" tooltip text using incorrect translation key (ppy/osu#27472 by @frenzibyte)
  • Fix results screen accuracy circle not showing correctly for failed S with no flair (ppy/osu#27517 by @Joehuu)
    • | Before | After | | --- | --- | | Screenshot 2024-03-06 at 10 56 21 PM | Screenshot 2024-03-06 at 10 58 17 PM |
  • Update localisations (ppy/osu-resources#312 by @peppy)
  • Wrap beatmap listing filters and match web spacing (ppy/osu#27541 by @Joehuu)

New Contributors

Full Changelog: https://github.com/ppy/osu/compare/2024.221.0...2024.312.0

2024.302.1

2 months ago

Gameplay

Fix gameplay seeking backwards for a single frame for some users (ppy/osu#27426 by @peppy)

Gameplay (osu!)

Fix incorrect standardised score estimation on selected beatmaps in osu! ruleset (ppy/osu#27361 by @bdach)

Can only realistically affect beatmaps with difficultyPeppyStars = 0, of which there are known 2:

Song Select

Improve search performance at song select when a collection is selected (ppy/osu#27336 by @peppy)

Platform

Adjust user storage paths for better cross-platform support (ppy/osu-framework#6196 by @smoogipoo)

Full Changelog: https://github.com/ppy/osu/compare/2024.221.0...2024.302.1

2024.221.0

2 months ago

Gameplay

Fix beatmap offsets not being applied correctly to extreme rate changes (ppy/osu#27243 by @myQwil)

Gameplay (osu!)

Fix classic skins incorrectly applying scaling factor to approch circles (ppy/osu#27286 by @peppy)

In triangles and argon, we expanded hitcircles to take up the full 128 px which are clickable, but still use the old approach circle sprite. To make it feel correct (ie. disappear as it collides with the hitcircle, not when it overlaps the border) we need to expand it slightly.

Note that this fix only affects classic/legacy skins.

Before After
2024-02-21 13 49 47@2x 2024-02-21 13 50 27@2x
2024-02-21 13 47 25@2x 2024-02-21 13 45 42@2x
2024-02-21 13 46 56@2x 2024-02-21 13 45 28@2x
2024-02-21 13 46 39@2x 2024-02-21 13 45 50@2x

Fix classic skin follow circles animating from incorrect starting point (ppy/osu#27288 by @peppy)

Performance

  • Reduce osu editor allocations with many objects selected (ppy/osu#27249 by @EVAST9919)
  • Reduce mania editor allocations with many objects selected (ppy/osu#27275 by @EVAST9919)
  • Apply padding to GridContainers directly where possible (ppy/osu#27278 by @EVAST9919)
  • Fix allocations in SliderInputManager.updateTracking (ppy/osu#27230 by @EVAST9919)

Settings

Remove Veldrid OpenGL renderer, always use (legacy) GLRenderer (ppy/osu-framework#6193 by @smoogipoo)

Spurred by people using this renderer, likely because "legacy" has a bad connotation associated with it (e.g. https://discord.com/channels/188630481301012481/1097318920991559880/1209220240383418438).

This forces GLRenderer ("legacy") to be used even when the OpenGL renderer type is selected.

Song Select

Broke in yesterday's release, oops.

UI

  • Localise storage error popup dialog (ppy/osu#27258 by @Loreos7)
  • Update markdown code block implementation in line with framework changes (ppy/osu#27218 by @frenzibyte)

2024.219.0

2 months ago

Code Quality

  • Update inspectcode to 2023.3.3 (ppy/osu#26956 by @smoogipoo)
  • Adjust default min result of SliderTailHit, remove override (ppy/osu#26877 by @smoogipoo)
  • Rework UserPanels to reduce container nesting (ppy/osu#26924 by @EVAST9919)
  • Use new LINQ Order{Descending} instead of OrderBy{Descending} when possible (ppy/osu#27095 by @turbedi)
  • Improve exception logging of unobserved exceptions via FireAndForget (ppy/osu#27077 by @peppy)
  • Add note to never run release config to contributing guidelines (ppy/osu#27115 by @bdach)
  • Refactor metadata lookup flows (ppy/osu#23822 by @bdach)
  • Add inline documentation as to why classic mod is not ranked (ppy/osu#27176 by @peppy)
  • Update IDE configurations to point at net8.0 folders (ppy/osu#27186 by @FamousPig)
  • Update .NET version on readme (ppy/osu#27190 by @Joehuu)
  • Update IDE configurations to point at net8.0 folders (ppy/osu-framework#6179 by @FamousPig)
  • Add [RequireStaticDelegate] annotations (ppy/osu-framework#6174 by @Susko3)

Editor

Fix deselecting slider adding control points (ppy/osu#27056 by @kongehund)

Will no longer add control points if the selection has 2 or more objects.

Framework

Upgrade to .NET 8 and C# 12 (ppy/osu-framework#6169 by @smoogipoo)

Performance improvements across the board. Over 50% in some cases (song select is apparently much nicer now).

Smaller changes

  • Update inspectcode to 2023.3.3 (ppy/osu-framework#6164 by @smoogipoo)
  • Fix re-arrangeable lists not react on collection Move events (ppy/osu-framework#6165 by @Feodor0090)
  • Add readonly dictionary wrapper that removes enumerator alloc (ppy/osu-framework#6163 by @smoogipoo)
  • Fix Waveform not disposing Stream (ppy/osu-framework#6152 by @hwsmm)
  • Set UTF-8 console encoding on windows (ppy/osu-framework#6170 by @Susko3)
  • Fix some .NET 8 CA1416 android inspections (ppy/osu-framework#6171 by @Susko3)
  • Return List instead of IEnumerable in InputResampler (ppy/osu-framework#6173 by @EVAST9919)
  • Ignore missing feedback api (ppy/osu-framework#6176 by @Feodor0090)
  • Fix obsolete code in Android safe area handling by using AndroidX (ppy/osu-framework#6175 by @Susko3)
  • Use new MD5/SHA.HashData(Stream) overload (ppy/osu-framework#6177 by @turbedi)
  • Update veldrid package (ppy/osu-framework#6178 by @smoogipoo)
  • Fix recent collection initialiser inspection (ppy/osu#27167 by @smoogipoo)
  • Update framework (ppy/osu#27179 by @peppy)

Gameplay

Allow a few new mods and mod settings for pp (ppy/osu#26935 by @bdach)

The following mods and settings are now allowing PP gains:

  • Mod "Accuracy Challenge".
  • Mod "Blinds".
  • Mod "No Scope".
  • "Restart on fail" setting of Sudden Death & Perfect.
  • "Adjust pitch" setting of Half Time / Double Time.

Show PP and rank changes in the toolbar (ppy/osu#27156 by @bdach)

Smaller changes

  • Bump databased star rating versions (ppy/osu#27065 by @smoogipoo)
    • Should fix some users that have had lazer installed for quite some time having incorrect SR values for some old beatmaps.
  • Improve low volume detection (ppy/osu#26951 by @myQwil)
  • Fix WorkingBeatmapCache caching beatmap in wrong state leading to crash (ppy/osu#27239 by @peppy)

Gameplay (osu!)

Fix relax mod not respecting tracking state of sliders when triggering actions (ppy/osu#26763 by @frenzibyte)

Create key-presses when watching osu!stable "Relax" replays (ppy/osu#27145 by @tsunyoku)

osu!stable does not record key presses onto replays with Relax, so attempting to watch them back in lazer didn't work historically.

Smaller changes

  • Fix cursor ripples displaying on release positions in replays (ppy/osu#27200 by @frenzibyte)

Gameplay (osu!catch)

Never flip fruit on plate (ppy/osu#27165 by @frenzibyte)

Limit vertical visibility of osu!catch playfield to an aspect ratio of 4:3 (ppy/osu#27162 by @frenzibyte)

Gameplay (osu!mania)

Add progressive coverage for mania's Hidden and FadeIn mods (ppy/osu#27068 by @smoogipoo)

This restores progressive coverage that HD and FI had in osu!stable, and adds a new mod ManiaModCover / CO which allows setting a custom cover.

Smaller changes

  • Fix selected legacy skins crashing on zero-length hold notes (ppy/osu#27138 by @bdach)

Gameplay (osu!taiko)

  • Convert selected legacy skin sprites to grayscale (ppy/osu#27059 by @bdach)
    • Fixes silly skins doing silly stuff they shouldn't.

Online

Give better visibility when the game is pending 2FA (ppy/osu#26920 by @peppy)

Add 2FA verification screen to registration flow (ppy/osu#26950 by @bdach)

Smaller changes

  • Fix incorrect connection metrics tracking on instances pending shutdown (ppy/osu-server-spectator#214 by @bdach)
  • Change type of some exceptions so they're logged (ppy/osu-server-spectator#216 by @smoogipoo)
  • Log score uploader errors to sentry (ppy/osu-server-spectator#217 by @bdach)
  • Fix selected room bindable being set to null regardless of the removed room (ppy/osu#27033 by @frenzibyte)
  • Add datadog tracking of score uploader metrics (ppy/osu-server-spectator#218 by @bdach)
  • Use staggered exponential backoff when retrying in PersistentEndpointClientConnector (ppy/osu#27067 by @bdach)
  • Populate TotalScoreInfo when converting SoloScoreInfo to ScoreInfo (ppy/osu#27069 by @bdach)
  • Add additional gameplay metadata to room score request (ppy/osu#27113 by @smoogipoo)
  • Use more stringent checks when applying online metadata (ppy/osu#27143 by @bdach)
    • Fixes cases where beatmaps are imported with incorrect/outdated metadata, leading to subsequent failures.
  • Fix a few issues in metadata hub's disconnection requested flow (ppy/osu#27193 by @bdach)
  • Add better submission failure messaging (ppy/osu#27180 by @bdach)
  • Update packages (ppy/osu-server-spectator#219 by @peppy)

Performance

  • Reduce allocation overhead in Playfield (ppy/osu#26940 by @EVAST9919)
  • Fix DrawableManiaRuleset performing skin lookup every frame (ppy/osu#26938 by @EVAST9919)
  • Fix multiplayer/playlists lounge screen disposing rooms synchronously (ppy/osu#27021 by @frenzibyte)
  • Fix huge allocation overhead in UnstableRateCounter (ppy/osu#26976 by @EVAST9919)
  • Further reduce allocation overhead in ScrollingHitObjectContainer (ppy/osu#26863 by @EVAST9919)
  • Avoid closure allocations when applying hit object results (ppy/osu#26694 by @chandler14362)
  • Replace linq usage in Previous and Next on DifficultyHitObject with more direct computation (ppy/osu#27117 by @tsunyoku)
  • Fix huge allocation overhead during beatmap texture creation in song-select screen (ppy/osu#27132 by @EVAST9919)
  • Only compute flashlight in osu! difficulty calculations when required (ppy/osu#27116 by @tsunyoku)
  • Reduce allocations during aggregate beatmap sorts in song-select screen (ppy/osu#27173 by @EVAST9919)
  • Invalidate GridContainer only on DrawSize change (ppy/osu-framework#6180 by @EVAST9919)
  • Fix DrawableLinkCompiler allocations (ppy/osu#27199 by @EVAST9919)
  • Reduce allocations during beatmap selection (ppy/osu#27206 by @EVAST9919)
  • Cache created judgement in HitObject (ppy/osu#27114 by @EVAST9919)
  • Use SlimReadOnlyListWrapper for KeyBindingContainer.PressedActions (ppy/osu-framework#6185 by @EVAST9919)

Platform

Suggest to update only if the latest release is available for the current platform (ppy/osu#26930 by @Susko3)

We've had few releases lately where mobile isn't working / is crashing, so the mobile release was pulled. Unfortunately, the game would still send an update notification, leading to many people opening issues about the update not being available for their platform.

This fixes that.

Smaller changes

  • Update windows icon metrics to match previous icon (ppy/osu#27184 by @peppy)
  • Update iOS icon metrics to match previous icon (ppy/osu#27185 by @peppy)

Results

Fix results screen not handling F ranks properly (ppy/osu#26733 by @frenzibyte)

Song Select

Display which mods grant pp (ppy/osu#26934 by @bdach)

In mod select and in song select footer.

Add last played search filter in song select (ppy/osu#23129 by @Elvendir)

You can now search for played<30 for beatmaps played in the last 30 days.

Smaller changes

  • Add aliases "author" and "mapper" for searching creator (ppy/osu#27112 by @Stoppedpuma)
  • Fix star counter decrease animation being delayed when current is over displayed star count (ppy/osu#27205 by @Joehuu)
  • Consider case sensitivity when sorting beatmaps in song select (ppy/osu#26895 by @vmfunc)
    • Screenshot 2024-01-31 at 15 51 43

UI

Fix edit mod preset popover buttons overflowing on some languages (ppy/osu#26734 by @Joehuu)

Before After
Screenshot 2024-01-26 at 3 29 48 PM Screenshot 2024-01-26 at 3 29 08 PM

Fix hit accuracy heatmap points being offset (ppy/osu#27062 by @smoogipoo)

Before After
Screenshot 2024-02-06 at 21 54 50 Screenshot 2024-02-06 at 21 54 40

Truncate long dropdown menu item text and show tooltip (ppy/osu#27178 by @Joehuu)

Before After
Screenshot 2024-02-14 at 11 03 04 PM Screenshot 2024-02-14 at 11 01 11 PM

Fix logo tracking container being behind by one frame (ppy/osu#27224 by @peppy)

This was especially visible at the main menu when running in single thread mode.

Before After
2024-02-18 23 24 20 2024-02-18 23 22 51

Smaller changes

  • Localise remaining strings in settings section (ppy/osu#27015 by @Loreos7)
  • Localise remaining strings on import screen of the first-run setup (ppy/osu#26942 by @Loreos7)
  • Localise update-related process strings (ppy/osu#27054 by @Loreos7)
  • Update localisations (ppy/osu-resources#309 by @peppy)
  • Hide ruleset selector when on kudosu ranking (ppy/osu#27070 by @Joehuu)
  • Fix profile current location and interests icons not matching web (ppy/osu#27106 by @Joehuu)
  • Add support for displaying "unranked PP" placeholder (ppy/osu#27053 by @frenzibyte)
  • Add support for displaying "mapper" badge in comment section (ppy/osu#27164 by @frenzibyte)
  • Ignore soft-deleted beatmaps when trying to present from notification (ppy/osu#27163 by @frenzibyte)
  • Disable nested input managers on edited screen when skin editor is open (ppy/osu#27238 by @bdach)
  • Generalise markdown code block implementation to support indented style (ppy/osu-framework#6182 by @frenzibyte)
  • Ensure audio filters can't be attached before load (or post-disposal) (ppy/osu#27226 by @peppy)

2024.131.0

3 months ago

Code Quality

  • Adjust default min result of SliderTailHit, remove override (ppy/osu#26870 by @smoogipoo)

Framework

  • Fix android crashes (ppy/osu-framework#6162 by @bdach)
    • Android no like one optimisation we made, so said optimisation is reverted for now.

Gameplay (osu!)

Fix judgements fading out too fast on classic skins (ppy/osu#26839 by @bdach)

Adjust slider tick / end misses to show slightly longer (ppy/osu#26876 by @peppy)

Just some fine-tuning based on feedback.

Fix slider end judgements appearing at incorrect locations when mods that flip playfield are active (ppy/osu#26885 by @bdach)

Online

Fix crash when logging out during 2FA email verification (ppy/osu#26834 by @bdach)

Smaller changes

  • Fix incorrect client version being sent to spectator server (ppy/osu-server-spectator#212 by @smoogipoo)
  • Show a better message when score submission fails due to system clock being set wrong (ppy/osu#26871 by @peppy)
  • Fix menu banner not updating as often as we want it to (ppy/osu#26889 by @peppy)

Full Changelog: https://github.com/ppy/osu/compare/2024.130.2...2024.131.0

2024.130.2

3 months ago

Audio

Fix back sound being too loud when exiting many screens (ppy/osu#26612 by @peppy)

Code Quality

  • Add Statistics bindable to IAPIProvider and update it from SoloStatisticsWatcher (ppy/osu#26356 by @stanriders)
  • Update localisations (ppy/osu-resources#303 by @peppy)
  • Fix score submission test failures due to checking audio playback validity (again) (ppy/osu#26669 by @bdach)
  • Update README.md to link to new development project (ppy/osu#26740 by @hrfarmer)
  • Decouple notifications websocket handling from chat operations (ppy/osu#26724 by @bdach)

Editor

Fix lag when dragging first slider control point in editor (ppy/osu#26499 by @OliBomby)

Fix timing point changes not applying after selecting another one (ppy/osu#26585 by @frenzibyte)

Smaller changes

  • Fix glitchy path type correction for sliders in the editor (ppy/osu#26512 by @OliBomby)
    • Fixes an issue in the mechanism responsible for turning the path type to bezier when the perfect curve circle radius is too large.

Before:

https://github.com/ppy/osu/assets/17460441/89480d18-2d5e-4eaf-9d04-d396ce0b70b0

After:

https://github.com/ppy/osu/assets/17460441/135b1715-26f9-45b9-a6cc-92b72099e11d

  • Fix blueprint container not handling right clicks correctly while moving a blueprint (ppy/osu#26661 by @frenzibyte)
  • Fix slider sometimes not updating anchor position of nested objects (ppy/osu#26659 by @frenzibyte)
  • Prevent custom divisor ranges from halting divisor preset cycling (ppy/osu#26689 by @myQwil)

Framework

  • Guard against potential usage of DrawablePool without being added to hierarchy (ppy/osu-framework#6136 by @peppy)
  • Make IPC port configurable via HostOptions (ppy/osu-framework#6129 by @tsunyoku)
  • Add flaky test attribute and mark CanSeekForwardOnInterpolationFail as flaky (ppy/osu-framework#6140 by @frenzibyte)
  • Fix TemplateGameTestScene showing up in test browser (ppy/osu-framework#6146 by @Joehuu)
  • Include rounded corner radius in android safe area implementation (ppy/osu-framework#6143 by @bdach)
  • Ignore autogenerated .idea android file (ppy/osu-framework#6144 by @Susko3)
  • Write log header later to ensure game identifiers are present (ppy/osu-framework#6138 by @peppy)
  • Add the ability to solo a test in visual testing using [Solo] attribute (ppy/osu-framework#6137 by @peppy)
  • Fix build warning (ppy/osu-framework#6158 by @smoogipoo)
  • Implement Padding property in GridContainer (ppy/osu-framework#6145 by @EVAST9919)
  • Fix nested absolute sequences (ppy/osu-framework#6160 by @smoogipoo)

Gameplay

Fix background dim occasionally getting in a bad state when exiting gameplay (ppy/osu#26544 by @peppy)

Fix holding keys before gameplay starts resulting in incorrect input (ppy/osu-framework#6101 by @frenzibyte)

Fade hold-for-menu button out completely on non-touch devices (ppy/osu#26542 by @peppy)

Simplify gameplay pause sequence (ppy/osu#26605 by @peppy)

This removes the frequency ramp on pausing. This was something I was personally behind implementing and working to keep around, but nuking in favour of simplifying the process for now. In discussing with nekodex we both agree there is a better way forward than this.

This lays groundwork for doing other things, like allowing seeking during replay pause, and changing the way offsets work without worrying about the weird application considerations from the pause ramp effect.

Fix gameplay elements not correctly offsetting to avoid per-ruleset skin layout (ppy/osu#26609 by @peppy)

Change S rank to require no miss (ppy/osu#26630 by @peppy)

This is a change for osu!/osu!taiko to match stable. It's not final. We're just giving people what they are used to for now. If you're about to comment about how you disagree with this, then please make sure to search first and contribute to an existing conversation.

Smaller changes

  • De-dupe displayed hits in judgement counter (ppy/osu#26540 by @peppy)
  • Only display offset toast when in local gameplay (ppy/osu#26543 by @peppy)
  • Implement shaders for ArgonHealthDisplay (ppy/osu-resources#302 by @EVAST9919)
  • Fix argon health bar showing "miss" bar for bananas (ppy/osu#26561 by @peppy)

Gameplay (osu!)

Fix flashlight not dimming if slider head is hit early (ppy/osu#26576 by @bdach)

Fix cursor scale animation not matching stable on classic skins (ppy/osu#26567 by @peppy)

Adjust slider tick / end miss animations to be shorter (ppy/osu#26668 by @peppy)

There's still a lot of feedback that these are noisy and get in the way. As a recap, you can already skin these out using sliderendmiss and sliderendtick, but adding these in a classic skin is a bit of a pain in the ass, so I want to make the defaults usable for most users.

We'll continue to iterate based on feedback!

Adjust slider tick / end miss visuals to be less noisy (ppy/osu#26703 by @peppy)

More subtle, less noisy, but still should describe the misses quite well.

I toyed with bringing across the stable behaviour of ticks not fading out but people preferred this direction, so let's stick with it.

Smaller changes

  • Fix pop-in scale transition in resume overlay affecting input area (ppy/osu#26545 by @frenzibyte)
  • Fix touch device not always activating when it should (ppy/osu#26575 by @bdach)
  • Adjust legacy slider misses to be smaller again (ppy/osu-resources#304 by @peppy)
    • People are still complaining so I want to first try to make them more subtle.

Gameplay (osu!mania)

Fix key overlay not showing special key in the right place (ppy/osu#26589 by @peppy)

Gameplay (osu!taiko)

Fix taiko maps containing only drum rolls / swells not being passable without mods (ppy/osu#26578 by @bdach)

Change the input drum width to be consistent across all skins (ppy/osu#26632 by @frenzibyte)

Up until now, the input drum width was variable per skin, which results in the overall gameplay width changing based on skin. This has been discussed to be quite bad and must not be the case (see discord).

The constant width for the input drum has been defined to be 180px, visually matching osu!stable on classic skin. Default skins have been altered slightly to respect that width (basically set its height with respect to width rather than the opposite).

Change hit target position in osu!taiko to always match stable (ppy/osu#26634 by @frenzibyte)

triangles argon
CleanShot 2024-01-20 at 02 01 21 CleanShot 2024-01-20 at 02 01 01

Move osu!taiko playfield down a nudge to match stable visually (ppy/osu#26635 by @frenzibyte)

Remove rounding of slider velocity (when applied as scroll speed) (ppy/osu#26616 by @peppy)

This fixes some beatmaps using very precise slider velocities to create a speed ramp from looking too "jumpy".

Fix osu!taiko's scroll speed not matching stable expectations (ppy/osu#26781 by @frenzibyte)

This finally brings osu!taiko in line with scroll speed on stable, even when "classic" mod is not applied.

Smaller changes

Fix toolbar buttons not being clickable at screen edges (ppy/osu#26530 by @Susko3)

Allow adjusting volume controls via a drag (ppy/osu#26564 by @peppy)

Did you know you could do this in stable? Well you can in lazer too now.

Fix star fountains sometimes resetting visually (ppy/osu#26667 by @peppy)

Starting/stopping the firing process was done very weirdly, causing the underlying class to get confused.

Fix now playing beatmap backgrounds not being correctly centred (ppy/osu#26680 by @peppy)

Update logo (ppy/osu#26704 by @peppy)

Say hello to your new osu! logo. And don't trip on the dot.

Update backgrounds (ppy/osu-resources#306 by @arflyte)

Brand new menu backgrounds to match the fresh logo.

Smaller changes

  • Update logo resources (ppy/osu-resources#305 by @peppy)

Multiplayer

Fix touch device mod getting selected as a free mod in playlists (ppy/osu#26492 by @frenzibyte)

Remember the user's selected multiplayer room filter mode (ppy/osu#26538 by @peppy)

Fix multiplayer scores not updating after failing (ppy/osu#26751 by @frenzibyte)

Smaller changes

  • Fix multiplayer potentially selecting mods of wrong ruleset when starting match (ppy/osu#26496 by @frenzibyte)

Online

Add user card with global/country ranks to login overlay (ppy/osu#26340 by @stanriders)

image

Add two factor authentication flow (ppy/osu#25480 by @peppy)

Credit to spaceman_atlas / nanaya for the API side of this implementation.

Smaller changes

  • Update to use new score storage backend (ppy/osu-server-spectator#209 by @peppy)
  • Fix incorrect handling of StartChatRequest in websocket chat client (ppy/osu#26780 by @bdach)

Overlays

  • Fix changelog stream user count only accounting for latest build (ppy/osu#26626 by @Joehuu)

Performance

Fix gameplay counter textures not being cached ahead of time (ppy/osu#26536 by @peppy)

Fix judgement pooling not working correctly in osu!taiko and osu!mania (ppy/osu#26546 by @peppy)

Reduces potential stutters when loading initial textures, plus should decrease gameplay overhead quite considerably (until now, each time a pool was requested for a different judgement type it would have to reinitialise the judgement's internal drawables).

Rewrite ArgonHealthDisplay to use shaders (ppy/osu#26479 by @EVAST9919)

Hugely improves the performance of this component.

Improve performance and visuals of glowing text (ppy/osu#26573 by @EVAST9919)

master pr
song-select-old song-select-new

Fix OsuPlayfield being retained indefinitely after gameplay (ppy/osu#26770 by @peppy)

Ouch.

Smaller changes

  • Fix runaway texture uploads when window is minimised with frame statistics visible (ppy/osu-framework#6133 by @peppy)
  • Fix cursor ripple pool not loading pooled drawables ahead of time (ppy/osu#26547 by @bdach)
  • Fix DragStart and TouchMove input events possibly being handled by unrooted drawables (ppy/osu-framework#6135 by @OliBomby)
  • Fix ColourHitErrorMeter not loading pooled drawables ahead of time (ppy/osu#26549 by @bdach)
  • Change rolling counters to use quicker easing types (ppy/osu#26593 by @peppy)
    • This keeps roughly the same animation style, but improves performance by avoiding tweening over floating-point differences which are never actually displayed.
  • Fix ConstrainedIconContainer always using masking without a reason (ppy/osu#26603 by @EVAST9919)
  • Remove local vertex batching from triangles backgrounds (ppy/osu#26636 by @EVAST9919)
  • Enable masking for Triangles backgrounds where possible (ppy/osu#26647 by @EVAST9919)
  • Reduce allocation overhead in BeatmapCarousel (ppy/osu#26660 by @EVAST9919)
  • Fix allocation overhead in TabFillFlowContainer when it can't fit all the items (ppy/osu-framework#6148 by @EVAST9919)
  • Remove FillFlow overhead of argon counters (ppy/osu#26649 by @peppy)
  • Fix FollowPointConnection pool filling up when follow points are hidden (ppy/osu#26648 by @peppy)
  • Implement per-axis clamping in Triangles backgrounds (ppy/osu#26677 by @EVAST9919)
  • Reduce enumerator overhead in GameplayLeaderboard (ppy/osu#26674 by @peppy)
  • Reduce localisation overhead in ScoreCounter (ppy/osu#26695 by @EVAST9919)
  • Remove LINQ cast in HUDOverlay (ppy/osu#26711 by @EVAST9919)
  • Reduce allocation overhead in SliderInputManager.updateTracking (ppy/osu#26721 by @EVAST9919)
  • Clamp logo triangles along both axes (ppy/osu#26750 by @EVAST9919)
  • Reduce allocation overhead of song progress bars (ppy/osu#26723 by @EVAST9919)
  • Fix IBindableList.GetEnumerator() boxing and allocating (ppy/osu-framework#6155 by @smoogipoo)
  • Reduce allocations when calling BeginAbsoluteSequence() (ppy/osu-framework#6156 by @smoogipoo)
  • Reduce mouse move overhead when IRequireHighFrequencyMousePosition are present (ppy/osu-framework#6147 by @peppy)
  • Reduce sliding sample allocations in DrawableSlider (ppy/osu#26698 by @EVAST9919)
  • Reduce allocation overhead in mania's ColumnFlow (ppy/osu#26790 by @EVAST9919)
  • Reduce allocation overhead in ScrollingHitObjectContainer (ppy/osu#26788 by @EVAST9919)

Playlists

Allow interacting with playlist item buttons when not selected (ppy/osu#26449 by @peppy)

Originally interaction was limited to fix clicking title/creator links when trying to select the panel. But this also meant that buttons became unresponsive, which is quite anti-user.

Show a placeholder if viewing results when there are no scores yet (ppy/osu#26287 by @wooster0)

Reliability

  • Fix collection dropdown crashing when all collections are deleted at once (ppy/osu#26541 by @peppy)
  • Fix potential null reference in player screen transition handling (ppy/osu#26662 by @peppy)
  • Fix crash at results screen when hidden is enabled and S rank becomes A due to miss (ppy/osu#26700 by @peppy)

Replay

Add replay playback controls (ppy/osu#26446 by @LeNitrous)

This also:

  • Adjusts playback speed range to allow slower minimum speed (0.05x ~ 2.0x)
  • Change replay playback adjustment to skew frequency, not tempo (sounds better)

Allow seeking while paused (ppy/osu#26606 by @peppy)

Add ability to step forward/backwards single frames when watching replays (ppy/osu#26607 by @peppy)

Improve performance of seeking in replays (ppy/osu#26600 by @peppy)

It now scales with your hardware, and in most cases it should be imperceptible on short seeks.

Scoring

Fix silver S/SS not being awarded correctly (ppy/osu#26557 by @peppy)

In the case a user gets an SS, accuracy never changes from the initial value, so the bindable flow was not being triggered.

Fix incorrect accuracy and rank population when decoding osu!lazer replays (ppy/osu#26579 by @bdach)

Smaller changes

  • Add guard against submitting score with invalid mod instances (ppy/osu#26502 by @frenzibyte)
  • Make LegacyScoreDecoder.PopulateMaximumStatistics() public (ppy/osu#26785 by @bdach)

Settings

Add "Minimise osu! when switching to another app" setting (ppy/osu#26166 by @Susko3)

Show offset explanation tooltip on settings offset adjust slider bar (ppy/osu#26591 by @peppy)

Also adjusts the text on beatmap offset. Because every time I see "beatmap offset" I want to change the directionality of adjustment to match. This next text should also help users understand that both the global and per beatmap offset are in the same direction.

Crop screenshots to scaled screen size when using screen scaling "everything" mode (ppy/osu#26697 by @LeNitrous)

This mimics stable behavior when taking screenshots with letterboxing enabled. Only applicable when Screen scaling is set to "Everything".

Smaller changes

  • Fix revert-to-default button appearing on disabled settings regardless of value (ppy/osu#26618 by @frenzibyte)
  • Add retry loop to avoid log export failing occasionally on windows (ppy/osu#26699 by @peppy)

Skin Editor

Fix skin potentially being lost when opening and closing skin editor rapidly (ppy/osu#26560 by @peppy)

Skinning

  • Make spinner-top and spinner-middle2 spin at different speeds to match stable (ppy/osu#26562 by @kyubxy)
  • Change legacy beatmap skins to not handle @2x textures (to match stable) (ppy/osu#26594 by @frenzibyte)
    • In stable, when looking up a texture in beatmap skin, the @2x suffix does not mean anything and the texture is returned normally with no adjustment to scale.
  • Remove handling for non-legacy texture lookup paths in LegacySkin (ppy/osu#26598 by @frenzibyte)
    • Beatmaps like "new beginnings" store storyboard elements that match the name of a skin element in a nested folder (e.g. SB/k/[email protected]). When stable looks up the element, it will not match it with any texture file in the user's skin, due to the user's skin not having any texture file with the path explicitly being SB/k/[email protected] for example.

However, in lazer, GetTexture strips out the directory name and looks up for a texture that matches only the file name, leading to the hitcircles requested from the storyboard to be incorrectly sourced from the user's selected skin when beatmap skin is turned off, rather than the beatmap's textures.

  • Fix storyboard animations stripping path directory on skin lookup (ppy/osu#26599 by @frenzibyte)

Song Select

Automatically select search text when pressing enter to select a mod at mod select (ppy/osu#26178 by @felipemarins)

Fix osu! logo being mispositioned in song select on very wide resolutions (ppy/osu#26773 by @peppy)

Before After
CleanShot 2024-01-29 at 11 46 48 CleanShot 2024-01-29 at 11 46 24

Smaller changes

  • Fix some elements not showing on leaderboard scores when almost off-screen (ppy/osu#26565 by @peppy)

Tournament

Fix tournament beatmap backgrounds occasionally not loading (ppy/osu#26587 by @peppy)

This also shows an empty beatmap instead of nothing when no beatmap is selected.

New Contributors

Full Changelog: https://github.com/ppy/osu/compare/2024.114.0...2024.130.2

2024.114.0

3 months ago

Editor

  • Fix some editor issues in last release (ppy/osu#26521 by @bdach)

Framework

  • Fix KeyCombination throwing when duplicates are fed in (ppy/osu-framework#6130 by @peppy)

Gameplay

Fix scores not showing up on leaderboards during gameplay (ppy/osu#26520 by @peppy)

Gameplay (osu!)

Fix flashlight dim being applied before slider start time (ppy/osu#26525 by @bdach)

Installer

  • Fix broken windows installer in last release (ppy/osu#26511 by @bdach)

Reliability

  • Fix android startup crash in last release (ppy/osu-framework#6132 by @bdach)
  • Update framework (ppy/osu#26528 by @peppy)

Song Select

  • Fix date failing to display on leaderboard for some scores with weird datetimes (ppy/osu#26526 by @bdach)

UI

Show "slider end" statistic next to slider ticks on results screen (and use correct colour) (ppy/osu#26522 by @bdach)

Full Changelog: https://github.com/ppy/osu/compare/2024.113.0...2024.114.0