Skip to content

Releases: ppy/osu

2023.1008.1

08 Oct 19:36
a58abb7
Compare
Choose a tag to compare

Hotfix for mjultiplayer crahes

2023.1008.0

08 Oct 03:22
e520716
Compare
Choose a tag to compare

Behavioural

  • Add color search keyword for colour settings (#24948 by @NiceAesth)
  • Don't show replay import "missing beatmap" notifications during stable import (#24943 by @peppy)
  • Fix legacy beatmap importer not always handling nested paths correctly (#24998 by @peppy)

Code Quality

  • Tidy up LegacyLastTickOffset usages and stop passing everywhere (#24965 by @peppy)
  • Adjust clock usage in line with framework changes (#24885 by @peppy)
    • This removes four workarounds/hacks. Wow.
  • Fix some incorrect bindable-related code (#25028 by @peppy)
    • Came across these while doing a find-in-files for SettingSource usage, and WTFing at publicly settable bindables in most cases.

Also a few other inconsistencies, touched on in each commit message.

Editor

Flash dialog popup when attempting to exit editor while exit is being blocked (#24953 by @peppy)

Minor QoL, as i keep wondering for a split second why my cmd-w isn't closing the editor.

Framework

Gameplay

Add maximum dimensions limit to skinnable gameplay elements (#24706 by @frenzibyte)

This applies to osu! hit circles, taiko hits (drum rolls are already limited), and catch hit objects (fruits, bananas, and droplets). Mania is not included as I'm not even sure how to go about it (if I should).

Update classic scoring formula to closer match stable score V1 (#24924 by @bdach)

Lots of complex match, now classic scoring matches better than ever.

Implement redesigned health bar display for "Argon" skin (#24980 by @frenzibyte)

CleanShot 2023-10-01 at 01 22 56@2x

Smaller changes

  • Split legacy scoring attributes into their own table (#24779 by @smoogipoo)
  • Fix skin version being incorrectly set to 1.0 when skin is missing skin.ini (#24942 by @peppy)
  • Add GetDisplayScore() extension for SoloScoreInfo (#24957 by @bdach)
  • Adjust gameplay element maximum size limits for backwards compatibility (#25023 by @bdach)
  • Adjust argon health bar to fit with existing layout (#25030 by @peppy)
  • Add initial animation for health bars (#24986 by @peppy)
    • Pretty jank and I'm not sure how to make better, or how to get it matching stable. Probably need to make a subcomponent which is operating in game time to track the interpolation correctly. Main goal was to breathe some life back into things, so maybe this is fine as a first step.

Gameplay (osu!)

Cap maximum spinner RPM based on OD (#24932 by @smoogipoo)

The RPM required to clear spinners (i.e. minimum RPM) is unchanged from stable and the previous implementation:

OD RPM
0 90
5 150
10 225

With this PR, the RPM required to complete spinners becomes:

OD RPM
0 250
5 380
10 430

To come to these values, I've taken a mix of:

  • Watching players I could find on YouTube, trying to take a healthy mix of all skill levels.
  • My personal experience as what I would consider an "advanced" player but someone that has never cared about getting full score on spinners.
  • Spinning through a remote desktop connection + mouse. This artifically lowers my skill.

My (rough, biased, not rooted in absolute fact) observations from this are:

  • New players tend to range around 200-280 RPM.
  • Intermediate players tend to range around 250-320 RPM.
  • Advanced players tend to range around 320-380 RPM.
  • Expert players tend to sit comfortably around 450 RPM.
  • Even top players - those that are considered good at the game, tend to sit in the 300-400 RPM range

Keep in mind, however, that:

  • OD is skewed upwards such that it is more typical for even new players to see ODs >= 4. Those at the advanced level, for example, are usually going to see at least OD >= 7 (~405 RPM) which should still give them a bit of a challenge (at least they'll need to try).
  • Once you reach 6*, which is not considered hard these days, it's rare to see OD < 8.
  • RPM isn't consistent - there's ramp-up time whether caused by acceleration (stable) or by the player realising they need to start spinning.

Reduce approach circle's final opacity to match stable (#24964 by @peppy)

Turns out that approach circles were more visible on lazer until now. So let's bring them back in line with stable expectations.

Before After
osu! 2023-09-29 at 03 50 28 osu! 2023-09-29 at 03 50 01

Fix object dim being applied to approach circles (#24968 by @peppy)

Before After
osu Game Rulesets Osu Tests 2023-09-29 at 09 28 08 osu Game Rulesets Osu Tests 2023-09-29 at 09 27 35

Add edge highlight to "argon" slider repeat arrow (and improve all skins' reverse arrow animations) (#24990 by @peppy)

This addresses concerns about visibility of repeat arrows on short sliders by adding a border element which animated outwards.

I've also fixed multiple inconsistencies when compared to stable, including disabling beat sync and having the animation start as soon as the hit object appears. This helps massively with visibility, as otherwise the animation may not start until much later. It also looks better as every slider is not longer synchronised to the same animation cycle.

Smaller changes

Gameplay (osu!mania)

Adjust osu!mania "major" barlines to be less visually distracting (#24930 by @peppy)

Applies to both "triangles" and "argon" skins.

Before After
osu! 2023-09-26 at 07 59 07 osu! 2023-09-26 at 07 58 38

Gameplay (osu!taiko)

Allow judging at most one swell tick per frame (#25010 by @bdach)

This changes swell input handling such that only one swell tick can be judged in a given update frame. This is supposed to curtail cases wherein a user binds (either in-game, or via external tools) all four taiko actions to one key, to knock out four hits at a time with one key.

Performance

Reliability

Skinning

  • Crop oversized gameplay textures instead of downscaling them (#24975 by @frenzibyte)
      • Resolves mainly the "incorrect glyph rendering" part of #24973

This is a better approach to handle skins that have certain elements with extra empty space on all sides. Take this skin for example, observe the size of the hitcircle number elements:

CleanShot 2023-09-30 at 01 25 35@2x

The size is already larger than the spec...

Read more

2023.924.1

25 Sep 14:43
Compare
Choose a tag to compare

Framework

Online

Fix some users getting incorrectly logged out when network connection becomes unavailable (#24897 by @peppy)

Testing

  • Fix TestFriendScore intermittently failing due to randomness (#24880 by @bdach)

Full Changelog: 2023.924.0...2023.924.1

2023.924.0

24 Sep 03:57
561f664
Compare
Choose a tag to compare

Code Quality

  • Rename SliderVelocity to SliderVelocityMultiplier to distinguish from Velocity (#24728 by @peppy)
  • Add debug output for skin configuration lookups (#24726 by @peppy)
    • We've struggled with debugging these over the years so I think this was worth a couple of hours of work.
  • Clean up ImportTask / ArchiveReader implementations (#24807 by @peppy)
  • Remove LegacyDifficultyControlPoint / LegacyBpmMultiplier (#24738 by @peppy)
  • Parse only supported schemes as URIs (#24814 by @LukynkaCZE)
  • Refactor storyboard resource lookup to be more streamlined (#24809 by @peppy)
  • Fix issues after storyboard resource lookup refactor (#24863 by @bdach)
  • General improvements to README (#24875 by @peppy)

Editor

Add ability to toggle velocity change visualisation in osu!taiko and osu!mania editors (#24550 by @smoogipoo)

Stable never had this, and it's more natural to edit in linear speed.

Framework

Bump OpenTabletDriver to 0.6.3.0 (ppy/osu-framework#5999 by @X9VoiD)

Added support for over 30 new tablets. Improved support for many already supported ones. Fixed some bugs.

Smaller changes

Gameplay

  • Default to normal bank if invalid sample bank is specified (#24800 by @sw1tchbl4d3r)
    • Some existing beatmaps specify an invalid sample bank in the .osu file. While stable would fallback to the normal sample bank, lazer would - until now - just refuse to play the sample. This change replicates the behaviour of stable.

Gameplay (osu!)

Allow "Difficulty Adjust" mod's extended AR selection to go below zero (#24736 by @isakvik)

Adds the ability to set negative ARs down to -10 to the difficulty adjust mod for osu!standard (for the extended range), and adds millisecond value information to the selection slider when the extended limits are active to explain what "negative AR" even is.

Adjustment screen

Remove slider head circle movement (and remove setting from "classic" mod) (#24810 by @peppy)

I've gone with the most simple approach animation wise, which feels quite good to me: the snaking path will only begin snaking after the head circle is hit. I can see that others came to roughly the same consensus in the original discussion, so I don't think there will be too much contention over this change.

Things to note:

  • I considered having the slider ball not appear until the head is hit, but I don't think a change like this would sit well as it would potentially reduce readability
  • I intentionally made the snaking only happen on a successful hit. So if you miss the slider head completely, the outwards snaking will never complete. This could be a good visual cue.
  • The original plan I had animation wise was to have the portion of path before the slider ball's current position fade out on slider head hit, but this would mean duplicating the slider path. And I don't think this is a good idea from a performance perspective for such an edge case.

Here's how it looks in slow motion:

It's important to note that in the majority of cases, these kinds of sliders are so fast you can't even catch this visually. It's usually hidden under the head / tail. Even when it's not, it's hard to catch:

Finally, here's what missing a slider head completely looks like:

(basically, as if snaking was not enabled)

Smaller changes

  • Apply further fixes to note lock when classic mod is enabled (#24720 by @bdach)
  • Apply further fixes to note lock when classic mod is enabled (#24762 by @bdach)
    • This change in particular moves across an edge case from stable wherein slider heads will always block input from reaching objects underneath them, until the slider is fully completed.
  • Update osu! spinner ticks calculation method to better match osu!(stable) (#24661 by @frenzibyte)
    • osu!(stable) calculates the spins requirement for completion in "half spins", meanwhile lazer tried to do roughly the same but applied a slightly overestimated 0.6x factor to "convert" into full spins. This PR updates the number of spins required to be closer to expectations.
  • Add two spins gap before awarding bonus score on osu! spinners (#24662 by @frenzibyte)
    • As it turns out, in previous lazer versions a player could gain two extra bonus spins on any spinner in any map compared to stable. For the sake of balancing, this PR mimics stable behaviour and adds a gap of two spins which need to be performed after required spins in order to receive bonus score.
  • Fix sliders not always being the correct length on some beatmaps (#24739 by @peppy)
    • Intentionally reintroduces some floating-point imprecisions from stable to fix a rare case wherein a particular beatmap was missing a slider tick.
  • Fix sliders not always being the correct length on some more beatmaps (#24848 by @Magnus-Cosmos)
  • Fix game crash when using "Bubbles" mod on a beatmap with no hit circles (#24889 by @Fabiano1337)
    • Fixes bubbles mod crashing when no HitCircle is placed in a map like in Issue #24444

First PR tell me if you want me to change anything

Gameplay (osu!mania)

  • Fix osu!mania legacy skin configurations not working when notes are not skinned (#24727 by @peppy)
    • Originally disabled a while back, but as far as I can tell this does not look required anymore (we have much better classic fallback support these days).

Platform

  • Fix game mode not triggering on new macOS versions (#24612 by @peppy)

Reliability

  • Fix MemoryStreamArchiveReader.GetStream() failing in some cases (#24846 by @bdach)
  • Fix broken automatic beatmap download setting migration (#24866 by @bdach)

Song Select

Add star rating / BPM / difficulty display while mod select is open (#24705 by @Givikap120)

Collapse mod presets column slightly when not in use (#24796 by @peppy)

Frees up a bit of space.

Move mod overlay difficulty multiplier display to bottom of screen (#24799 by @peppy)

In order to aid the user in knowing how their mod customisation is affecting the score multiplier, this needs to be displayed at the bottom of the screen.

Simplify multiplier display implementation (#24801 by @peppy)

Rename "difficulty multiplier" to "score multiplier" and add more animation hinting (#24802 by @peppy)

Slight vertical bump indicating direction of change of multiplier, and rename to make the actual text make sense. It's not a difficulty multiplier, it's a score multiplier.

Smaller changes

  • Add new beatmap information wedge design (#22116 by @mk56-spn)
    • For future use!

updated2

  • Implement beatmap options popover (#24712 by @Joehuu)
    • For future use!

osu Game Tests_K92q8e3VK4

  • Link new song select wedge title and artist to search text box (#24733 by @Joehuu)
    • For future use!

osu Game Tests_IW8ZLEZMZn

  • Fix rate adjust mods not showing "x...
Read more

2023.914.0

14 Sep 09:46
Compare
Choose a tag to compare

The final hotfix for this release, rolls back all new optimisations as they weren't playing well for some. Sorry about the delay in getting things back on track!

Full Changelog: 2023.913.0...2023.914.0

2023.913.0

13 Sep 05:14
Compare
Choose a tag to compare

Another hotfix to fix sliders and things disappearing.

Full Changelog: 2023.908.2...2023.913.0

2023.908.2

08 Sep 16:46
Compare
Choose a tag to compare

Hotfix release number 2 for performance regressions (SSBO optimisations are disabled).

Full Changelog: 2023.908.1...2023.908.2

2023.908.1

08 Sep 09:52
Compare
Choose a tag to compare

Hotfix release for notelock breakage with classic mod.

Full Changelog: 2023.908.0...2023.908.1

2023.908.0

08 Sep 06:42
63e92f8
Compare
Choose a tag to compare

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 t...

Read more

2023.815.0

15 Aug 08:34
4e96853
Compare
Choose a tag to compare

Code Quality

Cosmetic

Don't completely fade FPS counter out when running at full FPS (#24540 by @peppy)

I've heard multiple times from uses that this is distracting or confusing. It now fades, but doesn't fully disappear.

Gameplay

Fix kiai stars flickering on and off during gameplay (#24547 by @bdach)

Performance

Add pooling for mania barlines (#24544 by @smoogipoo)

At COE, it was brought up to me that this map wasn't loading. Turns out that it is loading, just very slowly.

Reliability

Fix occasional crash when transitioning to results screen due to unsafe data access (#24548 by @peppy)

Skinning

Fix playfield skinnable layer bounds being incorrectly calculated with multiple stages (#24528 by @bdach)

Song Select

Fix multiple audio tracks playing at once for some users (ppy/osu-framework#5965 by @bdach)

Full Changelog: 2023.814.0...2023.815.0