Thanks for following along! This is a tagged release (2022.723.0). For more information check out the osu! changelog page and dev blog.
Code Quality
- Use more correct json casing in
APIScoresCollection
(#19226 by @peppy) - Remove nullable disable annotation in the mods. (#19235 by @andy840119)
- Change carousel terminology to not use
Children
/InternalChildren
(#19268 by @peppy) - Cleanup pass on
FPSCounter
(#19279 by @peppy)- This class got a bit messy over multiple iterations. Also rate limits the sprite text updates to reduce any potential performance overhead.
Database
Add background beatmap processing (#19272 by @peppy)
A stepping stone towards better storage/processing of star ratings locally. The focus here is on the invalidation flow when difficulty algorithm changes occur, so I didn't put too much thought into the BeatmapInfo
/ realm storage of the star rating.
This will nuke all local beatmaps' difficulties once. Seems like a good move to get everything in a consistent state. This will also handle legacy issues like "length" not being calculated, for users with very old databases.
I haven't tested with a large database yet, so feedback on how well this works is appreciated! There's no visible progress just yet, so if you notice nothing, that's probably a good thing. Note that it will automatically pause during gameplay.
Editor
Fix editor clap/finish buttons being ordered against expectations (#19236 by @peppy)
Weirdly was not brought to our attention until now!
Fix slider velocity not using previous value if slider is not adjacent (#19239 by @peppy)
Before:
osu.2022-07-19.at.13.55.16.mp4
After:
osu.2022-07-19.at.13.53.27.mp4
Dsplay toasts on beatmap/skin save (#19243 by @LukynkaCZE)
Adds missing visual feedback when saving.
Beatmap.Editor.mp4
Smaller changes
- Fix editor timeline zoom rate being too slow for longer beatmaps (#19278 by @Cwazywierdo)
- Fix timeline
alt
+scroll
zoom not correctly zooming to current mouse position (#19294 by @peppy) - Fix timeline zoom focus point when using zoom buttons (#19296 by @smoogipoo)
Framework
- Update
OpenTabletDriver
to latest version (ppy/osu-framework#5319 by @peppy)
Gameplay
Fix failed replays showing higher score than they should (#19263 by @frenzibyte)
Gameplay (osu!)
Adjust default follow circle animations to feel nicer (#19128 by @peppy)
Before:
osu.Game.Rulesets.Osu.Tests.2022-07-15.at.08.31.17.mp4
After:
osu.Game.Rulesets.Osu.Tests.2022-07-15.at.08.30.44.mp4
Smaller changes
- Remove non-overlapping velocity buff from aim difficulty (#19004 by @apollo-dw)
Gameplay (osu!taiko)
Add basic touch support for osu!taiko (#17200 by @hongaaronc)
This is a first pass implementation of touch support for osu!taiko. Eventually we plan to give the user a lot more control over touch input customisation, but hopefully this will suffice until that point.
Please give it a go and shoot any feedback you have!
FullSizeRender.MOV
Performance point balance changes (#19181 by @Lawtrohux)
Changes included are:
- Nerf the Hidden global multiplier to increase the gap between EZHD and HD only scores.
- Addition of an EZ global multiplier nerf, as well as a difficulty PP nerf.
- Decrease the miss penalty, as combo scaling is not present in taiko.
- Increase the weight Accuracy has on Difficulty PP.
- Lower Accuracy and great hit window scaling, and split out length-bonus to allow for a new slight HDFL bonus to accuracy scaled by length.
- Removal of the NF multiplier to prevent sandbagging against the <50% end-fail mechanic
Replicate osu!(stable)'s hit target position with "Classic" mod (#17622 by @frenzibyte)
Mods
Remove score multiplier on difficulty-increasing mods with customised settings (#19208 by @frenzibyte)
This is a first step in balancing the recently exposed leaderboards. It will allow us to fix cases of users applying DT with a rate of 1.01x and still getting the full multiplier, as one example.
We'll continue to iterate on this (and address other mods like "Relax").
Multiplayer
Fix editing a queued beatmap sometimes opening to the wrong selection (#19234 by @Cwazywierdo)
Smaller changes
- Fix creating multiplayer game during server migration not joining new room correctly (#19189 by @peppy)
Overlays
Highlight perfect slider tick/end values in beatmap info leaderboards (#19244 by @frenzibyte)
Replacing the existing maximum count display and moves that to a tooltip that displays when hovering over the statistic.
CleanShot.2022-07-20.at.00.42.49.mp4
Smaller changes
- Fix wiki overlay not handling path redirection properly (#19246 by @frenzibyte)
- This is noticeable on pages like https://osu.ppy.sh/wiki/en/osu!_File_Formats (copied from main page) which redirect to https://osu.ppy.sh/wiki/en/Client/File_formats. The target path is provided in the
APIWikiPage
structure, making redirection simple to handle.
- This is noticeable on pages like https://osu.ppy.sh/wiki/en/osu!_File_Formats (copied from main page) which redirect to https://osu.ppy.sh/wiki/en/Client/File_formats. The target path is provided in the
Performance
Reduce Bindable
allocations in hitobject classes via lazy initialisation (#19225 by @frenzibyte)
Offers a roughly 50% improvement in performance and memory usage when creating osu! hit objects. Should be most noticeable in batch difficulty calculation.
Platform
- Fix startup crash on Android verison before 8.0 Oreo (ppy/osu-framework#5315 by @Susko3)
- Add mention of "compatibility mode" in windows version check error message (#19228 by @peppy)
Reliability
- Replace culture-sensitive humanizer methods with fixed local reimplementations (#19221 by @bdach)
- Fix bad access to
Waveform.GetPoints()
if waveform changes during regeneration (ppy/osu-framework#5316 by @peppy) - Fix
BeginPlayingInternal
firing actual errors when beatmap not available online (#19227 by @peppy) - Fix unsafe value access in
WaveformGraph
async resampling logic (ppy/osu-framework#5318 by @frenzibyte)
Results
Add additional SFX to the results screen (#19300 by @nekodex)
Adds panel appearance and transition sounds, score rolling/ticking effects and additionally some dynamic panning to make the results screen a bit more interesting.
Dynamic panning also affecting the AccuracyCircle
/ ranking SFX was a side-effect of implementation, but it feels kinda cool so I left it in?
results-screen-2.mov
Song Select
Show update button in beatmap carousel when beatmaps have online changes (#19230 by @peppy)
Comes with a few caveats:
- Currently only shows when there are actual
.osu
file changes (feature parity with stable). Eventually we'd want to show this for any changes (ie. if only the background has changed), but doing so requires a beatmap set level hash. I have a forward plan for making this happen, but it involves having individual file hashes stored and communicated client-server. Note that even with this limitation, it will still update all files in the beatmap (better than stable) because it's performing a full re-download. - Any already imported beatmaps will not have a
LastOnlineUpdate
set, therefore will not show available updates. At some point all beatmaps with a null value will be queried in the background to resolve this. Not a huge deal IMO. - New imports are using the local cached beatmap info, which means in the super rare edge case that a beatmap is unranked and changed, it may be in an incorrect state even though its realm status shows that it's consistent. I've left a note about this in
BeatmapUpdater
but not sure it's worth acting on, for now.
Parallels.Desktop.2022-07-19.at.09.18.36.mp4
Add ability to sort and filter by ranked date (#19233 by @peppy)
For this to work, the game will need to perform some background data fetching. It might take some seconds or minutes depending on the size of your library.
Smaller changes
- Fix sorting mode not filling up to usable area in filter control (#19295 by @frenzibyte)
Testing
- Fix changelog overlay tests failing due to missing
CreatedAt
date (#19265 by @frenzibyte) - Fix
UpdateBeatmapSetButton
intermittent test failure (#19269 by @peppy) - Fix one more case of referencing old mod select overlay in tests (#19298 by @frenzibyte)
UI
Increase responsiveness of osu! logo triangles to the beat (#19264 by @TacoGuyAT)
video pending
Add game-side FPS counter (#19250 by @peppy)
This is a first implementation to build off. Figure it's easier to get this out as a "better than what we had" then build individual pieces into it.
- Frame time is currently displayed similar to stable (actual time between frames, not cpu time). Will probably change this to match the o!f display, but that requires more pieces to be exposed from the framework side.
- Tooltip is very temporary. I plan to replace it with the actual FPS display expanding out to a larger size to reveal more information.
osu.2022-07-20.at.15.11.13.mp4
Smaller changes
- Fix FPS counter not being wide enough to show large fps numbers (#19273 by @peppy)
- Fix draw FPS being inaccurate due to using
ElapsedFrameTime
(#19274 by @peppy) - Avoid using
RollingCounter
in fps counter (#19277 by @peppy)
UX
- Fix
OverlayContainer
no longer blocking mouse move events (ppy/osu-framework#5313 by @frenzibyte) - Fix floating mouse position not running correctly in single thread mode (#19240 by @peppy)
- Add the ability to save in the skin editor using system save hotkey (#19293 by @peppy)
Full Changelog: 2022.719.0...2022.723.0