Code Quality
- Fix nullability inspection in
NowPlayingOverlay
(#24421 by @bdach) - Remove #nullable disable in tournament (#24409 by @cdwcgt)
Cosmetic
Add kiai fountains to main menu (#24208 by @peppy)
osu.2023-07-13.at.11.30.12.mp4
Fix now playing overlay occasionally showing incorrect background (#24418 by @peppy)
Smaller changes
- Fix accuracy break info decimal separator being incorrect in certain languages (#24406 by @Joehuu)
- Fix "new update" notification using upload icon instead of download (#24256 by @tybug)
- Add star fountain sprite (ppy/osu-resources#270 by @peppy)
- Reduce spacing in settings items (#24314 by @peppy)
- Update translations from crowdin (ppy/osu-resources#272 by @peppy)
- Fix osu! logo suddenly disappearing during rapid exit (#24424 by @bdach)
- Add support for changelog entries with url attached (#24461 by @Joehuu)
Editor
Change beatmap editor to always select the closest object in time via clicking (#24289 by @peppy)
Matches osu!stable.
osu.Game.Tests.2023-07-19.at.07.58.34.mp4
Add support for cyclic selection in beatmap editor (#24291 by @peppy)
Update various editor design language (and centre playfield / timeline) (#24220 by @peppy)
Brings us closer to the latest designs. Also centres the playfield and timeline centre as proposed in #24207.
Before | After |
---|---|
Fix "key count" setting showing as "circle size" in osu!mania editor (#24317 by @peppy)
Add ability to export beatmaps from editor in a stable-compatible format (#24186 by @OliBomby)
This adds a menu button that lets you explicitly export a beatmap set for compatibility with osu!stable. With this feature it becomes a lot more feasible to create beatmaps in Lazer using the full range of features available in Lazer.
The default 'For editing' option now creates the file extension '.olz' (osu! lazer zip) which is accepted by osu! lazer but not by osu! stable, while 'For compatibility' creates a '.osz' file which obviously is accepted by both osu! stable and lazer. This makes it less likely to confuse the two formats.
Note that the 'For compatibility' option is not lossless, and as such shouldn't be used for cases where you want to make further adjustments to the beatmap.
Improve visuals of editor spacers (#24333 by @peppy)
Before | After |
---|---|
Fix editor blueprints being selectable for too long when hit markers are enabled (#24288 by @peppy)
Smaller changes
- Add checks for breaks obtained via external edits (#24259 by @NiceAesth)
- Fix osu!taiko editor playfield getting cut off incorrectly (#24374 by @peppy)
- Disallow interacting with the global track state in
Player
andEditor
(#24361 by @peppy) - Refactor rotation handling in editor to facilitate reuse (#24341 by @bdach)
- A starting point required to implement more advanced manipulation controls, like the rotation dialog everyone's waiting for.
- Block beatmap editor from testing/exiting/exporting when saving fails (#24467 by @Joehuu)
Framework
- Fix potential user-facing error when same shader is compiled in parallel (ppy/osu-framework#5961 by @peppy)
- Change source generators to only run for release builds (ppy/osu-framework#5938 by @peppy)
- Fix building iOS projects in AOT mode via command line not working (ppy/osu-framework#5940 by @frenzibyte)
- Fix CI test results not working (ppy/osu-framework#5947 by @Susko3)
- Fix integer vertex atributes being cast to floats (ppy/osu-framework#5944 by @smoogipoo)
- Prevent re-entrancy into
VertexBatch.Draw()
(ppy/osu-framework#5948 by @smoogipoo) - Refactor global UBO binding (ppy/osu-framework#5949 by @smoogipoo)
- Update framework (#24430 by @peppy)
- Include type name in long-running exception output (ppy/osu-framework#5957 by @peppy)
- Update workarounds file to fix iOS AOT build issues via command line (ppy/osu-framework#5962 by @frenzibyte)
Gameplay
Change offset calibration control to adjust for all difficulties of the current beatmap set (#24290 by @peppy)
Generally all difficulties in a beatmap set share the same timing information, so it only makes sense to apply a user offset everywhere.
Fix storyboard being see-through in some contexts (#24443 by @peppy)
Before | After |
---|---|
Gameplay (osu!)
Change spinner rotation animation to match input 1:1 (#24360 by @peppy)
Originally this was halved to make the newer designs look "better" (subjectively) but in testing I think it's fine to apply this across the board. It definitely feels better as a user to have non-slipping control over spinners.
Gameplay (osu!taiko)
Fix not always being able to hit objects when "hidden" mod is applied (#24305 by @chayleaf)
Integration
Fix discord not displaying status after being closed while osu! is running (#24189 by @peppy)
Originally disabled due to performance concerns. Performance issues have now been fixed.
Multiplayer
Add ability to toggle all free mods quickly at multiplayer song select (#24294 by @peppy)
Until now, one would have to open up free mod select and click select all to enable all free mods. Given how common enabling free mods is, the button now allows direct toggling and saves a few clicks.
osu.2023-07-19.at.10.09.35.mp4
General visual improvements to mutliplayer spectatator screen (#24415 by @peppy)
This is an initial pass before I try some more experimental changes.
- Individual screens now have rounded corners and shadows
- The zoom-to-focus now doesn't completely hide other screens, and should feel better in general
- The game toolbar is hidden when entering multiplayer spectator
2023-07-30.02.42.00.mp4
Fix multiplayer spectator not correctly proceeding to the next beatmap in all cases (#24438 by @peppy)
Improve choice of where to start playback of multiplayer spectator (#24448 by @peppy)
This was originally intended to try and fix the startup delay, but the majority of the delay comes from elsewhere.
Regardless, this algorithm should be much better than what we had (and avoid situations where one client being super far behind delays start of the session by forcing you to watch them catch up).
Smaller changes
- Fix deadlock when logging out while at the create match screen (#24295 by @peppy)
- Fix multiplayer screen transitions not always working as expected (#24422 by @bdach)
- Fix centred player not animating correctly (#24440 by @peppy)
Performance
Improve vertex upload performance significantly on iOS (ppy/osu-framework#5931 by @frenzibyte)
With the new performance test scenes we have, VBO uploads have shown to be quite poor on iOS, even when building in AOT.
After multiple days of investigation (interrupted by regressions in our rendering systems), it turns out the intermediate vertex storage allocated in VeldridVertexBuffer
have a significant hit on performance. In an isolated environment, there's +7ms aggregate CPU overhead when uploading to an intermediate vertex storage followed by uploading to the GPU buffer, from uploading & drawing 10k quads.
Shaving that overhead off improves performance on iOS significantly, especially in scenes with a high number of vertex uploads.
Re-enable AOT on android / iOS to greatly improve performance (#24338 by @frenzibyte)
This was disabled when we switched to the new renderer because it was crashing. It turns out this had a huge effect on performance.
This also enables Mono Interpreter as a fallback for areas where dynamic code is utilised. I will look into the steps necessary to remove it to close up any remaining possibilities for gains, but I'll do that as a separate follow-up effort later because building osu! with AOT compilation is quite a tedious task, and the performance gain in this PR alone is probably more than enough.
This adds a magnificent boost in rendering performance on iOS and android. Anyone who's been struggling with performance before on their iPhones/iPads should give this release a try!
Note that due to a startup crash, this is only live for iOS this time around. We'll revisit android!
Fix beatmaps being queued for reprocessing every startup when logged out (#24350 by @peppy)
Smaller changes
- Remove most locking overhead in
TripleBuffer
(ppy/osu-framework#5915 by @peppy)- One of those things I see in passing and can't un-see. Call this a developer indulgence rather than an optimisation if you want.
Platform
- Remove android manifest overlay (#24236 by @Joehuu)
- Fix window size not being stored to config during resize (ppy/osu-framework#5937 by @Susko3)
- Fix custom interpolation functions potentially causing SIGSEGV on iOS (ppy/osu-framework#5941 by @frenzibyte)
- Use better method for
NSString
conversion to avoid potentially pasting garbage content from clipboard (ppy/osu-framework#5942 by @frenzibyte)
Reliability
- Fix occasional crashes due to delayed input handling after switching screens (ppy/osu-framework#5557 by @peppy)
- Fix potential startup crash due to early application of animations (#24390 by @peppy)
- Fix occasional deadlock crashes when changing skins during gameplay (ppy/osu-framework#5956 by @peppy)
- Fix occasional crashes in multiplayer screens (ppy/osu-framework#5954 by @peppy)
- Fix crashes in beatmap listing due to race conditions (ppy/osu-framework#5955 by @peppy)
- Fix game crashing when entering skin editor in multiplayer spectator (#24427 by @peppy)
- Disallow
SafeWriteStream
logic from running on finalisation (ppy/osu-framework#5958 by @bdach)
Results
Fix some UI elements in legacy skins not always aligning correctly (#24292 by @peppy)
Finally, all the old skins which use weird positioning hacks to "skin" the progress pie area will now work correctly (assuming you have your game set to the correct aspect ratio for the skin). Rejoyce!
Fix attempting to export replay from results screen after play not working (#24367 by @peppy)
Show extended statistics at results screen when arriving from multiplayer spectator automatically (#24439 by @peppy)
Smaller changes
Skin Editor
Add new skin layer to allow components anchored to the playfield (#24387 by @peppy)
This has been a common request to cater for rulesets where the playfield changes in shape (ie. osu!mania with different column counts), or for cases where a user has applied playfield scale adjustments.
osu.2023-07-28.at.06.53.52.mp4
Song Select
Show break time in tooltip at song select (#24358 by @peppy)
The song select design is changing, so not overthinking this one. Felt like a quick usability change I could get in in 5 minutes.
Add back the ability to close mod select using enter key (#24375 by @peppy)
Fix temporary auto mod (ctrl+enter at song select) not reverting in all scenarios (#24386 by @peppy)
Testing
- Add option to avoid automatically running the first step in
TestScene
s (ppy/osu-framework#5935 by @Susko3) - Change tournament tests to use development folder (#24313 by @peppy)
- Fix iOS visual tests having unusual bundle identifiers (#24339 by @frenzibyte)
- Fix
TestSceneUnknownMod
failing due to null reference (#24359 by @peppy) - Add test scene for checking spinner judgements (#24405 by @bdach)
Tournament
General improvements to tournament client ladder editor (#24308 by @peppy)
- Adds very basic grid snap (frequent feature request)
- Uses more standard control panel area for settings
- Masks content – looks less broken with wider resolutions
General improvements to tournament client team editor and buttons (#24309 by @peppy)
- Updates all remaining buttons to use new button style
- Improved layout of team editor
Before | After |
---|---|
Shows the absolute score difference near the score bars (#24334 by @cdwcgt)
osu.framework.running._osu-development_.2023-07-23.15-26-20.mp4
Apply various visual and usability improvements to tournament ladder editor (#24347 by @peppy)
- Adds grid
- Improves selection box visuals (including the one that shows on stream)
- Selects newly added matches automatically
2023-07-25.01.43.15.mp4
Fix uneven spacing on match connectors in tournament ladder screen (#24353 by @bdach)
Fix beatmap panel backgrounds unloading when changing screens (#24346 by @cdwcgt)
Fix auto advance screens sometimes not advancing (#24331 by @ILW8)
Add confirmation dialog when performing dangerous actions in tournament client (#24284 by @ILW8)
Many "dangerous" actions in the tournament client do not require confirmation at all, and the buttons often are located near other oft-used buttons in the various editor screens.
Smaller changes
- Make list of tournaments in tourney client setup screen alphabetically sorted (#24328 by @ILW8)
- Add reload button to tourney setup screen (#24327 by @ILW8)
- Fix tournament client crashing occasionally when editing bracket (#24349 by @peppy)
- Enforce a hard minimum window size for tournament client (#24348 by @peppy)
- This also adds a non-black background when the window is too wide (looks nicer), and improve testability when screen isn't wide enough (tournament screen tests will now display scaled down to include the screen and control panel).
- Fix misalignment of selection box on schedule screen (#24356 by @peppy)
- Allow scrolling in tournament setup screen to avoid information ending up off-screen (#24377 by @ILW8)
- Fix startup tournament population not recovering from null beatmaps (#24357 by @peppy)
- Allow ladder editor grid to scale with content (#24389 by @peppy)
New Contributors
Full Changelog: 2023.717.0...2023.811.0