Thanks for following along! This is a tagged release (2022.709.0). For more information check out the osu! changelog page and dev blog.
Code Quality
- Remove nullable disable annotation in the ruleset filter. (#18990 by @andy840119)
- Full NRT pass on Android (ppy/osu-framework#5286 by @Susko3)
- Includes everything except
AndroidInputHandler
s as those will be covered separately.
- Includes everything except
- Set proper access modifier on
ScheduledDelegate.State
(ppy/osu-framework#5291 by @Susko3) - Remove the nullable disable annotation in the benchmark project (ppy/osu-framework#5292 by @andy840119)
- Fix incorrect case in
CatcherArea
parameter (#19013 by @peppy) - Enable NRT and simplify
LineBufferedReader
(#19014 by @peppy) - Remove class constraint on AsNonNull() (ppy/osu-framework#5296 by @smoogipoo)
- Change AsNonNull to NotNull return (ppy/osu-framework#5298 by @smoogipoo)
- It seems this is better fit for this method for non-NRT contexts. Will resolve inspections such as https://github.com/ppy/osu/runs/7229529245?check_suite_focus=true. Also still seems to work with the new bindable NRT work in ppy/osu-framework#5099.
Database
Fix skins potentially being duplicated on batch import (#19029 by @peppy)
Smaller changes
- Fix realm backup creation failing when run from
RealmAccess
constructor (#18997 by @peppy)- At the point of construction, we are not on the update thread, but it doesn't really matter at this point because there's no other usages. Bit of an ugly regression.
- Fix intermittent realm migration test failures (#19006 by @peppy)
- Add nested transaction handling to realm helper methods (#19027 by @peppy)
Editor
- Fix editor saving not updating
BeatmapSetInfo
's hash (#19034 by @peppy)- This would lead to the audio track not updating correctly when switching between two newly created beatmaps at song select. Note that you will need to save any beatmaps you've created once to fix this issue.
Framework
- Expose async track
Start
/Stop
/Play
/Restart
methods (ppy/osu-framework#5294 by @peppy) - Add support for showing hidden items in DirectorySelectors (ppy/osu-framework#5251 by @ggliv)
- Will be implemented osu!-side soon.
Gameplay
Fix custom rulesets not importing scores at all (#19025 by @peppy)
Gameplay (osu!)
- Fix default spinner's accent colur not resetting after rewind (#19007 by @goodtrailer)
- Rewinding from a point after the spinner's end to a point between the spinner's completion and its end should show a gold color, but instead it's blue, making it look like the spinner hasn't been completed yet.
- Fix random mod generating off-screen sliders (#18596 by @hlysine)
Logging
- Remove noisy MIDI handler log output (ppy/osu-framework#5293 by @peppy)
- MIDI devices generally send traffic such as clock sync data, which we don't care about. For me, if I have my midi controller connected this creates a flow of 2-3 logger messages per second.
Online
Add MetadataClient
to handle online metadata changes (#19009 by @peppy)
This new component will handle real-time flow of updates to beatmap metadata from the server. It's just a first piece of the puzzle and won't trigger updates yet, but we're getting it deployed for further testing. Expect to see more related changes in upcoming releases!
Smaller changes
Performance
Reduce Scheduler
overhead when no tasks are pending (ppy/osu-framework#5295 by @peppy)
Should help overall game performance quite substantially.
Run audio operations aynchronously to reduce game stutters (#19026 by @peppy)
This should decrease visible stutters when doing things like switching beatmaps rapidly.
Fix background loading excessively on startup (#19032 by @peppy)
Noticed that in a normal startup the background can change between three and six times depending on screen scaling, seasonal beatmaps and game settings. This reduces that count to 1-2 times (1 base, 1 on successful seasonal load).
This also resolves the weirdness when using screen scaling modes by forcing all intros to have an opaque background.
Fix BeatSyncedContainer
unintentionally blocking on beatmap load (#19015 by @peppy)
This would cause large stutters at song select while the game waited for the beatmap to load. We generally had it loading in the background, but this component was accidentally waiting on it incorrectly.
Song Select
- Fix personal best score showing delete option on context menu (#18993 by @Joehuu)
- Fix song select placeholder not showing convert hint for custom rulesets (#19023 by @peppy)
Testing
- Change test GC to not force run by default (ppy/osu-framework#5289 by @peppy)
- Improve asserts in
TestSeekPerformsInGameplayTime
to be more descriptive (#19020 by @frenzibyte) - Fix flaky tests not running at all with environment variable set (#19021 by @frenzibyte)
- Fix intermittent MusicController tests (#19041 by @smoogipoo)
Tooling
- Add statistics display for
MemoryCachingComponent
s (#19018 by @peppy) - Fix
DrawVisualiser
blocking positional input while not searching (ppy/osu-framework#5297 by @frenzibyte)
UX
- Allow searching for "skins" to find current skin setting (#19028 by @peppy)
- Allow MIDI and joysticks to trigger the osu! cookie on the initial screen (#19005 by @Susko3)
- Makes sense as all keyboard keys currently trigger it.
Will hopefully aid in visibility that such input methods natively work in osu! (without having to dig into settings).
- Makes sense as all keyboard keys currently trigger it.
- Add forgotten password link to login form (#19010 by @peppy)
- Add local handling of cases where a beatmap's file cannot be found on disk (#19022 by @peppy)
- Better error messaging.
Full Changelog: 2022.704.0...2022.709.0