Skip to content
998e3b7
Compare
Choose a tag to compare

Thanks for following along! This is a tagged release (2022.731.1). For more information check out the osu! changelog page and dev blog.

Code Quality

  • Log beatmap difficulty retrieval failures during score calculation (#19367 by @smoogipoo)
  • Improve log output for too-many-scheduled-tasks (ppy/osu-framework#5322 by @peppy)
  • Remove no longer necessary API score models (#19379 by @frenzibyte)
  • Remove nullable disable annotation in mods for catch ruleset. (#19249 by @andy840119)
  • Move LegacyComboCounter to osu.Game.Skinning (#19426 by @LeNitrous)
  • Remove nullable disable annotation in mods for mania ruleset. (#19418 by @andy840119)
  • Remove nullable disable annotation in mods for taiko ruleset. (#19419 by @andy840119)
  • Add more comprehensive xmldoc for beatmap model classes (#19433 by @peppy)
    • In an effort to create a terminology glossary for all beatmap-related classes, since we have a lot of them. Check it out on the dev wiki.
  • Remove unused RulesetStore from BeatmapManager constructor (#19435 by @peppy)

Database

Fix multiple issues with beatmap updating (#19378 by @peppy)

With the introduction of updating beatmaps in the last release, some users noticed some edge cases where the update process was not working (or working "too well", and showing the button even after an update was applied). This was largely due to the beatmap metadata being too cached locally, and has been resolved by always requesting the most up-to-date metadata in non-batch import scenarios.

This also fixes some beatmap-related attributes not being transferred, like "date added" and any scores that were attached to a beatmap that was part of an updated set, but not modified itself.

This also changes the process to only leave soft-deleted copies of beatmaps which actually had modifications.

Move beatmap collections to realm (#19430 by @peppy)

This brings collections over to our new client-side database, doing away with the legacy format. Visually this shouldn't be much different, but internally it is a lot more efficient and reliable.

Your existing collections will be automatically migrated on startup from collection.db, but if anything goes wrong that file will remain.

Add collection transfer logic to beatmap update flow (#19431 by @peppy)

  • For beatmap sets where every difficulty was in a collection, any new difficulties will also be added to that collection.
  • For beatmap sets where only some difficulties were in a collection, updated versions of those beatmaps will also be added to the same collections.

Editor

  • Fix editor summary timeline not responding to kiai changes correctly (#19457 by @peppy)

Gameplay

Add osu!stable style circular song progress for legacy skins (#19408 by @LeNitrous)

Finally, the "pie" style of progress that many have requested has returned to legacy skins. Note that this is now the default display for legacy skins. If you would like the full display style back, you can add it using the skin layout editor (accessible from settings or via Ctrl+Shift+S).

Input

Add ability to make cursor show even during touch input (#19389 by @peppy)

A long-time request, you can now make the cursor always show, even on touch devices. This can also be used as a workaround for tablets reporting touch inputs, for those that have recently had issues with cursor unexpectedly disappearing on desktop devices.

I completely disagree with this from a UX perspective, but it's come up so often that I figure we should just let users bone themselves.

Mods

  • Fix osu!taiko flashlight positioned incorrectly on gameplay restart (#19466 by @naipofo)

Online

Attempt to fix spectator sending too slow for users with high latency (#19451 by @peppy)

In the previous release I made a change which on the surface wasn't really looking to do much (making all requests blocking in the spectator client), but for users with very high latency (500ms+) this could result in the client not being able to send data fast enough to the server. This was noticed especially by users using dodgy VPNs.

Smaller changes

  • Fix players potentially disappearing in spectator list after restart (#19363 by @frenzibyte)
  • Fix beatmap updater potentially using outdated local metadata (#19440 by @peppy)

Overlays

Fix beatmap overlay stats showing values with current mods incorrectly applied (#19299 by @Cwazywierdo)

Display exclamation icon for online scores with unprocessed PP (#19343 by @frenzibyte)

Performance

Refactor FPSCounter to not use scheduled tasks (#19374 by @peppy)

Fixes an edge case where the fps counter would add undue overhead while being displayed for a longer period.

Fix calls to GetWorkingBeatmap invalidating cache too often (#19371 by @peppy)

We found out that song select wasn't caching beatmaps as much as we originaly designed it to due to a recent change. This should grealy improve performance at song select when rapidly changing between beatmaps.

Reliability

  • Add error logging for background processing failures (#19324 by @peppy)
  • Fix OsuSliderBar throwing on negative draw width (#19345 by @frenzibyte)
  • Avoid potential realm fetch after disposal in StatisticsPanel (#19393 by @peppy)

Song Select

Fix star ratings which are still being calculated showing as "-1" at song select (#19373 by @peppy)

osu! 2022-07-25 at 06 48 38

Smaller changes

  • Maintain sort stability by using carousel item ID as a fallback (#19399 by @frenzibyte)

Testing

  • Fix background beatmap processor resetting star ratings in tests (#19312 by @frenzibyte)
  • Disable timeline test for now (#19368 by @smoogipoo)
  • Fix intermittent timeline zoom test failures (#19377 by @frenzibyte)
  • Avoid leaving left-over files after test run completes (#19392 by @peppy)
  • Don't show audio playback issue notification if debugger is attached (#19402 by @peppy)
    • I've hit this countless times recently when debugging during the startup procedure.
  • Fix potential test failure if scores are added to the beatmap which is subsequently removed (#19411 by @peppy)
  • Add realm refresh calls to fix intermittent test failures on new update tests (#19432 by @peppy)
  • Reduce calls to LoadTrack by implicitly running on test/dummy classes (#19441 by @peppy)
  • Fix intermittent HUD tests (#19443 by @smoogipoo)
  • Fix potential test failures due to Setup/SetUpSteps ordering (#19453 by @smoogipoo)
  • Move spectator begin/end playing to SubmittingPlayer (#19442 by @smoogipoo)
  • Add constrained assertions (ppy/osu-framework#5323 by @smoogipoo)
  • Ensure realm is in a good state before asserts in TestSceneFilterControl (#19454 by @peppy)
  • Fix potential nullref in TestSceneAutoplay check steps method (#19469 by @frenzibyte)

UI

Implement mod preset panels for mod select overlay (#19287 by @bdach)

This is the start of a series of pulls whose end goal is to add a mod preset column to the mod select overlay, as foreshadowed by the designs on figma.

Not available in game yet, but a taste of what's coming soon.

2022-07-21.23-32-03.mp4

Add ability to copy URLs by right-clicking external link button (#19375 by @novialriptide)

Add Toast notification to when copying a URL (#19410 by @novialriptide)

image

Smaller changes

  • Implement basic appearance of mod preset column (#19349 by @bdach)
  • Update more places to support displaying unprocessed PP placeholder (#19372 by @frenzibyte)
  • Always allow selecting the top-most button in popups using the select binding (#19400 by @peppy)
    • Defaulting to the "OK" type still seems correct, but let's allow selecting the top-most failing that.

UX

Add confirmation dialog when about to discard a playlist (#19455 by @peppy)

The confirmation will only show if items have been added to the playlist.

osu.2022-07-30.at.18.06.33.mp4

Add low battery warning for desktop platforms (#19471 by @Susko3)

Was already present on mobile, but now also shows for desktop users at 25% or lower battery charge.

New Contributors

Full Changelog: 2022.723.0...2022.731.1

9130da3
Compare
Choose a tag to compare

Thanks for following along! This is a tagged release (2022.723.0). For more information check out the osu! changelog page and dev blog.

Code Quality

  • Use more correct json casing in APIScoresCollection (#19226 by @peppy)
  • Remove nullable disable annotation in the mods. (#19235 by @andy840119)
  • Change carousel terminology to not use Children / InternalChildren (#19268 by @peppy)
  • Cleanup pass on FPSCounter (#19279 by @peppy)
    • This class got a bit messy over multiple iterations. Also rate limits the sprite text updates to reduce any potential performance overhead.

Database

Add background beatmap processing (#19272 by @peppy)

A stepping stone towards better storage/processing of star ratings locally. The focus here is on the invalidation flow when difficulty algorithm changes occur, so I didn't put too much thought into the BeatmapInfo / realm storage of the star rating.

This will nuke all local beatmaps' difficulties once. Seems like a good move to get everything in a consistent state. This will also handle legacy issues like "length" not being calculated, for users with very old databases.

I haven't tested with a large database yet, so feedback on how well this works is appreciated! There's no visible progress just yet, so if you notice nothing, that's probably a good thing. Note that it will automatically pause during gameplay.

Editor

Fix editor clap/finish buttons being ordered against expectations (#19236 by @peppy)

Weirdly was not brought to our attention until now!

Fix slider velocity not using previous value if slider is not adjacent (#19239 by @peppy)

Before:

osu.2022-07-19.at.13.55.16.mp4

After:

osu.2022-07-19.at.13.53.27.mp4

Dsplay toasts on beatmap/skin save (#19243 by @LukynkaCZE)

Adds missing visual feedback when saving.

Beatmap.Editor.mp4

Smaller changes

  • Fix editor timeline zoom rate being too slow for longer beatmaps (#19278 by @Cwazywierdo)
  • Fix timeline alt+scroll zoom not correctly zooming to current mouse position (#19294 by @peppy)
  • Fix timeline zoom focus point when using zoom buttons (#19296 by @smoogipoo)

Framework

Gameplay

Fix failed replays showing higher score than they should (#19263 by @frenzibyte)

Gameplay (osu!)

Adjust default follow circle animations to feel nicer (#19128 by @peppy)

Before:

osu.Game.Rulesets.Osu.Tests.2022-07-15.at.08.31.17.mp4

After:

osu.Game.Rulesets.Osu.Tests.2022-07-15.at.08.30.44.mp4

Smaller changes

  • Remove non-overlapping velocity buff from aim difficulty (#19004 by @apollo-dw)

Gameplay (osu!taiko)

Add basic touch support for osu!taiko (#17200 by @hongaaronc)

This is a first pass implementation of touch support for osu!taiko. Eventually we plan to give the user a lot more control over touch input customisation, but hopefully this will suffice until that point.

Please give it a go and shoot any feedback you have!

FullSizeRender.MOV

Performance point balance changes (#19181 by @Lawtrohux)

Changes included are:

  • Nerf the Hidden global multiplier to increase the gap between EZHD and HD only scores.
  • Addition of an EZ global multiplier nerf, as well as a difficulty PP nerf.
  • Decrease the miss penalty, as combo scaling is not present in taiko.
  • Increase the weight Accuracy has on Difficulty PP.
  • Lower Accuracy and great hit window scaling, and split out length-bonus to allow for a new slight HDFL bonus to accuracy scaled by length.
  • Removal of the NF multiplier to prevent sandbagging against the <50% end-fail mechanic

Replicate osu!(stable)'s hit target position with "Classic" mod (#17622 by @frenzibyte)

Mods

Remove score multiplier on difficulty-increasing mods with customised settings (#19208 by @frenzibyte)

This is a first step in balancing the recently exposed leaderboards. It will allow us to fix cases of users applying DT with a rate of 1.01x and still getting the full multiplier, as one example.

We'll continue to iterate on this (and address other mods like "Relax").

Multiplayer

Fix editing a queued beatmap sometimes opening to the wrong selection (#19234 by @Cwazywierdo)

Smaller changes

Overlays

Highlight perfect slider tick/end values in beatmap info leaderboards (#19244 by @frenzibyte)

Replacing the existing maximum count display and moves that to a tooltip that displays when hovering over the statistic.

CleanShot.2022-07-20.at.00.42.49.mp4

Smaller changes

Performance

Reduce Bindable allocations in hitobject classes via lazy initialisation (#19225 by @frenzibyte)

Offers a roughly 50% improvement in performance and memory usage when creating osu! hit objects. Should be most noticeable in batch difficulty calculation.

Platform

Reliability

Results

Add additional SFX to the results screen (#19300 by @nekodex)

Adds panel appearance and transition sounds, score rolling/ticking effects and additionally some dynamic panning to make the results screen a bit more interesting.

Dynamic panning also affecting the AccuracyCircle / ranking SFX was a side-effect of implementation, but it feels kinda cool so I left it in?

results-screen-2.mov

Song Select

Show update button in beatmap carousel when beatmaps have online changes (#19230 by @peppy)

Comes with a few caveats:

  • Currently only shows when there are actual .osu file changes (feature parity with stable). Eventually we'd want to show this for any changes (ie. if only the background has changed), but doing so requires a beatmap set level hash. I have a forward plan for making this happen, but it involves having individual file hashes stored and communicated client-server. Note that even with this limitation, it will still update all files in the beatmap (better than stable) because it's performing a full re-download.
  • Any already imported beatmaps will not have a LastOnlineUpdate set, therefore will not show available updates. At some point all beatmaps with a null value will be queried in the background to resolve this. Not a huge deal IMO.
  • New imports are using the local cached beatmap info, which means in the super rare edge case that a beatmap is unranked and changed, it may be in an incorrect state even though its realm status shows that it's consistent. I've left a note about this in BeatmapUpdater but not sure it's worth acting on, for now.
Parallels.Desktop.2022-07-19.at.09.18.36.mp4

Add ability to sort and filter by ranked date (#19233 by @peppy)

For this to work, the game will need to perform some background data fetching. It might take some seconds or minutes depending on the size of your library.

Smaller changes

Testing

  • Fix changelog overlay tests failing due to missing CreatedAt date (#19265 by @frenzibyte)
  • Fix UpdateBeatmapSetButton intermittent test failure (#19269 by @peppy)
  • Fix one more case of referencing old mod select overlay in tests (#19298 by @frenzibyte)

UI

Increase responsiveness of osu! logo triangles to the beat (#19264 by @TacoGuyAT)

video pending

Add game-side FPS counter (#19250 by @peppy)

This is a first implementation to build off. Figure it's easier to get this out as a "better than what we had" then build individual pieces into it.

  • Frame time is currently displayed similar to stable (actual time between frames, not cpu time). Will probably change this to match the o!f display, but that requires more pieces to be exposed from the framework side.
  • Tooltip is very temporary. I plan to replace it with the actual FPS display expanding out to a larger size to reveal more information.
osu.2022-07-20.at.15.11.13.mp4

Smaller changes

  • Fix FPS counter not being wide enough to show large fps numbers (#19273 by @peppy)
  • Fix draw FPS being inaccurate due to using ElapsedFrameTime (#19274 by @peppy)
  • Avoid using RollingCounter in fps counter (#19277 by @peppy)

UX

Full Changelog: 2022.719.0...2022.723.0

Compare
Choose a tag to compare

Thanks for following along! This is a tagged release (2022.719.0). For more information check out the osu! changelog page and dev blog.

This is a bit of a hotfix release after the larger release a few days ago, focusing on reliability and regression fixes.

Code Quality

Database

Store user country for imported scores (#19139 by @frenzibyte)

Note that this will only apply to newly imported scores from this point forward.

Gameplay

Fix mod settings not showing on leaderboards (#19175 by @frenzibyte)

Smaller changes

  • Make "Autoplay" incompatible with "Adaptive Speed" (#19195 by @NotGumballer91)
    • Adaptive Speed essentially does nothing with Autoplay so might as well make it incompatible.
  • Fix "Perfect" mod not marking "Autopilot" as incompatible (#19200 by @tsunyoku)
  • Fix "Cinema" mod not marking "Repel" as incompatible (#19201 by @tsunyoku)

Online

Fix user profiles not showing best plays (#19192 by @tsunyoku)

Regressed with the previous build.

Smaller changes

  • Fix spectator client not correctly reconnecting after shutdown (#19187 by @peppy)

Reliability

Results

Change retry button icon to a more suiting icon (#19169 by @tsunyoku)

The previous icon was a bit misleading to look at, and can be easily mistaken for a "go back" key. The redo icon is a much clearer representation of a retry button.

image

Smaller changes

Settings

Add Touch input handler settings section (#19151 by @Susko3)

For users experiencing tablet issues (such as the cursor jumping or being hidden unexpectedly), you can now disable touch support in the settings.

Song Select

Fix audio/background not always updating when switching beatmaps (#19212 by @peppy)

UX

  • Don't show "missing background" messages to user (#19188 by @peppy)
  • Fix "Start Chat" on multiplayer/playlist chat not opening overlay (#19207 by @frenzibyte)

New Contributors

Full Changelog: 2022.716.1...2022.719.0

5b9be3e
Compare
Choose a tag to compare

Thanks for following along! This is a tagged release (2022.716.1). For more information check out the osu! changelog page and dev blog.

Code Quality

  • Remove the nullable disable annotation in the benchmark project (#19059 by @andy840119)
  • Add log output for custom storage usage (#19096 by @peppy)

Database

  • Ensure that multiple BeatmapSetInfo with same OnlineID don't cause import failures (#19121 by @peppy)

Editor

  • Fix editor playing object samples while paused after cancelling exit (#19063 by @Joehuu)
  • Fix incorrect audio track playing when switching between newly created beatmaps (#19105 by @peppy)

Gameplay

Add ability to save failed score (#18785 by @cdwcgt)

2022-07-17_03-20-29.mp4

Gameplay (osu!)

Add repel mod to the osu ruleset (#18607 by @ggliv)

repel.mp4

Add "Single Tap" mod for osu! ruleset, abstract Alternate & Single Tap into InputBlockingMod (#19089 by @tsunyoku)

Since #17781 got closed due to recent changes, decided to re-create the mod and make it compatible with the recent changes.

Fix slider follow circle animations not matching expectations on legacy skins (#19090 by @goodtrailer)

This fixes quite a few oversights:

  • Scale and fade are faster
  • Scale is outwards when tracking is interrupted
  • Sizing is fixed to match stable

Some similar changes will be applied to the default skin (probably in the next release) to make it feel better.

Smaller changes

  • Fix mod incompatibility between repel and relax (#19084 by @ggliv)
  • Fix potential crash in editor from transform time going below zero (#19132 by @peppy)
  • Change "single tap" mod acronym to not conflict with "strict tracking" (#19140 by @peppy)

Input

Improve touch input support for desktop platforms (ppy/osu-framework#5299 by @Susko3)

Add support for joysticks/gamepads on Android (ppy/osu-framework#5281 by @Susko3)

Tested on a USB Xbox 360 controller clone, everything except the guide button works (Android doesn't provide a mapping for that). For my specific controller, D-pad inputs where reported exclusively trough OnGenericMotionAxis.HatX/Axis.HatY and not in OnKeyDown/Up.

The same controller reported different Device.MotionRanges on different devices:

  • Realme 6, Android 11: the list was non-null, but was empty
  • LG G7 Fit, Android 9: the list was populated with the expected axes (including Gas and Brake)

Localisation

Online

Fix avatars not showing on local scores after replay import (#19038 by @novialriptide)

Show leaderboard scores from new data source (#19126 by @peppy)

This turns off the display of classic/legacy scores, and begins to show scores from the new "solo_scores" data source. Currently, this means that all lazer scores from the last few years will be visible, but also means that you will no longer be able to see non-lazer scores. They will eventually return when we are happy with the consistency and performance of the new storage mechanisms.

Do note that there is no guarantee that scores currently visible will remain. They may be deleted at any point. There are several concerns which are not yet addressed.

osu! 2022-07-15 at 07 28 39

Smaller changes

  • Add and consume SoloScoreInfo (#19082 by @peppy)
    • One of the final steps required to prepare lazer for displaying lazer-first scores.
  • Fix login overlay not displaying error message for disabled accounts (#19136 by @frenzibyte)

Performance

Remove flush-to-disk operation on non-Windows platforms for lower overhead (ppy/osu-framework#5305 by @frenzibyte)

Should greatly improve import performance on macOS.

Platform

Show an error message on startup when attempting to run on an unsupported version of windows (#19080 by @peppy)

A lot of sentry error reports are coming from realm / EF failures due to the host operating system being too old. Let's give the user some proper feedback rather than a silent crash and error report hitting our logging.

Parallels Desktop 2022-07-12 at 06 47 46

Prefer ~/Library/Application Support as default user storage path on macOS (ppy/osu-framework#5304 by @frenzibyte)

Only applies to fresh installs.

Smaller changes

  • Fix unsupported OS message stating Windows 8 to be supported (#19087 by @frenzibyte)
    • Noticed while reading notifications and looking at #19080. The condition was updated to show on Windows 8 as well, but the message was still stating that Windows 8 is supported.

Reliability

  • Fix crash when currently played beatmap finishes download while multiplayer spectating (#19074 by @peppy)
  • Fix waveform generation function not freeing bass stream after usage (ppy/osu-framework#5300 by @peppy)
    • Also fixes a few other things I noticed along the way.
  • Fix potential crash during shutdown sequence if intro playback was aborted (#19079 by @peppy)
  • Fix drawable mutation from disposal thread (#19104 by @peppy)
  • Fix potential crash when exiting editor test mode (#19110 by @peppy)

Settings

Add joystick settings on Android (#19131 by @Susko3)

Song Select

Add "last played" sort mode to song select (#19098 by @peppy)

Note that this will consider the most recent play of any beatmap in beatmap set groups for now, similar to other sort methods.

osu.2022-07-13.at.07.47.26.mp4

Change clicking source/tags on song select to filter instead of searching online (#19124 by @frenzibyte)

CleanShot.2022-07-15.at.06.45.41.mp4

Smaller changes

  • Update mod icon colors (#19039 by @Cwazywierdo)
    • They now match the colours on the new mod select.
  • Fix clicking search link from song select sometimes not switching search mode to "relevance" (#19129 by @peppy)

Testing

Tournament

Add support for a drawings screen video background (#19069 by @peppy)

Fix gameplay screen not updating with changes in various editors (#19101 by @peppy)

Disable tournament client "save changes" button when there's no changes to save (#19100 by @peppy)

osu.2022-07-13.at.08.43.47.mp4

Smaller changes

  • Ensure any changes are committed before changing LadderEditorSettings's target match (#19102 by @peppy)

UX

Add language selection to first run overlay (#19107 by @peppy)

osu.2022-07-13.at.14.23.56.mp4

Allow adding playlist items to beatmap collections via context menu (#19037 by @frenzibyte)

CleanShot.2022-07-15.at.03.35.56.mp4

Smaller changes

  • Fix playlist room creation screen pushing content on opening dropdowns (#19065 by @Ludio235)
  • Show basic error message when score submission fails (#19078 by @peppy)
    • Feels better to let the user know why it failed.

New Contributors

Full Changelog: 2022.709.1...2022.716.1

200f0d9
Compare
Choose a tag to compare

Thanks for following along! This is a tagged release (2022.709.1). For more information check out the osu! changelog page and dev blog.

What's Changed

  • Fix crash on mobile releases when attempting to read any file by @peppy in #19050

Full Changelog: 2022.709.0...2022.709.1

26b9352
Compare
Choose a tag to compare

Thanks for following along! This is a tagged release (2022.709.0). For more information check out the osu! changelog page and dev blog.

Code Quality

Database

Fix skins potentially being duplicated on batch import (#19029 by @peppy)

Smaller changes

  • Fix realm backup creation failing when run from RealmAccess constructor (#18997 by @peppy)
    • At the point of construction, we are not on the update thread, but it doesn't really matter at this point because there's no other usages. Bit of an ugly regression.
  • Fix intermittent realm migration test failures (#19006 by @peppy)
  • Add nested transaction handling to realm helper methods (#19027 by @peppy)

Editor

  • Fix editor saving not updating BeatmapSetInfo's hash (#19034 by @peppy)
    • This would lead to the audio track not updating correctly when switching between two newly created beatmaps at song select. Note that you will need to save any beatmaps you've created once to fix this issue.

Framework

Gameplay

Fix custom rulesets not importing scores at all (#19025 by @peppy)

Gameplay (osu!)

  • Fix default spinner's accent colur not resetting after rewind (#19007 by @goodtrailer)
    • Rewinding from a point after the spinner's end to a point between the spinner's completion and its end should show a gold color, but instead it's blue, making it look like the spinner hasn't been completed yet.
  • Fix random mod generating off-screen sliders (#18596 by @hlysine)

Logging

  • Remove noisy MIDI handler log output (ppy/osu-framework#5293 by @peppy)
    • MIDI devices generally send traffic such as clock sync data, which we don't care about. For me, if I have my midi controller connected this creates a flow of 2-3 logger messages per second.

Online

Add MetadataClient to handle online metadata changes (#19009 by @peppy)

This new component will handle real-time flow of updates to beatmap metadata from the server. It's just a first piece of the puzzle and won't trigger updates yet, but we're getting it deployed for further testing. Expect to see more related changes in upcoming releases!

Smaller changes

  • Simplify error output when hub cannot connect (#19030 by @peppy)

Performance

Reduce Scheduler overhead when no tasks are pending (ppy/osu-framework#5295 by @peppy)

Should help overall game performance quite substantially.

Run audio operations aynchronously to reduce game stutters (#19026 by @peppy)

This should decrease visible stutters when doing things like switching beatmaps rapidly.

Fix background loading excessively on startup (#19032 by @peppy)

Noticed that in a normal startup the background can change between three and six times depending on screen scaling, seasonal beatmaps and game settings. This reduces that count to 1-2 times (1 base, 1 on successful seasonal load).

This also resolves the weirdness when using screen scaling modes by forcing all intros to have an opaque background.

Fix BeatSyncedContainer unintentionally blocking on beatmap load (#19015 by @peppy)

This would cause large stutters at song select while the game waited for the beatmap to load. We generally had it loading in the background, but this component was accidentally waiting on it incorrectly.

Song Select

  • Fix personal best score showing delete option on context menu (#18993 by @Joehuu)
  • Fix song select placeholder not showing convert hint for custom rulesets (#19023 by @peppy)

Testing

Tooling

UX

  • Allow searching for "skins" to find current skin setting (#19028 by @peppy)
  • Allow MIDI and joysticks to trigger the osu! cookie on the initial screen (#19005 by @Susko3)
    • Makes sense as all keyboard keys currently trigger it.
      Will hopefully aid in visibility that such input methods natively work in osu! (without having to dig into settings).
  • Add forgotten password link to login form (#19010 by @peppy)
  • Add local handling of cases where a beatmap's file cannot be found on disk (#19022 by @peppy)
    • Better error messaging.

Full Changelog: 2022.704.0...2022.709.0

50a5462
Compare
Choose a tag to compare

Thanks for following along! This is a tagged release (2022.704.0). For more information check out the osu! changelog page and dev blog.

Audio

Update SFX for mod select overlay show/hide (#18970 by @nekodex)

Code Quality

Database

Update beatmap statistics and difficulty after making changes in the editor (#18835 by @peppy)

Smaller changes

  • Fix PerformWrite not rolling back transaction on exception (#18951 by @peppy)
  • Ensure all async writes are completed before realm is disposed (#18874 by @peppy)
  • Add more verbose logging to realm blocking process (#18979 by @peppy)

Framework

Gameplay

Fix replays showing incorrect star difficulty on load (#18984 by @frenzibyte)

Send beatmap hash to server on solo score request (#18978 by @peppy)

Right now, the client does nothing to ensure a beatmap is in a valid state before requesting to submit a score. There is further work to be done client-side so it is more aware of this state (already handled for playlists, but not for the solo gameplay loop), but the solution I have in mind for that is a bit more involved.

This is not used server-side yet, but I want to get this sending so we can start using it for some very basic validation.

Smaller changes

Gameplay (osu!)

  • Imitate stable's slider ball fade in/out animation (#18977 by @goodtrailer)
    • Though only a minor change which is basically imperceptible for most skins, some skins actually draw the followcircle as part of the ball sprite, resulting in instantly fading followcircles. An example in a relatively popular skin is shigetora's, Seoul v10 (reddit). The effect is slight but noticeable in this case, and doesn't work the same with lazer's current slider ball fade anims.

Localisation

  • Fix profile header tab items not localising (#18803 by @Joehuu)

Multiplayer

Add room public/private filter to multiplayer lounge screen (#18821 by @ggliv)

Smaller changes

Performance

Reduce overhead of transform processing when no transforms are present in a drawable (ppy/osu-framework#5279 by @peppy)

Should help quite a bit for cases with many things on screen (like multiplayer spectator).

Reliability

Song Select

Add difficulty filter reset to song select "no results" suggestions (#18963 by @peppy)

Also now displays multiple suggestions at once.

osu.2022-07-01.at.06.30.26.mp4

Move star difficulty filter to song select (#18962 by @peppy)

A lot of people accidentally set this setting in the global settings then can't see any beatmaps. Moving it to song select is a usability priority, to the point I've taken some shortcuts to get this in sooner (before the full song select redesign). Focus is on usability, not getting the control looking great, but I think it works okay.

osu.2022-07-01.at.06.19.47.mp4

Testing

  • Fix crash on visual testing TestSceneChatOverlay due to null user (#18939 by @peppy)
  • Fix flaky song select placeholder test by changing ruleset post-display (#18941 by @peppy)
  • Attempt to fix editor navigation test failures again (#18944 by @bdach)
  • Attempt to fix flaky TestSceneAutoplay test (#18947 by @smoogipoo)
  • Ensure PlaylistItem's beatmap is not null (#18949 by @smoogipoo)
  • Fix directory cleanup occurring too early during realm tests (#18953 by @peppy)
  • Fix various multiplayer test failures due to not waiting for ongoing operation (#18955 by @peppy)
  • Fix test sometimes referencing old ModSelect object (#18966 by @smoogipoo)
  • Fix cross-pollution of server- and client-side multiplayer objects in tests (#18969 by @smoogipoo)
  • Allow disabling forced GC during test runs (ppy/osu-framework#5284 by @peppy)
  • Fix ID clash with announce and PM channels in chat overlay tests (#18982 by @peppy)
  • Fix BeatmapInfoWedge test potentially failing due to quick initial load (#18981 by @peppy)
  • Mark, document and silence remaining flaky tests on standard CI runs (#18965 by @peppy)
    • Will still continue to be monitored via teamcity (which will have the environment variable set).

UX

  • Fix dragging slider bars on nub not performing correctly relative movement (#18986 by @peppy)

Full Changelog: 2022.630.0...2022.704.0

6911b95
Compare
Choose a tag to compare

Thanks for following along! This is a tagged release (2022.630.0). For more information check out the osu! changelog page and dev blog.

Hotfix release to stop custom ruleset crashes.

Code Quality

  • Change closure elimination to hint (#18925 by @peppy)
    • Pretty noisy as a suggestion, and can fire incorrectly quite a lot (aka Schedule()).
  • Remove the nullable disable annotation in the localisation. (#18921 by @andy840119)
  • Remove the nullable disable annotations in the class belongs to the migration namespace. (#18920 by @andy840119)

Gameplay (osu!)

  • Remove difficulty spike nerf from the Flashlight skill in osu! (#18791 by @apollo-dw)
  • Change speed accuracy scaling to be closer to worst case scenario (#15035 by @emu1337)

Gameplay (osu!mania)

  • Use accuracy instead of score for mania pp calculation (#18749 by @molneya)

Platform (Android)

Reliability

Guard against ruleset icon creation failures to avoid whole game death (#18935 by @peppy)

Smaller changes

  • Fix one more case of collection modification during enumeration (#18928 by @peppy)
  • Guard against NaN star difficulty results (#18936 by @peppy)

UI

  • Fix difficulty adjust settings having more padding on sliders (#18922 by @Joehuu)

Full Changelog: 2022.628.0...2022.630.0

Compare
Choose a tag to compare

Thanks for following along! This is a tagged release (2022.628.0). For more information check out the osu! changelog page and dev blog.

Audio

Add audio feedback for rearranging list items (ppy/osu-resources#200 by @nekodex)

Smaller changes

  • [p] Add audio feedback for rearranging list items (#18818 by @nekodex)

Code Quality

  • Change always-discarded-parameter inspection to hint (#18806 by @peppy)
  • Ban usage of ManualResetEventSlim.Wait() without a timeout value (#18816 by @peppy)
  • Enable NRT on IHasCustomTooltip interface (ppy/osu-framework#5260 by @peppy)
  • Enable NRT and tidy up BeatmapDifficultyCache (#18820 by @peppy)
  • Refactor difficulty icons to not suck (#18819 by @peppy)
  • Remove unused bindable retrieval flow in BeatmapDifficultyCache (#18832 by @peppy)
  • Add messages to all InvalidOperationExceptions (#18908 by @peppy)

Database

  • Ensure WorkingBeatmap is always using a detached instance (#18833 by @peppy)
  • Fix second case of empty beatmaps being reported to sentry as errors (#18862 by @peppy)
    • Also makes logging more relevant on other failures.

Editor

Support undo/redo for control points in the Editor (#18668 by @smoogipoo)

Bit of a temporary solution just to make things work.

Smaller changes

  • Fix metronome arm being stuck white when paused 'close enough' to center (#18808 by @nekodex)

Framework

Gameplay (osu!)

Track the full size of the follow circle at all times (#18795 by @smoogipoo)

Localisation

Performance

Fix stuttering when adjusting beatmap offset with many beatmaps loaded (#18790 by @peppy)

Fix TripleBuffer sleeping too long at high frame rates (ppy/osu-framework#5267 by @peppy)

Put simply, this improves cross-thread frame synchronisation between update and draw threads. Primarily this change was to fix draw fps being lower than expected when running at "Basically Unlimited", but it should improve perceived latency across the board, especially at lower frame rates. Note that per-core CPU will be slightly higher than before (~10-20%) but only if there's enough headroom. In other words, if your CPU was already struggling then it won't be any worse with this change.

Initialise OpenTabletDriver asynchronously (ppy/osu-framework#5269 by @peppy)

It takes a long time to start this up. Now it's done on another thread so the game can continue to get ready.

Smaller changes

Platform

Reliability

Song Select

Add setting option to toggle between mod overlay hotkey styles (#18796 by @bdach)

Two styles are offered:

Sequential - pretty much what was already in place, i.e. the rows of the keyboard correspond to the first three columns, and each key in the row corresponds to each mod in the column. A small change here is that when the set of available mods changes so do the keybinds, and the keys are now fully index-based (relevant issue thread comment).

Classic - mostly matches stable 1:1 (more on this later). Mods use keybinds that are specific to them, i.e. Hard Rock will always be A no matter what. Notably, this also brings back multi mod cycling in a sense. This addresses #18417.

2022-06-21.15-34-17.mp4

Testing

  • Remove room null assertion in TestMultiplayerClient.ChangeState to avoid assert (#18815 by @peppy)
  • Remove remaining Room != null checks in TestMultiplayerClient where possible (#18817 by @peppy)
  • Add environment variable flag to cause until steps to never timeout (ppy/osu-framework#5262 by @peppy)
  • Fix dangerous File.Copy causing intermittent realm migration test failures (#18831 by @peppy)
  • Fix test deadlock due to TPL threadpool saturation (#18849 by @peppy)
  • Attempt to fix flaky PlaylistOverlay test (#18853 by @peppy)
  • Attempt to fix flaky EditorNavigation test (#18854 by @peppy)
  • Fix chat tests failing 1/10000 runs (#18865 by @peppy)
  • Fix TestStoryboardSkipOutro occasionally failing due to strict timings (#18866 by @peppy)
  • Fix occasional failure in realm test proceedings due to incorrect Debug.Assert (#18871 by @peppy)
  • Centralise and harden editor-ready-for-use check (#18864 by @peppy)
  • Add logging for various cases of SongSelect.FinaliseSelection being aborted (#18875 by @peppy)
  • Add various logging of global WorkingBeatmap state changes (#18872 by @peppy)
  • Wait for and dismiss notification in editor navigation test (#18910 by @bdach)
  • Add logging around current channel changes and join requests (#18913 by @peppy)
  • Increase leniences on TestSceneSpectatorPlayback.TestWithSendFailure (#18914 by @peppy)
  • Apply various refactorings to TestSceneSliderSnaking (#18915 by @peppy)
  • Fix more chat test failures (#18916 by @peppy)

Tooling

UI

Added subheadings to maintenance section in settings (#18802 by @Supersonicboss1)

Previously, the maintenance section was just one big block of buttons, seemingly ordered in no meaningful way.
This separates each 'category' into its own subheading to improve the general feel of that section, even though it's not generally used.

osu_2022-06-21_23-48-08

UX

Adjust menu cursor rotation to use a floating centre-point (#18841 by @peppy)

Been bugging me for a while. Adjusted snappiness of animations and fixed centre point being stuck at original mouse down location.

Fix clicks sometimes not being handled due to being caught incorrectly as double-clicks (ppy/osu-framework#5268 by @frenzibyte)

Regression in recent builds.

Smaller changes

  • Add back online view container to chat overlay (#18804 by @Joehuu)
    • The redesign didn't put back the online view container, causing chat to look like you're online until you try to type something.

Full Changelog: 2022.621.0...2022.628.0

26541ad
Compare
Choose a tag to compare

Thanks for following along! This is a tagged release (2022.621.0). For more information check out the osu! changelog page and dev blog.

Code Quality

  • More clean-up work on realm/beatmap import flow (#18712 by @peppy)
  • More model importer clean-ups (delete BeatmapModelManager) (#18733 by @peppy)
  • Remove RealmArchiveModelManager from hierarchy (#18734 by @peppy)
  • Remove one more RealmArchiveModelImporter Import method (#18776 by @peppy)
  • Remove null default value in ImportSkinTest helper method (#18778 by @bdach)
  • Remove necessity to provide BeatmapDifficultyCache as a function to ScoreManager (#18779 by @peppy)
  • Rename importer PostImport to PresentImport and add proper PostImport (#18780 by @peppy)

Database

  • Fix database migration potentially hard crashing during backup process without informing the user why (#18731 by @peppy)
  • Silence exception and provide more log output when import fails due to empty .osu files (#18777 by @peppy)

Difficulty Calculation

Rework double-tap detection in osu!'s "Speed" evaluator (#18692 by @apollo-dw)

Addresses pp awarded by maps such as this one being far too high.

Desmos link for the maths: https://www.desmos.com/calculator/vr8nzfqo4b

Rankings for this proposal: https://pp.huismetbenen.nl/rankings/players/apollo2

This proposal rebalances the state of doubletappable doubles, punishing them more accurately for how easily cheesable they are. This is done by calculating the time to press the current and next object, as well as comparing the intervals to the 300 hitwindow.

This takes advantage of the fact we can access the next object to work out the "doubletapness" of the current object, can refer to the code / desmos since it pretty much speaks for itself... also switches strain decay to take in StrainTime instead of DeltaTime. Results here appear to be a lot better IMO than the previous iteration on quite a few notable maps with cheesable doubles / 2B.

Editor

Fix new hitobject placements not taking on the existing sample settings (#18754 by @peppy)

Similar to velocity / difficulty points, a user expectation is that volume and sample settings will be transferred to newly placed objects from the most recent one.

Fix adjusting offset via button seeking to timing point's offset unexpectedly (#18762 by @peppy)

This was added with the intention of tracking the offset when already at the start (the most common case when you're using the tap timing wizard), but was also seeking when the user may be much further beyond or before it.

New audio feedback for metronome (#18744 by @nekodex)

Now with a unique tick sound, different for downbeats. Also a nice click when locking into the stopped position.

Smaller changes

  • Cancel previous metronome sound playback on pause (#18752 by @frenzibyte)
    • There is still mistimed sound playback when pausing/resuming rapidly, but that's pending further discussion.
  • Avoid filename issues by using specific names for audio and background files (#18703 by @frenzibyte)
    • To avoid issues with unicode text and what not, background and audio tracks now get automatically renamed to bg.xyz/audio.xyz. This also matches stable editor behaviour (for the audio track at least).
  • Always use beatmap ruleset in editor gameplay test mode (#18771 by @bdach)
  • Fix metronome playing mistimed beat sounds on editor clock resume (#18753 by @frenzibyte)

Input

Fix toolbar music button handling keys while not hovered (#18737 by @frenzibyte)

This was a regression in the last release, causing volume to be adjusted during gameplay when using arrow keys. Sorry about that!

Fix skin editor scene selection buttons not working (#18761 by @frenzibyte)

This was another oops in the last release. All fixed.

Localisation

Multiplayer

  • Block multiplayer operations until beatmap selection completes (#18708 by @smoogipoo)

Platform

Fix crash on android when pressing multiple mouse buttons at once (ppy/osu-framework#5252 by @peppy)

Add mouse input settings for android and iOS (#16464 by @Susko3)

Add ability to handle osu:// scheme links via IPC on desktop (#18786 by @bdach)

Worked until now when the game wasn't open, but this also allows clicking external links while the game is already running.

Note that further association work is reuired to make this work on windows still.

Reliability

  • Add several protections when creating game-global available mods (#18715 by @bdach)
  • Fix unsafe sample playback in GameplaySampleTriggerSource (#18728 by @peppy)
  • Fix Disclaimer screen handling user change events after initial display (#18726 by @peppy)
  • Fix skin editor crash if dragging a selection while exiting (#18747 by @ggliv)

Spectator

Reset spectator speed after the last frame is reached (#18768 by @smoogipoo)

Now if spectator mode is set to playback gameplay at over 1x, it will reset to 1x on catching up to the user's play.

Tooling

Tournament

Improve tournament player JSON storage using lightweight model (#18750 by @frenzibyte)

This is a first step towards improving the overall size of brackets JSON file on larger tournaments, as requested in #18681.

On a tournament with only 8 teams in which each team consists of 3 players, this lowers the overall size of the brackets JSON file from 75.4KB down to 8KB, i.e. 90% off.

Improve tournament beatmap JSON storage using lightweight model (#18751 by @frenzibyte)

On a tournament with one round beatmap and one seeding beatmap, this lowers the overall size from 20KB down to 4KB (~80% off).

UI

Replace flag assets with twemoji-derived ones matching web (ppy/osu-resources#197 by @bdach)

Smaller changes

  • Update flag sizes after switch to twemoji assets (#18720 by @bdach)

UX

Silence important notifications during first-run setup (#18695 by @frenzibyte)

Previously the first run overlay could be rudely dismissed by a notification arriving. Now notifications will be delayed until it finishes.

Fix "see you next time" getting cut off when restarting for update (#18760 by @peppy)

Now the restart-for-update flow follow a more standard game exit sequence. Note that this means a confirmation is shown. This will only show in the future when required (ie. when a download will be interrupted), rather than on all restarts.

Smaller changes

  • Fix mouse cursor not displaying on menu elements while in latency certifier (#18736 by @frenzibyte)

Full Changelog: 2022.615.0...2022.621.0