Releases: ppy/osu
2024.521.2
2024.519.1
What's Changed
- Fix total score without mods migration failing on custom ruleset scores when custom ruleset cannot be loaded by @bdach in #28213
Full Changelog: 2024.519.0...2024.519.1
2024.519.0
Audio
Reduce startup volume (#28031 by @peppy)
Constant complaints about startup volume mean we should reduce it further and let users adjust as they see fit.
Values are from matching roughly with Apple Music volume of the same song, which should be a good guideline for not overpowering other things on system.
Smaller changes
Editor
Add a chevron to distinguish editor menus with submenus (#27974 by @peppy)
Before | After |
---|---|
Preserve storyboard events when saving a beatmap in the editor (#28033 by @peppy)
Until we have full encoding support for storyboards, this stop-gap measure ensures that storyboards don't just disappear from existence. Without this, saving a beatmap in the editor removes all local storyboard content (ie. anything in the .osu file). The most noticeable is any video background.
Smaller changes
- Improve performance in timing setup screen (#27958 by @EVAST9919)
- Add verify checks for incorrect audio formats (#27895 by @64ArthurAraujo)
- Fix deleting modified difficulty via editor leaving user in broken state (#27996 by @bdach)
- If the difficulty being edited has unsaved changes, the editor exit flow would prompt for save after the deletion method has run. This is undesirable from a UX standpoint, and also leaves the user in a broken state.
- Fully refetch working beatmap when entering editor (#27997 by @bdach)
- Fix adding slider control points via context menu not undoing correctly (#27993 by @bdach)
- Fix changing distance spacing multiplier hiding the distance snap grid when it's already shown (#28066 by @bdach)
- Improve slider placement performance (#28102 by @EVAST9919)
- Reduce container nesting inside
PathControlPointPiece
(#28205 by @EVAST9919)
Framework
Fix texture memory leak in Direct3D (ppy/osu-framework#6250 by @smoogipoo)
If you were seeing sluggish performance the longer the game was running (and potentially switched your renderer as a result), please give direct3d another chance!
Upgrade to SDL3 (#27815 by @Susko3)
Migrate Android framework to SDL (ppy/osu-framework#6105 by @hwsmm)
Removes a lot of legacy code and means we have less things to worry about with android.
Smaller changes
- Fix ChannelGetPosition param not being used (ppy/osu-framework#6242 by @smoogipoo)
- Fix tablet info not clearing when unplugged (ppy/osu-framework#6239 by @Joehuu)
- Avoid masking calculations on valid drawables (ppy/osu-framework#6243 by @EVAST9919)
- Perform rounding to
Precision
inBindableNumber
ondecimal
to avoid rounding error accumulation (ppy/osu-framework#6249 by @bdach) - Update to latest SDL3-CS friendly overload and null-terminated UTF8 conversion (ppy/osu-framework#6245 by @Susko3)
- Move user tab selection events to
TabItem
s (ppy/osu-framework#6251 by @frenzibyte) - Fix unnecessary array copying in
WindowsClipboard.SetImage()
(ppy/osu-framework#6252 by @Susko3) - Fix flaky test attribute not working (ppy/osu-framework#6253 by @smoogipoo)
- Remove unused method (#27934 by @smoogipoo)
- Remove unused members from GameplaySkinComponentLookup (#27931 by @smoogipoo)
- Give SerialisedDrawableInfo sane defaults (#27935 by @smoogipoo)
- Update framework (#27930 by @peppy)
- Set IME rectangle before starting text input (ppy/osu-framework#6257 by @Susko3)
- Set event filter early in the startup process to work around SDL issue (ppy/osu-framework#6259 by @Susko3)
- Work around broken
SDL_EVENT_FINGER_DOWN
events that lead to stuck touches (ppy/osu-framework#6258 by @Susko3) - Use generic math for bindable numbers (ppy/osu-framework#6248 by @huoyaoyuan)
- Log SDL3 version and revision on successful initialisation (ppy/osu-framework#6265 by @Susko3)
- Guard against unsupported window mode on startup (ppy/osu-framework#6263 by @Susko3)
- Ignore autogenerated .idea android file (#27986 by @Joehuu)
- Apply nullability annotations to
ResultsScreen
& inheritors (#27995 by @bdach) - Set SDL_HINT_APP_NAME in SDL3GameHost constructor (ppy/osu-framework#6260 by @FreezyLemon)
- Apply generic math-related changes (#27965 by @bdach)
- Delete osuTK windowing (ppy/osu-framework#6267 by @Susko3)
- Add
Update
event toIWindow
(ppy/osu-framework#6270 by @Susko3) - Use SDL3 screen saver functions to implement
AllowScreenSuspension
(ppy/osu-framework#6271 by @Susko3) - Refactor
DisplayHandle
into seperate android and linux properties (ppy/osu-framework#6268 by @Susko3) - Handle new naming inspections on certain enums (#28051 by @frenzibyte)
- Fix broken macOS CI build (ppy/osu-framework#6277 by @smoogipoo)
- Update localisations (ppy/osu-resources#320 by @peppy)
- Add "HP" to the abbreviations list (#28108 by @frenzibyte)
- Fix
userTriggered
param not being passed to private helper (#28124 by @Susko3) - Fix
Xamarin.Jetbrains.Annotations
conflicting withJetbrains.Annotations
(ppy/osu-framework#6279 by @Susko3) - Fix compilation failure in release mode (ppy/osu-server-spectator#232 by @bdach)
- Refactor child masking bounds handling (ppy/osu-framework#6266 by @EVAST9919)
- Apply adjustments after framework changes (#28028 by @bdach)
- Add support for deferred SDL3 clipboard callbacks (and use it for images) (ppy/osu-framework#6254 by @Susko3)
- Use
MustDisposeResource
annotation to appease new ReSharper inspection (#28153 by @frenzibyte) - Apply NRT to results-related components (#28172 by @bdach)
- Update
BouncyCastle.Cryptography
to 2.3.1 (ppy/osu-server-spectator#233 by @bdach) - Fix xmldoc mismatches in localisation files (#28191 by @bdach)
- Remove
TreatWarningsAsErrors
flags from local builds for developer convenience (#28198 by @frenzibyte) - Avoid colour space conversion when multiplying
SRGBColour
by white (ppy/osu-framework#6287 by @EVAST9919)
Gameplay
Tweak resume overlay to allow better visibility of hit objects underneath (#28050 by @peppy)
This change decreases alpha as the count proceeds. It also adds an initial delay before the countdown starts, to make things feel a bit less jank when resuming gameplay. Had to restructure slightly to make that part work.
Don't hide playfield layer with HUD (#28062 by @peppy)
Touched on in #12039. I think this makes sense - things which are attached to the playfield are expected to always be attached and not disappear. Something like an osu!mania health bar.
This gives users a way to make elements always display (regardless of the HUD hide setting) which is also cool.
Improve storyboard performance by using native loop support (#27539 by @frenzibyte)
Smaller changes
- Fix storyboard videos not accepting transforms (#27967 by @peppy)
- In stable, storyboard videos can actually accept all kinds of transforms just like other sprites. That wasn't working until now.
- Continue loading even when osu! logo is being dragged at loading screen (#28174 by @peppy)
Gameplay (osu!)
- Add Traceable performance calculation support (#27148 by @Givikap120)
- Fix resume overlay not appearing after pausing when mouse cursor is inside window but outside of actual playfield area (#27896 by @bdach)
- Fix
cursormiddle
not using the same skin source ascursor
(#27964 by @smoogipoo) - Fix touches on judged circles changing cursor position (#28167 by @smoogipoo)
Gameplay (osu!catch)
Fix gameplay PP counter not matching results screen (#27808 by @smoogipoo)
Gameplay (osu!mania)
Add more usable osu!mania touch input system (#28173 by @peppy)
This takes smoogi's previous effort (#27790) and presents it in a state where it can be merged without skin configurability concerns. I've left the configurable settings in code for exposing in the future.
I've made changes to bring it more in line with how taiko's touch area system was implemented for conformity. The major change is that it no longer uses the presence of touch mod to decide whether to display (and can now be summoned using a mouse click or touch).
Do not change mania column width on mobile platforms (#28186 by @bdach)
With the new touch overlay, this doesn't make as much sense.
Input
- Implement focus traps (ppy/osu-framework#6286 by @smoogipoo)
- By extracting focus-management logic out of
InputManager
, we can implement something akin to a focus trap. Components can trap the...
- By extracting focus-management logic out of
2024.412.1
What's Changed
- Fix crash when entering multiplayer on macOS by @smoogipoo in #27839
Full Changelog: 2024.412.0...2024.412.1
2024.412.0
Code Quality
- Fix broken wiki link on readme (ppy/osu-server-spectator#226 by @Joehuu)
- Remove unused
ScreenBreadcrumbControl
(#27675 by @peppy) - Add extended logging when discarding online metadata lookup results (#27676 by @bdach)
- Make slider path parsing more friendly with spans (#27418 by @huoyaoyuan)
- Fix discord RPC errors in multiplayer (#27728 by @bdach)
- Update localisations (ppy/osu-resources#315 by @peppy)
- Fix NVAPI startup exception on non-Windows platforms (#27733 by @smoogipoo)
- Update action versions in diffcalc workflow (#27748 by @smoogipoo)
- Fix SpectatorClient holding references to Player (#27778 by @smoogipoo)
- Fix SkinEditor binding event to external bindable (#27779 by @smoogipoo)
- Update osu.Framework package (#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 (#27827 by @smoogipoo)
Editor
Improve editor performance when many timeline ticks are present (#27632 by @EVAST9919)
Improve editor performance for maps with many control points (#27630 by @EVAST9919)
Smaller changes
- Fix audio in video check crashing on unexpected failures (#27600 by @bdach)
- Add verify checks to unused audio at the end (#27639 by @64ArthurAraujo)
- Add verify check for too high video resolution (#27708 by @64ArthurAraujo)
- Add verify checks for abnormal difficulty settings (#27683 by @64ArthurAraujo)
- Fix reverse selection not updating new combo location (#27723 by @64ArthurAraujo)
- Update Slider path control points and connections after stacking application (#27761 by @64ArthurAraujo)
- Fix rotate tool button in editor disabled when selecting 1 circle (#26702 by @honguyenminh)
- Fix merging sliders with the same
StartTime
causing a Unhandled Exception (#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 (#27616 by @bdach)
Add delayed resume for taiko/catch/mania (#27079 by @smoogipoo)
Fix some maps requiring multiple intro skips that weren't there on stable (#27784 by @bdach)
Add new icons for hit error meter (ppy/osu-resources#317 by @peppy)
Update hit error metre to use new icons (#27787 by @peppy)
Smaller changes
- Fix incorrectly encoded score IsPerfect value (#27668 by @smoogipoo)
- Add sample for gameplay resume countdown (ppy/osu-resources#314 by @nekodex)
- Fix break overlay arrows look ugly on bright backgrounds (#27760 by @EVAST9919)
Gameplay (osu!)
- Fix bulbs on Catmull sliders (#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)
- Fix catch banana shower judgement causing fail when at 0 HP (#27677 by @smoogipoo)
- Fixes the follow-up issue in #27121
Gameplay (osu!mania)
- Consider keymods in beatmap filtering + panel display (#27747 by @smoogipoo)
Gameplay (osu!taiko)
Fix taiko mascot size not matching expectations (#27758 by @peppy)
Smaller changes
- Fix taiko legacy score simulator not including swell tick score gain into bonus portion (#27729 by @bdach)
Import
- Fix
SkinImporter
not using invariant culture when parsing skins withoutskin.ini
(#27739 by @Susko3) - Avoid reporting an import as successful when all beatmaps failed to import (#27755 by @peppy)
Online
Support Discord game invites in multiplayer lobbies (#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
(#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 (#27789 by @smoogipoo)
Platform
- Upgrade to SDL3 (ppy/osu-framework#6234 by @Susko3)
######## Changes
- (SDL3-CS) from
namespace SDL2
&class SDL
tonamespace SDL
&class SDL3
(made more sense as the functions are imported fromSDL3.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>
, requiringEncoding.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 fromint
tofloat
- 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 forSDL_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: libsdl-org/SDL#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 regression...
2024.312.1
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 (#27574 by @bdach)
Performance
Reduce update overhead in osu! playfield when many objects are visible (#27562 by @EVAST9919)
Reliability
Downgrade realm to work around crashes on latest release (#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 (#27586 by @bdach)
Full Changelog: 2024.312.0...2024.312.1
2024.312.0
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 (#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 (#27427 by @Detze)
- Remove useless DrawablePool in
ColourHitErrorMeter
(#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 (#27502 by @turbedi)
- Log
GlobalStatistics
when exporting logs from settings (#27242 by @Susko3) - Update framework (#27506 by @peppy)
- Increase interface surface of Veldrid components (ppy/osu-framework#6189 by @smoogipoo)
- Use ThrowHelper methods in more places (#27501 by @turbedi)
- Use ThrowHelper methods in more places (ppy/osu-framework#6184 by @turbedi)
- Fix
TestSceneSkinnableSound
failing (#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 (#27344 by @bdach)
Fix "Use current" snap not working (#27386 by @peppy)
Change editor screen switcher control design and behaviour to act like a button (#27516 by @frenzibyte)
Smaller changes
- Fix incorrect gradient application to some timeline blueprints (#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 |
---|---|
Gameplay
Make flashlight scale with playfield (#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 (#27504 by @peppy)
Should fix the underlying issue causing the backwards seeks during gameplay.
Add "Argon" performance points counter (#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
andTriangles
spinner freeze at low replay speed (#27359 by @EVAST9919) - Fix menu cursor tracking rotation while override by gameplay cursor (#27412 by @frenzibyte)
- Fix missing event unbinds (#27520 by @smoogipoo)
- Add support for new "argon" hitsounds (#27535 by @nekodex)
Gameplay (osu!)
- Fix old-style legacy spinner fade-in not matching stable (#27320 by @frenzibyte)
- Allow pp for muted mod for any combination of settings (#27144 by @cdwcgt)
- "Muted" doesn't change gameplay so can we make it ranked when adjust settings.
- Fix slider head being incorrectly dimmed twice (#27369 by @Detze)
- Rewrite legacy slider path rendering to match stable better (#27383 by @Detze)
- Fix slider tails sometimes not dimming correctly (#27401 by @bdach)
- Fix osu! standardised score estimation algorithm violating basic invariants (#27513 by @bdach)
- Fix slider tracking state not restoring correctly in all cases on rewind (#27429 by @bdach)
- Fix cross-talk between pooled
DrawableSliderRepeat
usage causing incorrect rotation (#27529 by @peppy)
Gameplay (osu!catch)
- Fix draining processor failing gameplay on bonus misses, tiny droplet misses, and ignore hits (#27154 by @bdach)
- Fix catch fruit position getting randomised when last fruit has zero position (#27456 by @frenzibyte)
- Fix catch pp calculator not matching live with respect to miss handling (#27489 by @bdach)
Gameplay (osu!mania)
- Fix osu!mania key images potentially showing gaps between columns (#27453 by @frenzibyte)
Gameplay (osu!taiko)
- Hide osu!taiko scrolling graphic when the beatmap has storyboard (#27424 by @frenzibyte)
- Fix 1px flashlight gaps when gameplay scaling mode is active (#27533 by @bdach)
Main Menu
Allow better menu navigation using same hotkey to progress to destination (#27389 by @peppy)
You can now use:
L L L
to get to playlistsM M M
to get to multiplayerS
to get to settingsE E
to get to the beatmap editor
Smaller changes
Multiplayer
Implement difficulty tooltips for multiplayer lobbies (#26531 by @smallketchup82)
Online
Show user statistics updates on multiplayer and playlists results screens (#27331 by @bdach)
When discord is set to privacy mode, don't show beatmap being edited (#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 (#27276 by @bdach)
Smaller changes
- Clear stored username/token from config when relevant checkboxes are unticked on login panel (#27299 by @BoudewijnPopkema)
- Resolve issues with Discord RPC while on Do Not Disturb (#27354 by @jvyden)
Performance
Improve storyboard performance by better handling sprites lifetime (#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
(#27230 by @EVAST9919) - Reduce allocations in
TimelineBlueprintContainer
(#27297 by @EVAST9919) - Rework
AccuracyCircle
to not useBufferedContainer
s (#26769 by @EVAST9919) - Reduce allocations in
SmokeSegment
(#27357 by @EVAST9919) - Reduce osu spinner allocations (#27364 by @EVAST9919)
- Further reduce allocations during gameplay (#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 (#27366 by @EVAST9919) - Remove bindable from
CircularProgress
(ppy/osu-framework#...
2024.302.1
Gameplay
Fix gameplay seeking backwards for a single frame for some users (#27426 by @peppy)
Gameplay (osu!)
Fix incorrect standardised score estimation on selected beatmaps in osu! ruleset (#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 (#27336 by @peppy)
Platform
Adjust user storage paths for better cross-platform support (ppy/osu-framework#6196 by @smoogipoo)
Full Changelog: 2024.221.0...2024.302.1
2024.221.0
Gameplay
Fix beatmap offsets not being applied correctly to extreme rate changes (#27243 by @myQwil)
Gameplay (osu!)
Fix classic skins incorrectly applying scaling factor to approch circles (#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 |
---|---|
Fix classic skin follow circles animating from incorrect starting point (#27288 by @peppy)
Performance
- Reduce osu editor allocations with many objects selected (#27249 by @EVAST9919)
- Reduce mania editor allocations with many objects selected (#27275 by @EVAST9919)
- Apply padding to
GridContainer
s directly where possible (#27278 by @EVAST9919) - Fix allocations in
SliderInputManager.updateTracking
(#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
Fix beatmap carousel ordering not matching expectations (#27292 by @bdach)
Broke in yesterday's release, oops.
UI
- Localise storage error popup dialog (#27258 by @Loreos7)
- Update markdown code block implementation in line with framework changes (#27218 by @frenzibyte)
2024.219.0
Code Quality
- Update inspectcode to 2023.3.3 (#26956 by @smoogipoo)
- Adjust default min result of
SliderTailHit
, remove override (#26877 by @smoogipoo) - Rework
UserPanel
s to reduce container nesting (#26924 by @EVAST9919) - Use new LINQ Order{Descending} instead of OrderBy{Descending} when possible (#27095 by @turbedi)
- Improve exception logging of unobserved exceptions via
FireAndForget
(#27077 by @peppy) - Add note to never run release config to contributing guidelines (#27115 by @bdach)
- Refactor metadata lookup flows (#23822 by @bdach)
- Add inline documentation as to why classic mod is not ranked (#27176 by @peppy)
- Update IDE configurations to point at
net8.0
folders (#27186 by @FamousPig) - Update .NET version on readme (#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 (#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 ofIEnumerable
inInputResampler
(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 (#27167 by @smoogipoo)
- Update framework (#27179 by @peppy)
Gameplay
Allow a few new mods and mod settings for pp (#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 (#27156 by @bdach)
Smaller changes
- Bump databased star rating versions (#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 (#26951 by @myQwil)
- Fix
WorkingBeatmapCache
caching beatmap in wrong state leading to crash (#27239 by @peppy)
Gameplay (osu!)
Fix relax mod not respecting tracking state of sliders when triggering actions (#26763 by @frenzibyte)
Create key-presses when watching osu!stable "Relax" replays (#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 (#27200 by @frenzibyte)
Gameplay (osu!catch)
Never flip fruit on plate (#27165 by @frenzibyte)
Limit vertical visibility of osu!catch playfield to an aspect ratio of 4:3 (#27162 by @frenzibyte)
Gameplay (osu!mania)
Add progressive coverage for mania's Hidden and FadeIn mods (#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
Gameplay (osu!taiko)
- Convert selected legacy skin sprites to grayscale (#27059 by @bdach)
- Fixes silly skins doing silly stuff they shouldn't.
Online
Give better visibility when the game is pending 2FA (#26920 by @peppy)
Add 2FA verification screen to registration flow (#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 (#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
(#27067 by @bdach) - Populate
TotalScoreInfo
when convertingSoloScoreInfo
toScoreInfo
(#27069 by @bdach) - Add additional gameplay metadata to room score request (#27113 by @smoogipoo)
- Use more stringent checks when applying online metadata (#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 (#27193 by @bdach)
- Add better submission failure messaging (#27180 by @bdach)
- Update packages (ppy/osu-server-spectator#219 by @peppy)
Performance
- Reduce allocation overhead in
Playfield
(#26940 by @EVAST9919) - Fix
DrawableManiaRuleset
performing skin lookup every frame (#26938 by @EVAST9919) - Fix multiplayer/playlists lounge screen disposing rooms synchronously (#27021 by @frenzibyte)
- Fix huge allocation overhead in
UnstableRateCounter
(#26976 by @EVAST9919) - Further reduce allocation overhead in
ScrollingHitObjectContainer
(#26863 by @EVAST9919) - Avoid closure allocations when applying hit object results (#26694 by @chandler14362)
- Replace linq usage in
Previous
andNext
onDifficultyHitObject
with more direct computation (#27117 by @tsunyoku) - Fix huge allocation overhead during beatmap texture creation in song-select screen (#27132 by @EVAST9919)
- Only compute flashlight in osu! difficulty calculations when required (#27116 by @tsunyoku)
- Reduce allocations during aggregate beatmap sorts in song-select screen (#27173 by @EVAST9919)
- Invalidate
GridContainer
only on DrawSize change (ppy/osu-framework#6180 by @EVAST9919) - Fix
DrawableLinkCompiler
allocations (#27199 by @EVAST9919) - Reduce allocations during beatmap selection (#27206 by @EVAST9919)
- Cache created judgement in
HitObject
(#27114 by @EVAST9919) - Use
SlimReadOnlyListWrapper
forKeyBindingContainer.PressedActions
(ppy/osu-framework#6185 by @EVAST9919)
Platform
Suggest to update only if the latest release is available for the current platform (#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 (#27184 by @peppy)
- Update iOS icon metrics to match previous icon (#27185 by @peppy)
Results
Fix results screen not handling F ranks properly (#26733 by @frenzibyte)
Song Select
Display which mods grant pp (#26934 by @bdach)
In mod select and in song select footer.
Add last played search filter in song select (#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 (#27112 by @Stoppedpuma)
- Fix star counter decrease animation being delayed when current is over displayed star count (#27205 by @Joehuu)
- Consider case sensitivity when sort...