Code Quality
- Cleanup Objective-C interop code (ppy/osu-framework#6474 by @frenzibyte)
- Expose game host from iOS app delegate class (ppy/osu-framework#6477 by @frenzibyte)
- Show whether drawable is receiving input in draw visualiser (ppy/osu-framework#6481 by @peppy)
- Fix crash when dragging in a text box while a key is held down (ppy/osu-framework#6485 by @424ever)
- Upgrade packages (#27920 by @peppy)
- Clean up windows association manager code (#31450 by @peppy)
- Simplify editor "ternary button" structure (#31462 by @bdach)
- Add new osu!(stable) registry ProgId (#31481 by @Susko3)
- Use
double
inScrollContainer
for scroll tracking (ppy/osu-framework#6467 by @peppy) - Allow
TextBox
to specify type of text being input (ppy/osu-framework#6408 by @frenzibyte) - Update game
ScrollContainer
usage in line with framework changes (#31474 by @peppy) - Specify type of text input in most
TextBox
usages (#30495 by @frenzibyte) - Ensure API starts up with
LocalUser
in correct state (#31507 by @peppy) - Change
OffsetScrollPosition
to take adouble
(ppy/osu-framework#6492 by @peppy) - Add entry point to
Game
for logging setup purposes (ppy/osu-framework#6493 by @peppy) - Typo fix (#31531 by @shawwn)
- Bump NVika tool to 4.0.0 (#31534 by @bdach)
- Bump NVika tool to 4.0.0 (ppy/osu-framework#6494 by @bdach)
- Remove
Status
andActivity
bindables fromAPIUser
(#31513 by @smoogipoo) - Fix incorrect release pattern in macOS/iOS texture loading code (ppy/osu-framework#6495 by @frenzibyte)
- Move error function from osu.Game.Utils to osu.Game.Rulesets.Difficulty.Utils (#31520 by @Natelytle)
Editor
Speed up metronome in timing screen when pressing control key (#31342 by @minetoblend)
Changes the speed at which the metronome swings & the tick sample plays to 2x (or 3x when beat divisor is in triples mode) the speed when control is pressed, matching stable behavior.
Fix slider repeats not properly respecting "show hit markers" setting (#31354 by @bdach)
Fix slider end circles not remaining for long enough when hit animations disabled (#31390 by @peppy)
Reset playback speed to 100% on entering test play (#31445 by @bdach)
Force new combo on objects succeeding a break (#31448 by @bdach)
Display storyboard in editor (#31364 by @bdach)
Add combo colour override control to editor (#31473 by @bdach)
Fix performance degradation while trying to place object with a new combo in the editor. (#31446 by @EVAST9919)
Smaller changes
- Round object coordinates to nearest integers on legacy export rather than truncating (#31305 by @bdach)
- This fixes minor issues with snapping when exporting for use in stable. It's going to be more important soon as BSS comes online.
- Always block scroll input above editor toolbox areas (#31383 by @peppy)
- Constrain range of usable characters in romanised metadata to ASCII only (#31433 by @bdach)
- Reduce allocations in the editor caused by
TimelineBlueprintContainer
(#31436 by @EVAST9919) - Select closest timing point every time the timing screen is changed to (#31454 by @bdach)
- Delete entire juice stream when only one vertex remains after deleting another vertex (#31452 by @bdach)
- Fix juice stream placement blueprint being initially visually offset (#31453 by @bdach)
Gameplay
Fix not being able to apply last play offset after returning to song select (#31386 by @peppy)
This stopped working recently, but we heard the feedback that this is too useful to do away with!
Implement spectator list display (#31526 by @bdach)
Smaller changes
- Fix rate adjustments changing the spacing between replay frames (#31459 by @peppy)
- Apply beatmap offset to all difficulties only if they have the same audio (#31523 by @Rudicito)
- Fix gameplay offset adjustment limits not being enforced (#31533 by @peppy)
Gameplay (osu!)
Fix slider repeat arrows animating incorrectly in editor / replays (#31388 by @peppy)
Gameplay (osu!catch)
- Fix slider event generator incorrectly not generating repeats when tick distance is zero (#31306 by @bdach)
Online Play
Add multiplayer auto-start setting for 10 seconds (#31381 by @peppy)
This was added due to feedback that the previous minimum of 30 seconds feels too long for most cases.
Fix star range display looking a bit bad when changing opacity (#31435 by @peppy)
Before | After |
---|---|
Add notifications for when friends go online or offline (#31444 by @smoogipoo)
Note that the friends overlay won't yet update in realtime with status changes – that's coming soon!
Smaller changes
- Remove status check for metadata update queue watching (ppy/osu-server-spectator#254 by @peppy)
- Avoid sending user presence updates when nothing has changed (ppy/osu-server-spectator#256 by @peppy)
- Ensure user state is never conveyed for "appear offline" users (ppy/osu-server-spectator#257 by @peppy)
- Always broadcast user presence to users' friends (ppy/osu-server-spectator#255 by @smoogipoo)
- Fix connection errors on self-friends (ppy/osu-server-spectator#260 by @smoogipoo)
- Always broadcast local user's state back to themselves (ppy/osu-server-spectator#261 by @smoogipoo)
Performance
- Fix stutter on intensive storyboards when entering break time with 100% background dim (#31506 by @peppy)
- This avoids piled-up overhead when entering break time. It's not great, but it is what we need for now to avoid weirdness.
Platform (Desktop)
Change the way extensions are handled to better support side-by-side osu!stable installs (#31438 by @Susko3)
With this change, you will now be able to select which game version to open files with on windows:
You can change your preferences at any time by right-clicking on a beatmap:
osu! and osu!(lazer) appear in the "Open with" context menu:
You can also choose the default app for each file type from system settings:
Add native macOS image loading support (ppy/osu-framework#6475 by @frenzibyte)
Improves texture loading time by a magnitude on macOS.
Fix replays not correctly pre-importing beatmap when arriving from a cold start (#31508 by @peppy)
Until now, if you double-clicked a replay while lazer wasn't open, if the beatmap isn't already locally available it would just show a fail message rather than attempting to download the beatmap for you.
Platform (Mobile)
Implement system-provided file selection display on iOS (ppy/osu-framework#6445 by @frenzibyte)
Display popup disclaimer about game state and performance on mobile platforms (#31403 by @frenzibyte)
Smaller changes
- Enable "Game Mode" on iOS (#31363 by @hrfarmer)
- Disable dropdown searching on mobile when no hardware keyboard is attached (ppy/osu-framework#6479 by @frenzibyte)
- Fix mobile release dialog obstructed by the software keyboard (#31414 by @frenzibyte)
- Fix error when opening files on startup on Android (#31492 by @Susko3)
Reliability
- Ensure intro files exist in storage during startup (#31418 by @peppy)
- Fix initial skin state being stored wrong to skin editor undo history (#30060 by @peppy)
Skinning
- Add support for
CursorTrailRotate
skin command (#31519 by @EVAST9919)- Preview: https://streamable.com/1g3bh8
Song Select
Make the score background yellow for friends on the leaderboard (#31240 by @Plextora)
Changes to absolute scrolling at song select (#31535 by @peppy)
This is a bit of a catch-all fix up while implementing this in the new carousel.
- Users can now choose a custom binding instead of right mouse if you wish
- Removes the setting. This can now be disabled by unbinding the key. Note that this changes the default to have it as right mouse button. This is an intentional change – I believe this functionality should be on by default as it's beneficial to most users.
Smaller changes
- Add basic framework for carousel displays (aka
BeatmapCarouselV2
) (#31471 by @peppy)- Ongoing work, nothing to see yet!
- Add curvature to new carousel implementation (#31542 by @peppy)
- Nothing to see yet!
UI
Always show confirmation dialog when clicking supporter icon on user panels (#31442 by @peppy)
I managed to click this by accident three times today while testing using the dashboard display, so it's time to action on it.
New Contributors
Full Changelog: 2025.114.0...2025.118.0