Skip to content

Releases: ppy/osu

2023.1218.0

18 Dec 05:05
2f28a92
Compare
Choose a tag to compare

Code Quality

Editor

Show the filename of the current file in song setup (#25675 by @vegguid)

Change default slider velocity for new beatmaps to match osu!stable (#25688 by @peppy)

1.4x is the default in osu!stable (ie. on creating a new beatmap in the editor) and plays better than 1.0x, so let's match that on lazer.

Fix osu!taiko slider velocity being written incorrectly to .osu file on export (#25689 by @peppy)

Add verify screen check for delayed hitsounds (#24648 by @ItsShamed)

image

Improve free-hand drawing of sliders to the editor (#25658 by @OliBomby)

Put simply, curves match your user input 100% better, and create smoother corners. Free-hand slider drawing has basically gone from "oh that's cool but i can make better because i am pro mapper" to "why would you ever not use this?"

Framework

Gameplay

Fix osu!taiko and osu!mania using the incorrect slider length when converting beatmaps (#25595 by @smoogipoo)

Fix hit error displays not clearing lines on seek (#25747 by @peppy)

Adjust some mod multipliers for initial leaderboard sanity (#25744 by @peppy)

Mod Old New
Half Time 0.7x 0.3x
Classic 1x 0.5x
Synesthesia 1x 0.8x

There may be others we want to adjust. Note that these are basically placeholder safe values (lower is better) so we can allow these scores on the leaderboard without people complaining about unfairness... unless they are complaining the multiplier is too low (which is fine for now).

Show back button when spectating (#25770 by @peppy)

Avoids getting stuck at some screens. It's a bit ugly having the back button visible like this, but is the best approach we have for now.

Smaller changes

  • Fix ArgonHealthDisplay sometimes behaving weirdly on miss judgements (#25672 by @frenzibyte)
  • Fix "IgnoreMiss" judgements not updating accuracy (#25740 by @smoogipoo)
  • Fix ArgonHealthDisplay not displaying miss correctly during initial transition (#25673 by @frenzibyte)

Gameplay (osu!)

Implement Argon's spinner progress glow (#25562 by @EVAST9919)

Modify osu! standardised scoring to introduce a combo exponent (#24166 by @Zyfarok)

In osu! with ScoreV1 and ScoreV2, the cost of a miss was growing fast (quadratically) with the surrounding combos. This implied that a single miss could completely ruin the score of a play and cost up to 350k in ScoreV2.

To reduce this effect, a combo exponent of 0.5 was introduced. This effectively reduces the miss-penalty at high combos while keeping it high at low combos, in a similar spirit as how combo is capped in taiko or catch but without any hard-cap.

This combo exponent change is introduced together with a complete re-balance of the Combo/Accuracy split based on user feedback. Note that the new formula will imply higher scores overall and might require a bit of time getting used to. A table showing the effects of the new formula is available at here

Allow sliders to track if hit early (#25748 by @smoogipoo)

Smaller changes

  • Add spinner glow resources (ppy/osu-resources#298 by @EVAST9919)
  • Make osu! ruleset once again use the lazer default HP drain (#25797 by @smoogipoo)
    • Playing around since the re-introduction of osu!stable's HP drain mechanics, I've become uncertain about using the osu!stable drain by default since it doesn't quite match the "feel" of osu!stable.

Most of my issues appear at higher HP drain rates, but with HR even on old maps the minimum is usually HP 8.4, which falls into the problematic region. I believe the difference is mostly where the judgements are placed - in osu!stable sliders have a big judgement at the end (300 + tick), whereas in lazer they have a medium-high judgement at the start (300) and a small judgement at the end (tick).
The raw HP drain rate seems to be quite similar, and if anything osu!stable should be harsher on the cases I've found.

I've also attempted to make lazer stable better, but I haven't been able to get it "just right".

There are others that have wanted the old algorithm back, which pretty much echo what I've said above: #25631

So... This PR moves the osu!stable algorithm to the classic mod.

Here's a replay demonstrating this: https://drive.google.com/file/d/1-AEIhaVF2YfXVR9GYc8UFAnV7zfFFHvA/view?usp=sharing
Note that osu!stable will play with V1 mechanics, but V1 and V2 feel about the same (just accuracy is slightly worse on V2).

  • Allow sliders to track if hit late (#25776 by @smoogipoo)
    • This allows slider heads to be hit late. In basic terms, this means that as long as your cursor is in the right position to hit ticks / repeats at the point of hitting the slider head late, they will now be hits instead of misses.

For those wishing to delve deeper into this change, please check the technical descriptions (and videos) in the pull request

25776.mp4

Gameplay (osu!catch)

Adjust catch score grade cutoffs (#25601 by @smoogipoo)

This is how things look across all modes:

grade osu! / osu!taiko osu!catch osu!mania
SS 100% 100% 100%
S β‰₯95%FC β‰₯98% β‰₯95%
A β‰₯90% β‰₯94% β‰₯90%
B β‰₯80% β‰₯90% β‰₯80%
C β‰₯70% β‰₯85% β‰₯70%

Fix several issues with osu!catch beatmap conversion (#25685 by @smoogipoo)

This was originally intended to fix hyperdash generation around "pixeljumps", however it turned into much more general fixing of beatmap conversion because I couldn't provide beatmap conversion comparisons without fixing other issues.

Smaller changes

Gameplay (osu!mania)

Change osu!mania HP drain to match stable (#25587 by @smoogipoo)

Fix osu!mania beatmap conversions sometimes having the wrong key count (#25712 by @smoogipoo)

Fix mania "autoplay" mod missing 0ms hold notes (#25727 by @PercyDan54)

Fix column sizing exceeding screen width on tablets (#25777 by @peppy)

The mobile stretching mode now applies to all skins, and adjusts to your device's aspect ratio. Note that this changes the width of special columns slightly – we'll be watching feedback as to whether this is throwing people off.

Smaller changes

  • Fix precision issue when converting mania beatmaps (#25697 by @smoogipoo)
  • Fix mania conversion following new discoveries (#25702 by @smoogipoo)
  • Fix fallback column colors for legacy split stage mania skins (#25787 by @cl8n)

Mobile

  • Fix ...
Read more

2023.1130.0

30 Nov 09:50
Compare
Choose a tag to compare

Code Quality

  • Add test coverage of accessing skin layout after importing customised default skins (#25468 by @peppy)
  • Change ResourceStore provided to Skin to be a fallback, not replacement (#25481 by @peppy)
  • Update localisation analyser (#25491 by @peppy)
  • Refactor OsuAutoGenerator to allow custom SPM specifications (#25490 by @peppy)
  • Fix implicitly used method being named incorrectly (#25521 by @Syriiin)
  • Fix android compile failures due to invalid java version (#25533 by @bdach)
  • Improve commenting around IHasCombo interfaces (#25536 by @peppy)
  • Attempt to fix intermittent failures on new tests (#25540 by @peppy)
  • Remove manual changes to Xcode versions in CI (#25544 by @Frederisk)
  • Fix a couple of new r# inspections (#25552 by @peppy)
  • Replace all hexacon lookups with strongly typed properties (#25560 by @peppy)

Editor

Allow opening editor timestamp URLs from modding discussions in browser (#25371 by @RatinFX)

Add free-hand drawing of sliders to the editor (#25409 by @Tom94)

Collab with @default0.

This allows free-hand drawing of a slider by clicking and dragging in the osu! editor. As a dependent addition, "B-Splines" curve support has been added as a new slider type that generalize Bezier curves. The new B-Spline slider type is used to represent / approximate the hand-drawn slider and exposes a couple of settings for manual control over how the curve is fit.

Smaller changes

  • Fix slider length not updating when adding new anchor via ctrl-click (#25549 by @bdach)
  • Fix freehand-drawn sliders with distance snap (#25539 by @default0)

Framework

Gameplay

Change unstable rate calculation to account for rate-change mods (#25415 by @Poyo-SSB)

This makes UR comparable across rate adjust mods, including static (e.g. Double Time), linear (e.g. Wind Up), and dynamic (e.g. Adaptive Speed) mod types.

Fix handling of combo and combo colours around spinners (#25551 by @smoogipoo)

Smaller changes

  • Fix classic scoring overflowing in osu! ruleset due to integer multiplication overflow (#25546 by @bdach)
  • Fix break time simulation in HP calculation not matching osu!stable (#25420 by @smoogipoo)

Gameplay (osu!)

Adjust slider follow circle animation to not abruptly scale on early ticks (#25493 by @peppy)

Reimplement HP drain to match osu!stable (#25418 by @smoogipoo)

Gameplay (osu!catch)

Reimplement HP drain to match osu!stable (#25563 by @smoogipoo)

Main Menu

Add second level menu for editors (#25561 by @peppy)

As mentioned in discussion, while the skin editor has evolved to be really powerful, it's quite hidden from the user. To solve this, I've added a second level menu under the "Edit" button to house both editors.

Performance

Unload beatmap storyboards when not in main menu screen (#25400 by @frenzibyte)

This frees up resources that would otherwise be held ransom until returning to the menu.

Don't draw the game when the window is minimised (ppy/osu-framework#6052 by @Susko3)

This change reduces the CPU and GPU usage when the window is minimised.

Skinning

Fix default argon health bar width being zero (#25466 by @bdach)

Will fix:

  • appearance of the health bar in toolbox
  • size of the health bar when added from toolbox
  • skins which had the default value of the width setting set

Fix argon health bar folding in on itself when too narrow (#25472 by @bdach)

Add ability to toggle labels on argon counter components (#25469 by @Joehuu)

Save any unsaved changes in the skin editor when game changes screens (#25523 by @peppy)

Allow use of skin username/flag/avatar components outside of gameplay (#25553 by @peppy)

CleanShot 2023-11-23 at 08 15 46

Load gameplay immediately on entering the skin editor while at the main menu (#25568 by @peppy)

Smaller changes

  • Fix skin editor crashing when pasting with nothing in clipboard (#25547 by @bdach)
  • Fix skin element "PlayerFlag" responding to clicks/hovers (#25530 by @yesseruser)

Spectator

Fix spectator mode not showing when a spectated user quits correctly (#25565 by @peppy)

Fix spectator not immediately showing when a spectated user fails (#25566 by @peppy)

UI

Show full user cards when hovering avatars everywhere in the game (#25339 by @joshika39)

Allow context menus to have visible spacers (#25520 by @peppy)

CleanShot 2023-11-21 at 05 25 17

More correctly handle login flow when user profile overlay is visible (#25510 by @Stedoss)

Before After
osu._VW2mjYjK2F.mp4
osu._IDEdvKFjxL.mp4

Add drag bar on chat overlay to better signal resize-ability (#25567 by @peppy)

Smaller changes

New Contributors

Full Changelog: 2023.1114.1...2023.1130.0

2023.1114.1

14 Nov 15:08
711bf14
Compare
Choose a tag to compare

What's Changed

  • Fix some touch device-related issues by @bdach in #25432
  • Fix argon health bar not relative sizing correctly by @bdach in #25442
  • Fix customised argon skins no longer loading due to incorrect resource store specification by @peppy in #25443

Full Changelog: 2023.1114.0...2023.1114.1

2023.1114.0

14 Nov 04:20
bb2f38d
Compare
Choose a tag to compare

Code Quality

  • Update country code names to match database (#25217 by @peppy)
  • Fix some new nullable inspections (#25301 by @peppy)
  • Improve log output surrounding score submission (#25300 by @peppy)
  • Clean up mod usability flags (#25328 by @bdach)
  • Rename and invert flags for slider classic behaviours (#25341 by @peppy)
  • Refactor KeyCounterDisplay to use autosize (#25411 by @peppy)

Editor

Fix editor not prompting before saving beatmap for export (#25223 by @peppy)

Fix various osu!catch distance snap grid breakage (#25240 by @bdach)

Fix slider velocity changes not being undone correctly (#25307 by @bdach)

Decouple metronome tick playback from pendulum movement (#25316 by @peppy)

I originally wanted the sounds to match the visuals, but it turns out that mappers want the sound to play immediately. So now it will always play, regardless of whether the pendulum passes the centre point or not.

Smaller changes

  • Fix right clicks on timeline potentially not working as expected (#25304 by @peppy)
  • Select text in beat divisor popover automatically (#23823 by @peppy)
  • Automatically refresh the verify screen's issue list on re-entering it (#25376 by @peppy)
  • Fix editor crash when creating a new difficulty in a non-existent beatmap (#25380 by @frenzibyte)

Framework

Fix releasing mouse buttons outside of window not working in relative mode (ppy/osu-framework#6036 by @Susko3)

Fix mouse not working as expected on iOS (ppy/osu-framework#6041 by @Susko3)

Smaller changes

Gameplay

Enforce minimum gameplay sample volume of 5% (#25185 by @bdach)

osu!stable's sample volume floor is actually 8%, but it is enforced in what seem to be completely stupid ways (in the UI it's 5%, but actual playback takes place at minimum 8%). Since that seems weird and bad, and basically nobody seems to know about it (source: a brief discussion I had with the NAT today), and it seems there should be no harm in actually having the cap be 5% without weird gymnastics or lying to the users, that's what I ended up doing.

Add ability to quick retry using Ctrl-R (#25235 by @peppy)

Fix quick retry immediately after completion marking score as failed (#25264 by @bdach)

Allow argon's key counter display to be rotated while keeping text upright (#25349 by @Joehuu)

Smaller changes

Gameplay (osu!)

Fix repeat circles on sliders not correctly getting dimmed (#25221 by @peppy)

Before:

After:

Fix all spinner ticks being alive and causing performance degradation (#25333 by @peppy)

Continue to play spinner bonus sounds when MAX display occurs (#25343 by @peppy)

Fix osu! (slider) combo not matching expectations when classic mod is disabled (#25342 by @peppy)

Until now, the max combo of sliders has been lower than expected due to the tail not giving a combo. This has been fixed, so now max combo will match classic mod (and stable). This will make cross-comparisons much saner.

Implement basic touchscreen detection (#25348 by @bdach)

The "touch device" mod will now be shown when using touch input, both at song select and during gameplay.

Smaller changes

  • Fix out-of-order judgements when missing a slider head (#25218 by @peppy)
    • Would sometimes lead to unstable total score calculations.

Gameplay (osu!mania)

Add support for "argon" default skin to expand columns when on mobile devices (#25336 by @peppy)

Should ease those looking to play the game on mobile until we (potentially) have a better solution in the future.

If this works out well, we can consider rolling it out to other skins.

Keys
4 CleanShot 2023-11-02 at 06 17 51
5 CleanShot 2023-11-02 at 06 18 17
7 CleanShot 2023-11-02 at 06 12 42
20 CleanShot 2023-11-02 at 06 18 57

Gameplay (osu!taiko)

Apply same changes to "argon" osu!taiko barline design that were applies to osu!mania (#25222 by @peppy)

Before After
CleanShot 2023-10-25 at 05 22 06 CleanShot 2023-10-25 at 05 20 20

Import

Update the last played date of a beatmap when importing a replay by the local user (#25303 by @peppy)

With this change, importing beatmaps scores from stable will now choose a more correct "Last Played" date for beatmaps based on the most recent score imported. This also applies when importing one of your own scores at any point.

Main Menu

SFX improvements for ButtonSystem/MainMenu (#25395 by @nekodex)

Makes the main menu feel a bit more polished IMO while also reducing the ability to spike playback volume by spamming stuff.

Smaller changes

Mods

  • Make FreezeFrame and Transform Incompatible (#25233 by @Termincc)
  • Fix StopUsingBeatmapClock() applying adjustments to track it was supposed to stop using (#25253 by @bdach)
  • Fix another potential crash in bubbles mod (#25334 by @peppy)

Online

Overlays

Update user profile overlay to show more than one tournament banner (#25287 by @frenzibyte)

CleanShot 2023-10-29 at 01 49 53

Add ability to view kudosu rankings (#25388 by @Joehuu)

Reliability

  • Fix iOS AOT compilation failure due to SharpCompress library upgrade (#25236 by @peppy)
  • Do not revert to default value when double-clicking disabled slider (#25230 by @bdach)
  • Fix skin editor freezing game if opened during active gameplay (#25265 by @bdach)
  • Update installer to latest release (#25385 by @peppy)

Settings

Automatically select existing search text when opening settings (#25286 by @frenzibyte)

Allows for a better search experience, as a user usually wants to find a new setting each time they come to the settings screen.

Add "disable taps during gameplay" to touch input settings and related UI (#25366 by @Susko3)

This fixes the previous "disable clicks" toggle from also affecting touch input.

Smaller changes

Skin Editor

Add skin editor context menu items to reset rotation and scale (#25375 by @peppy)

Fix skin editor not clearing undo history on skin change (#25406 by @bdach)

Add "export" item to skin editor menu (#25408 by @peppy)

Add support for adjusting size of skin elements (#25402 by @peppy)

Dragging a skin elements from an edge will now adjust size, not scale. This allows resizing elements which support it without stretching them (which looked really bad).

Support is limited for now, but we can easily roll this out to more components in the future.

Before After
CleanShot 2023-11-10 at 05 37 19 CleanShot 2023-11-10 at 05 39 58

Read more

2023.1026.0

26 Oct 09:02
dbf0b2e
Compare
Choose a tag to compare

Audio

Add new generic-error sample (ppy/osu-resources#288 by @nekodex)

SFX tweaks (#25178 by @nekodex)

A bunch of little fixes grouped together:

  • Fixes toolbar ruleset buttons not having hover sounds
  • Replaces NowPlayingOverlay pop-in/pop-out sounds with newer generic overlay pop-in/pop-out ones
  • Changes NewsCard select samples from Default sample set to Button
  • Reduces LoginOverlay sample panning to match NowPlayingOverlay
  • Changes back button sample set (in KeyBindingPanel) from ButtonSidebar to Default
  • Adds keypress feedback/sound when binding keys (in KeyBindingPanel)
  • Changes RevertToDefaultButton from Button sample set to Default

Smaller changes

  • Use new generic-error sample in appropriate places (#25113 by @nekodex)
    • Used by the duplicate keybinding popup and also replaces password-fail (incorrect room password popup)

Code Quality

Remove reference to multiplayer_scores table (ppy/osu-server-spectator#192 by @bdach)

Smaller changes

  • Clean up KeyBindingRow and related classes (#25092 by @bdach)
  • Remove remaining usages of LargeTick{Hit,Miss} in mania (#25100 by @bdach)
  • Refactor key binding panel for easier usage (#25104 by @bdach)
  • Remove no longer used scoring difficulty attributes (#25142 by @bdach)
  • Apply various fixes and cleanup to spinner logic (#25143 by @peppy)
  • Fix various new rider EAP inspections (#25155 by @peppy)
  • Replace DistancedHitObjectComposer with composition-based approach (#25171 by @bdach)
  • Isolate diffcalc workflow runs (#25176 by @smoogipoo)

Editor

Fix osu!mania beat snap grid sometimes not displaying correctly (#25073 by @peppy)

Persist the state of "show speed changes" between editor sessions (#25153 by @peppy)

Add beat snap grid to osu!taiko editor (#25154 by @peppy)

Framework

Add button to randomise test scene background colour (ppy/osu-framework#6022 by @peppy)

osu.Framework.Tests.2023-10-10.at.09.52.03.mp4

Fix some beatmap videos no longer rendering (ppy/osu-framework#6024 by @FreezyLemon)

MPEG-4 Part 2 is a video coding standard that sits "between" H.262 and H.264. Xvid, DivX and some less known formats implement it.

Smaller changes

Gameplay

Fix argon health bar not completing flash animation correctly (#25074 by @peppy)

Noticed this while doing some work around the health bar. The flash just wasn't playing due to an oversight in the miss-finish-animation logic. I've also adjusted the flash a bit.

Show results immediately if user hits "back" key after finishing gameplay (#25097 by @peppy)

I've gone ahead and matched the osu!stable behaviour for this, as it seems like it's what people are used to and they will settle for no less.

Smaller changes

  • Fix legacy score calculators using incorrect mod multipliers (#24988 by @smoogipoo)
  • Fix multiplayer not correctly pausing the track on initialisation (#25079 by @peppy)
    • This resolves crashes experience in the last release (before the hotfix).
  • Fix default preview point being incorrect on old beatmaps (#25083 by @peppy)
  • Fix health bar animating startup sequence when it shouldn't be (#25136 by @peppy)
  • Fix incorrect volume on some beatmaps (#25179 by @bdach)

Gameplay (osu!)

Adjust slider repeat animation on legacy skins to closer match stable (#25160 by @bdach)

Add an "Adjust pitch" switch to DT/HT (#24640 by @Givikap120)

Adjust slider ends to be more lenient during very fast sliders (#24966 by @peppy)

On very fast sliders, you now only need to be tracking somewhere in the last 36ms, rather than precisely at the (hidden) position of the last tick.

######### Miss

######### Valid hits

Fix circle scale not matching stable due to missing multiplier (#25167 by @peppy)

This fixes some replays incorrectly having misses due to a floating-point scale mismatch.

Change spinner score display to show when reaching max bonus score (#25177 by @peppy)

Fix spinner cheese by accounting for spin directionality (#25157 by @peppy)

You now need to spin in one direction for a full spin in order to increment the total spin count.

Smaller changes

  • Adjust approach circle maximum size limits for backwards compatibility (#25067 by @bdach)
  • Apply a few more object sizing limits (#25110 by @peppy)
  • Fix spinner ticks not playing samples correctly sometimes (#25216 by @bdach)
    • This was probably revealed by the lowering of the spinner cap, which made the ticks more spread out and made this issue more likely to occur.

Gameplay (osu!catch)

Adjust legacy skin catcher sizing to match 1:1 with osu!(stable) (#25070 by @frenzibyte)

Overall, here are visual cross-comparisons of the catcher's display between lazer and stable:

master this PR
catcher-master catcher-PR

Fix "Floating Fruits" mod not flipping playfield properly (#25173 by @bdach)

Gameplay (osu!mania)

Remove osu!mania hold note "ticks" (#25062 by @smoogipoo)

Change osu!mania "perfect" judgements to only award bonus score (#25111 by @peppy)

Online

Add ability to invite players to multiplayer rooms (#25005 by @minetoblend)

Adds invites for multiplayer matches. Players can be invited by right clicking their profile in the user list (F9 menu).

2023-10-03.21-41-17.mp4

We will add more places to trigger the invite from in the future!

Smaller changes

Performance

Ensure health displays don't pile up transforms when off-screen (#25076 by @peppy)

Results

Show maximum bonus statistics on results screen (#25096 by @peppy)

CleanShot 2023-10-12 at 05 54 47

CleanShot 2023-10-12 at 05 55 42

Settings

Disallow binding multiple bindings in a single section to one key (#25105 by @bdach)

Add ability to revert slider settings to default when double-clicking nub (#25163 by @Joehuu)

Kapture 2023-10-17 at 21 58 18

Smaller changes

  • Clear pre-existing bindings of same key combination to single action (#25152 by @bdach)

Song Select

Improve mouse interactions at song select (#25182 by @peppy)

Add ability to search for difficulty names using square brackets (#24921 by @Pasi4K5)

Smaller changes

  • Fix "Hard Rock" mod affecting CS/AR in osu!mania and osu!taiko (#25101 by @peppy)
    • Not sure if there are other exceptions we should account for here. This is mostly fixing this for visual purposes. We'd probably want to hide these stats in the mod select screen at some point if they are not relevant to a ruleset.
  • Remove drag handles from manage collections dialog for now (#25140 by @peppy)
    • The realm implementation doesn't support this. May come back at a future date, but this matches stable so it's not a huge deal.
  • Fix collections not being sorted alphabetically in context menus (#25139 by @peppy)

Testing

  • Remove test scene background stack and use ...
Read more

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