Hello fellow lazer enjoyers!
We're switching up focus a bit for the rest of the year. As a result, you may see less forward-facing changes, but don't worry – we're still working hard behind the scenes. Watch the latest release video for the full details!
Audio
Update overlay pop-in/pop-out sample usage (#24576 by @nekodex)
An update to the pop-in/pop-out samples for various overlays. Also adds them to some overlays/popups that were previously missing them.
Updated/added samples for overlays:
ManageCollectionsDialog
,ChatOverlay
,FileChooserPopover
: new sharedoverlay-big-x
NotificationOverlay
,OsuPopover
and children (report, mod presets, etc): updated sharedoverlay-x
SettingsPanel
: updatedsettings-pop-in
BeatmapOptionsOverlay
(aware there is a new design for this incoming, but I had created the samples prior to finding out, so PR'ing for use in the meantime anyway)WaveOverlayContainer.cs
: updatedwave-pop-in
sample
Adds left/right panning to the pop-in/pop-out of:
LoginOverlay
NotificationOverlay
SettingsPanel
Also tweaked on-click sample playback behaviour of some components that didn't work well with the overlay pop-in samples.
Smaller changes
- New overlay pop-in/pop-out samples (ppy/osu-resources#276 by @nekodex)
Behavioural
Fix "date added" not being set correctly when importing stable beatmaps (#24574 by @LiquidPL)
Flash taskbar when receiving notifications while the game is not focused (#24588 by @ItsShamed)
Smaller changes
- Allow slider bars to update their underlying value immediately (#24431 by @bdach)
- Always show supporter-only playlist durations in dropdown (#24366 by @Joehuu)
- This allows better discoverability of durations which were previously hidden to non-supporters. I'd still like to improve this in the future but it's better than what we had.
Code Quality
- Remove slider velocity from
DrumRoll
(#24537 by @OliBomby) - Add various testing improvements to various tournament components (#24564 by @peppy)
- Apply NRT to
osu.Game.Beatmaps.Formats
namespace (#24568 by @peppy) - Fix
SliderPath.GetSegmentEnds
(#24581 by @OliBomby) - Remove global action container input queue workaround (#24610 by @bdach)
- Enable sentry "global mode" as per recommendation (#24634 by @peppy)
- Disable redundant verbatim string prefix inspections (#24668 by @bdach)
Cosmetic
- Fix star fountain directions not matching stable (#24604 by @peppy)
- Use existing localisations for some missed strings (#24707 by @Magnus-Cosmos)
Editor
Add precise rotation control to osu! editor (#24567 by @bdach)
One of the most requested features to return from stable's editor.
Fix sliders being reversed incorrectly in the editor (#24527 by @Pasi4K5)
Smaller changes
- Fix occasional crash when opening the editor (#24562 by @peppy)
- Fix tracking on empty control point groups (#24577 by @OliBomby)
- Fix last slider control point type being included in legacy export (#24570 by @OliBomby)
- Fix hit animation not synchronizing when editing hit objects (#24508 by @OliBomby)
- Fix slider velocity popover crashing when opened during slider placement on empty beatmap (#24711 by @honguyenminh)
Framework
Add support for shader storage buffer objects (SSBOs) (ppy/osu-framework#5950 by @smoogipoo)
SSBOs are a way to submit large amounts of data to GPUs. We now use this when possible as an optimisation everywhere in the game.
Use SSBOs for bindless masking (ppy/osu-framework#5952 by @smoogipoo)
A huge forward step in general framework performance. Now we don't need to split draw calls when masking is toggled (generally a saving of 10-30% draw calls). This will lead to larger gains in the near future when we make texture atlases as large as they should be, pending some further work.
Use floating point rectangles for masking operations (ppy/osu-framework#5960 by @smoogipoo)
Fixes (at least some) 1px masking errors:
before | after |
---|---|
Smaller changes
- Implement popover positional hinting (ppy/osu-framework#5967 by @bdach)
- Make
KeyBindingContainer.Prioritised
work for positional input too (ppy/osu-framework#5966 by @bdach) - Allow gravity in RigidBodySimulation to be adjustable (ppy/osu-framework#5972 by @hwabis)
- Implement taskbar flashing support (ppy/osu-framework#5970 by @ItsShamed)
- Bump Android target SDK version to 33 (ppy/osu-framework#5973 by @bdach)
- Fix
KeyBindingContainer
propagating release events to removed drawables (ppy/osu-framework#5975 by @bdach) - Adjust shader to support masking SSBO (ppy/osu-resources#277 by @smoogipoo)
- Update framework and apply changes to support masking SSBO (#24613 by @smoogipoo)
- Add D3D11VA video acceleration support (ppy/osu-framework#5976 by @FreezyLemon)
- The newer APIs should generally be used if possible, so D3D11VA > DXVA2 (which uses DX9). But vendor-specific implementations should still be preferred.
- Add test coverage for all video codecs (ppy/osu-framework#5977 by @FreezyLemon)
- Add a cache busting mechanism to the shader compilation cache (ppy/osu-framework#5978 by @smoogipoo)
- Remove now unnecessary blur shader workaround (ppy/osu-framework#5979 by @smoogipoo)
- Free AVIOContext and IO buffer (ppy/osu-framework#5982 by @FreezyLemon)
- Remove libavfilter where possible (ppy/osu-framework#5980 by @FreezyLemon)
- Reduces game filesize by 10-20mb depending on patform.
- Change behaviour of
Storage.Move
to overwrite existing by default (ppy/osu-framework#5984 by @peppy) - Fix crash on minimising from non-native fullscreen resolutions (ppy/osu-framework#5983 by @smoogipoo)
- Update README.md to include VS Code plugin prerequisites (#24645 by @Dreamurrrr)
- Update localisations (ppy/osu-resources#278 by @peppy)
- Update native libraries (ppy/osu-framework#5985 by @peppy)
- Update framework (#24717 by @peppy)
Gameplay
Add ability to toggle gameplay leaderboards with Tab
key (#24402 by @QuantumSno)
There's now a new key binding, defaulting to the classic Tab
key.
Currently this just toggles the setting Gameplay > Hud > Always show gameplay leaderboard
Smaller changes
- Mark "Score V2" mod as not user-playable (#24675 by @bdach)
- The mod generally will only be present on scores imported from stable. As such, it's probably ok to mark it as such.
Gameplay (osu!)
Fix hit circles fading out too fast when hit with classic mod active (#24686 by @frenzibyte)
The animation adjustment applied in classic mod should be specific to when a player misses the hit circle, but it was applied regardless of the circle's state.
Correctly implement osu!stable "note-lock" in Classic mod (#24280 by @tybug)
As far as I can tell, osu!stable note-lock was never implemented correctly in lazer. This implements osu!stable note-lock 1:1.
There are two obvious behavioral changes in this diff, though there may be more that are obscured by the details.
- Previously, clicks on stacked hitobjects which are note-locked cause shakes, while on osu!stable they don't (yes, despite the note being note-locked. stacks are special-cased on osu!stable.)
- osu!stable has a weird extra 3 ms of leniency before hitobjects can be note-locked. Not sure why — the "unsnapped objects" comment doesn't make much sense to me — but it's back now.
Apply flashlight slider dim immediately to match osu!(stable) (#24701 by @frenzibyte)
This removes the slight fade when playing sliders with flashlight enabled, as it didn't match expectations.
Gameplay (osu!mania)
Disable hold end conversion for mania "Hold Off" mod (#24552 by @smoogipoo)
Fix osu!mania hit windows changing with rate adjust mods (#24636 by @smoogipoo)
Brings back the osu!stable behaviour where hit windows would adjust with speed adjustment mods so they don't become tighter/looser.
Smaller changes
Multiplayer
Fix multiplayer spectator potentially taking too long to start (#24451 by @peppy)
When watching from the middle of gameplay, due to a series of failures, SpectatorClock
would not get seeked to the current time, causing all clients to look like they were out of sync.
This is a hotfix for the issue. A better fix will require framework changes or considerable restructuring.
Add score difference display to multiplayer spectator (#24566 by @peppy)
This was recently added for the tournament client, but was not applied to the local implementation which is used in multiplayer.
Performance
Results
Add support for downloading replays (#24669 by @bdach)
Replays set on lazer in 2023 should all be accessible now. Note that we will be doing a score reset later in the year, so this is your chance to pull down any scores you want for safe-keeping!
Smaller changes
- Fix and use score user's IsBot property in results screen animation (#24678 by @Nabile-Rahmani)
Skin Editor
Allow inverse scaling selection in skin editor (#24683 by @Wleter)
Fixes weirdness when scaling objects too small.
Fix closest anchor for rotated/flipped selections in skin editor (#24698 by @Wleter)
Song Select
Show mod settings as "on" or "off" rather than "True" or "False" (#24632 by @peppy)
Split out individual difficulties when using difficulty sort at song select (#24614 by @peppy)
Probably the number one feature request for song select. I found a way to implement this without refactoring and rewriting everything.
It's not perfect but it's a start.
Smaller changes
Testing
- Rename "dummy" local user to something more descriptive (#24561 by @peppy)
- Rewrite
TestSceneObjectOrderedHitPolicy
to not rely on custom hitwindows (#24627 by @bdach) - Add capability to export ordered object policy test cases for stable crosscheck (#24628 by @bdach)
Tournament
Improve visuals of tournament song bar (#24565 by @peppy)
Before | After |
---|---|
Allow "Last year's placing" in the tournament seeding to show "N/A" for new teams (#24586 by @FreezyLemon)
Currently, there is no proper way to represent a team that did not place in the last year's tournament (e. g. new teams) in the seeding screen. The way I've seen this be handled is either setting it to some (arbitrary?) high value (e.g. https://www.twitch.tv/videos/1770154093?t=00h06m37s, new teams are shown as #64
) or sometimes by just leaving it as #1
(non-official and/or one-off tournaments).
This change increases the range to include zero (1-256
-> 0-256
) , which also makes zero the default value for newly created teams (in the team editor).
Allow saving changes in tournament system using Ctrl
+S
(#24679 by @peppy)
Smaller changes
- Allow running a main game instance while using the tournament client (#24563 by @peppy)
- Was brought up (and hacked around) during COE. This allows starting the tournament client when osu! is already running, which can be useful for some scenarios. At COE it was used to allow streaming gameplay from the multiplayer spectator interface while still using the tournament client for bracket display (with manual updating on the side).
- Fix crash in tournament client when pick/ban is activated (#24601 by @peppy)
- Remove tournament client minimum window size (#24680 by @peppy)
- This seemed like a good idea but people were using it with smaller resolutions, do let's just not do it.
- Fix regression in spacing on tournament schedule screen (#24690 by @peppy)
- Fix potential race condition in song bar beatmap lookup flow (#24691 by @peppy)
New Contributors
- @QuantumSno made their first contribution in #24402
- @Hydria made their first contribution in #24109
- @LiquidPL made their first contribution in #24574
- @Dreamurrrr made their first contribution in #24645
- @Magnus-Cosmos made their first contribution in #24707
Full Changelog: 2023.815.0...2023.908.0