github ppy/osu 2023.908.0

latest releases: 2024.1115.0, 2024.1104.0, 2024.1023.0...
14 months ago

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 shared overlay-big-x
  • NotificationOverlay, OsuPopover and children (report, mod presets, etc): updated shared overlay-x
  • SettingsPanel: updated settings-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: updated wave-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

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.

osu!_7fvQPtqQuX

  • Fix potential crash when loading menu items due to cross-thread ops (#24605 by @peppy)

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

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
osu_2023-08-03_16-05-01 osu_2023-08-03_16-05-38

Smaller changes

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.

keybind settings screenshot

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

  • Adjust LN value scaling to bring overrated LN maps more in line (#24109 by @Hydria)

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

  • Avoid reprocessing scores on startup which already failed an upgrade previously (#24368 by @peppy)

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

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

  • Add missing colon in mod settings tooltip (#24631 by @peppy)

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
osu Game Tournament Tests 2023-08-16 at 08 16 29 osu Game Tournament Tests 2023-08-16 at 08 16 13

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

Full Changelog: 2023.815.0...2023.908.0

Don't miss a new osu release

NewReleases is sending notifications on new releases.