A free-to-win rhythm game

Overview

osu!

Build status GitHub release CodeFactor dev chat

A free-to-win rhythm game. Rhythm is just a click away!

The future of osu! and the beginning of an open era! Currently known by and released under the release codename "lazer". As in sharper than cutting-edge.

Status

This project is under heavy development, but is in a stable state. Users are encouraged to try it out and keep it installed alongside the stable osu! client. It will continue to evolve to the point of eventually replacing the existing stable client as an update.

IMPORTANT: Gameplay mechanics (and other features which you may have come to know and love) are in a constant state of flux. Game balance and final quality-of-life passes come at the end of development, preceded by experimentation and changes which may potentially reduce playability or usability. This is done in order to allow us to move forward as developers and designers more efficiently. If this offends you, please consider sticking to the stable releases of osu! (found on the website). We are not yet open to heated discussion over game mechanics and will not be using github as a forum for such discussions just yet.

We are accepting bug reports (please report with as much detail as possible and follow the existing issue templates). Feature requests are also welcome, but understand that our focus is on completing the game to feature parity before adding new features. A few resources are available as starting points to getting involved and understanding the project:

  • Detailed release changelogs are available on the official osu! site.
  • You can learn more about our approach to project management.
  • Read peppy's blog post exploring where the project is currently and the roadmap going forward.

Running osu!

If you are looking to install or test osu! without setting up a development environment, you can consume our binary releases. Handy links below will download the latest version for your operating system of choice:

Latest build:

Windows 8.1+ (x64) macOS 10.15+ Linux (x64) iOS 10+ Android 5+
  • The iOS testflight link may fill up (Apple has a hard limit of 10,000 users). We reset it occasionally when this happens. Please do not ask about this. Check back regularly for link resets or follow peppy on twitter for announcements of link resets.

If your platform is not listed above, there is still a chance you can manually build it by following the instructions below.

Developing a custom ruleset

osu! is designed to have extensible modular gameplay modes, called "rulesets". Building one of these allows a developer to harness the power of osu! for their own game style. To get started working on a ruleset, we have some templates available here.

You can see some examples of custom rulesets by visiting the custom ruleset directory.

Developing osu!

Please make sure you have the following prerequisites:

  • A desktop platform with the .NET 6.0 SDK installed.
  • When developing with mobile, Xamarin is required, which is shipped together with Visual Studio or Visual Studio for Mac.
  • When working with the codebase, we recommend using an IDE with intelligent code completion and syntax highlighting, such as the latest version of Visual Studio, JetBrains Rider or Visual Studio Code.
  • When running on Linux, please have a system-wide FFmpeg installation available to support video decoding.

Downloading the source code

Clone the repository:

git clone https://github.com/ppy/osu
cd osu

To update the source code to the latest commit, run the following command inside the osu directory:

git pull

Building

Build configurations for the recommended IDEs (listed above) are included. You should use the provided Build/Run functionality of your IDE to get things going. When testing or building new components, it's highly encouraged you use the VisualTests project/configuration. More information on this is provided below.

  • Visual Studio / Rider users should load the project via one of the platform-specific .slnf files, rather than the main .sln. This will allow access to template run configurations.

You can also build and run osu! from the command-line with a single command:

dotnet run --project osu.Desktop

If you are not interested in debugging osu!, you can add -c Release to gain performance. In this case, you must replace Debug with Release in any commands mentioned in this document.

If the build fails, try to restore NuGet packages with dotnet restore.

Due to a historical feature gap between .NET Core and Xamarin, running dotnet CLI from the root directory will not work for most commands. This can be resolved by specifying a target .csproj or the helper project at build/Desktop.proj. Configurations have been provided to work around this issue for all supported IDEs mentioned above.

Testing with resource/framework modifications

Sometimes it may be necessary to cross-test changes in osu-resources or osu-framework. This can be achieved by running some commands as documented on the osu-resources and osu-framework wiki pages.

Code analysis

Before committing your code, please run a code formatter. This can be achieved by running dotnet format in the command line, or using the Format code command in your IDE.

We have adopted some cross-platform, compiler integrated analyzers. They can provide warnings when you are editing, building inside IDE or from command line, as-if they are provided by the compiler itself.

JetBrains ReSharper InspectCode is also used for wider rule sets. You can run it from PowerShell with .\InspectCode.ps1. Alternatively, you can install ReSharper or use Rider to get inline support in your IDE of choice.

Contributing

When it comes to contributing to the project, the two main things you can do to help out are reporting issues and submitting pull requests. Based on past experiences, we have prepared a list of contributing guidelines that should hopefully ease you into our collaboration process and answer the most frequently-asked questions.

Note that while we already have certain standards in place, nothing is set in stone. If you have an issue with the way code is structured, with any libraries we are using, or with any processes involved with contributing, please bring it up. We welcome all feedback so we can make contributing to this project as painless as possible.

For those interested, we love to reward quality contributions via bounties, paid out via PayPal or osu!supporter tags. Don't hesitate to request a bounty for your work on this project.

Licence

osu!'s code and framework are licensed under the MIT licence. Please see the licence file for more information. tl;dr you can do whatever you want as long as you include the original copyright and license notice in any copy of the software/source.

Please note that this does not cover the usage of the "osu!" or "ppy" branding in any software, resources, advertising or promotion, as this is protected by trademark law.

Please also note that game resources are covered by a separate licence. Please see the ppy/osu-resources repository for clarifications.

Comments
  • Unexpected frame stutters at regular intervals (GC related)

    Unexpected frame stutters at regular intervals (GC related)

    Describe the bug: A few times per map I encounter a stutter that makes frame time for one frame spike. The screenshot shows the issue in mania but I encounter it in every game mode. From what I saw, nothing in the logs seems to happen at the same time as the stutter.

    I can reproduce this issue with stock or custom kernel, 5.10 or 5.11, amd gpu or nvidia, built from source or using appimage.

    Screenshots or videos showing encountered issue: Screenshot from 2021-02-17 09-38-32

    osu!lazer version: 2021.212.0.r106.86faa7f465-1, reproductible with 2021.109.0-1 and anything in between, did not try anything earlier

    Logs:

    logs.zip

    type:performance platform:linux 
    opened by pinembour 81
  • Add

    Add "Freeze Frame" mod

    As discussed in #19788, this new mod ( which ive called Freeze Frame since I think it fits its function very well, which is to sort of shot a snapshot of the playfield at the beginning of each control point ( or half, double, quadruple etc.. depending on the mod settings )) provides an interesting play experience where note order is now something you have to deduce from either memory, note numbers, pattern recognition, or any other form of "static" indicator.

    With that in mind one may ask why I opted not to remove approach circles. the reason for that is simple. although they no longer denote the time left till the next note and as such aren't as reliable as they usually are they still give a vague indication of what comes first based on size, the speed at which the approach circle closes in, and help with perfectly stacked notes.

    Notable mod combinations:

    +HD : I expect this mod will mostly be played with Hidden as to reduce the amount of notes on screen and since, for those who dont want them, it offers the option to remove the approach circles, so overall a decent companion to this

    +HDFL , having limited time to pass over the notes in whatever breaks the song may offer will allow the player to have a bit of time to see whats coming for the next beat length.

    Code Quality related stuff

    I ended up opting for an enum drop down because sliders do not allow specific values to be the only ones the user can select. which is crucial here to avoid unnecessary beat length combinations that are out of sync with the song.

    a little fun test with FFTCAD :P :

    https://user-images.githubusercontent.com/74463310/190710729-25abdc4d-43e6-4a6b-b044-17931d6c797b.mov

    ruleset:osu! area:mods size/L 
    opened by mk56-spn 49
  • Multiplayer server not connecting for some Russian ISPs

    Multiplayer server not connecting for some Russian ISPs

    Type

    Game behaviour

    Bug description

    Multiplayer rooms don't load. Infinity loading (I waited for 15 mins, before bug loading took 5 - 10 seconds)

    Screenshots or videos

    https://user-images.githubusercontent.com/81818882/173930725-4f320456-6c51-4c88-8b33-8e434e77c43b.mp4

    Version

    2022.615.0-lazer

    Logs

    database.log network.log performance.log runtime.log updater.log

    type:online 
    opened by Misadov 49
  •  Linux distribution via distribution agnostic format

    Linux distribution via distribution agnostic format

    It would be nice if osu were distributed on Linux through one of the many distro agnostic formats such as Snap, Flatpak or AppImage.

    (Reposting this from https://github.com/ppy/osu-framework/issues/1650, I created the issue on the wrong repository, sorry about that.)

    platform:linux area:tooling 
    opened by lionirdeadman 48
  • Better Linux timing

    Better Linux timing

    I noticed that although I clicked at the right time (according to rhythm), the game still registers my hit as most of the time 100/50 but not miss. So it must be either the audio latency or input latency since I have a 144Hz monitor and >400fps in-game. I'm using Manjaro. The audio timing is pretty random (that I had random acc) so audio offset didn't really help much (I had a +-3 ms window personally), maybe it is due PulseAudio server not processing within the time window?

    platform:linux priority:3 
    opened by stevefan1999-personal 44
  • Move beatmap track into MusicController

    Move beatmap track into MusicController

    • [x] Depends on https://github.com/ppy/osu/pull/9788
    • [x] Depends on https://github.com/ppy/osu-framework/pull/3809
    • [x] Depends on https://github.com/ppy/osu-framework/pull/3810

    I apologise for the size of this one. It's really hard to make such a change without touching almost every file in the game, which probably spells bad news for the reach of the (now) MusicController in general.
    Going forward this can probably be fixed on a per-case basis by either passing down the track or caching it locally at overarching components, which is probably a good idea in general for component isolation. I've already done this for Player because it felt wrong to DI MusicController in GameplayClockContainer and FailAnimation.

    The idea of this PR is to define a single owner for the beatmap's track. Specifically, the track which plays the sound and which is stored as an on-going reference.
    The goal is to eventually be able to fade between tracks when changed in song select, which needs both the single owner idea and for the track to be able to be placed in the draw hierarchy - it needs to also become a DrawableTrack.

    Changes of particular note

    • "Recycling" of working beatmap tracks has been removed. It is now handled by MusicController.
    • The "transferring" of working beatmaps has been removed. Both the track and texture stores are passed to new WorkingBeatmap instances by BeatmapManager and the disposal of the track store is now also handled by the BeatmapManager.
    • The cycling of tracks once one has complete has been moved from OsuGame to MusicController.
    • MusicController has been moved to OsuGameBase. It is now loaded as part of the async procedure but before the game's Loader. I haven't fully assessed the performance impact of this since it was previously in a loadComponentSingleFile() but it doesn't seem to have a noticeable impact when loading osu! from an external USB drive with ~1000 sets.
      • Another way this can be done is to move the track handling part into its own separate component, like a "TrackController" that is DI'd in by the MusicController.

    Testing

    Beyond the automated CI tests, I've also tested a whole bunch of scenarios, including:

    • Selecting multiplayer item with no local beatmap.
    • Selecting multiplayer item with a local beatmap.
    • Completing a beatmap import with the selected playlist item.
    • All the intros.
    • Track loops in song select.
    • Track doesn't loop in main menu.
    • Track loops in match subscreen.
    • Track doesn't change when another beatmap from the same set is selected.
    • Failing in gameplay.
    • Restarting in gameplay.
    • DT/NC/WU/WD mods applying at song select.
    • DT/NC/WU/WD mods applying in gameplay.
    • DT/NC/WU/WD mods applying after map is restarted.
    • DT/NC/WU/WD mods applying in multiplayer (match subscreen and gameplay).
    • Playing preview tracks to mute audio.
    • Changing track while a preview track is playing.
    size/XL area:music-controller 
    opened by smoogipoo 43
  • Add

    Add "Alternate" mod

    Closes https://github.com/ppy/osu/issues/3773 and supersedes https://github.com/ppy/osu/pull/7953. This mod forces the player to alternate between keys for osu and taiko rulesets. It injects a keybind handler to the drawable ruleset and intercepts and reads input allowing the mod to allow or disallow certain actions.

    Considerations:

    • Key states are reset after break times as usually people tend to forget what last key they pressed causing unintended misses.
    • In taiko, big drum hits can be hit with 2 keys. I dislike the idea of a mod preventing basic gameplay mechanics such as this. However, if you hit one with 1 key, you must alternate with another key for the next drum hit.

    Possible considerations:

    • I'd like to keep the key counters as is to find out why they missed in replays or recordings.

    Issues:

    • [x] ~~In osu, sliders still judge tracking thus giving score to ticks, repeats, and ends. This may be because it listens for a button down input instead of listening to an InputAction.~~ This is intentional to allow switching between keys while tracking inside a slider.
    • [x] In taiko, strong hit objects may have not reset the input state yet causing other hit objects inside their hit window to possibly miss (as we don't know what key was last used)

    Prerequisites: #10472

    ruleset:osu!taiko ruleset:osu! area:mods size/L 
    opened by LeNitrous 43
  • Windows switches to 256 colours after second launch

    Windows switches to 256 colours after second launch

    I had some problems with osu!lazer. At the first launch everything went normal, but on the second launch, it "turned" to 256 colours, and the game was a black screen. Please help me with this! #1332 @peppy

    opened by CircularJoel 40
  • Add clicks/second counter to HUD

    Add clicks/second counter to HUD

    Addresses:

    • #19598

    https://user-images.githubusercontent.com/39100084/183229616-ecbb1c02-14f7-4961-98e6-3fe0f4df3277.mp4

    Speed and mania players can now show off how fast they can tap!

    This PR implements a ~~KPS~~ clicks/second counter as an ISkinnableDrawable component to use it with the skin editor, like the pp counter. It's a list-based implementation which means that every input is stored with a double corresponding to the time the input was made. The actual KPS value is the number of timestamps within the last supposedly 1 second (can change if rate adjust mods are applied).

    area:gameplay type:UI size/L 
    opened by ItsShamed 38
  • Game freezes (without crash) during gameplay on mobile devices

    Game freezes (without crash) during gameplay on mobile devices

    After updating to 2019.930.0, osu!lazer begins to freeze again. Just like what happened to previous issue, it could be related to Xamarin.

    Current State: Somewhat freezes in latest release (2020.215.0). Images: 51FE01C6-760B-489F-9B3C-F8DBB624C5B6 AAFB849C-156B-43AC-A353-2230B9D9DEEB

    priority:0 platform:iOS 
    opened by alexgbrn 38
  • Cursor missing when not playing a beatmap

    Cursor missing when not playing a beatmap

    Describe the bug: Cursor is missing when not Playing a beatmap. Screenshots or videos showing encountered issue: https://drive.google.com/file/d/1r1WqQtnYKRv53CGBoi1urzBSYSLEYibh/view?usp=sharing (Don't know if you can see it but my 'cursor' is hovering the osu editor menu.) osu!lazer version: 2020.327.0 Logs: session.log update_success.log runtime.log

    priority:0 framework-fix-required 
    opened by hoshi2434 37
  • Score on the profile uses different mods compared to the one on the in-game leaderboard

    Score on the profile uses different mods compared to the one on the in-game leaderboard

    opened by MVPuccino 2
  • Add

    Add "No sliding" mod for osu!

    Continuation of #20044 - there were conflicts which I couldn't handle so decided to reopen this on top of actual branch. Also fixed an oversight which made kicksliders ignore slowing setting and moved conversion code pieces to better places.

    size/L 
    opened by Feodor0090 1
  • Local scores don't get removed after editing a map, and trying to watch them causes an error

    Local scores don't get removed after editing a map, and trying to watch them causes an error

    Type

    Game behaviour

    Bug description

    Might be the same problem as #17485? Not sure, so I'll post it just in case.

    Local scores don't get removed after editing a map (in stable they do), and trying to watch them causes an error. Updating the map afterwards removes the scores from an edited difficulty.

    Screenshots or videos

    https://user-images.githubusercontent.com/47535336/211149782-9a645147-c3af-4741-97cb-1d583c36a567.mp4

    Version

    2022.1228.0

    Logs

    legacy-ipc.log network.log performance.log runtime.log updater.log database.log input.log

    area:database 
    opened by dequubi 0
  • `ChannelManager` shouldn't recursively try to initialise channels on failure

    `ChannelManager` shouldn't recursively try to initialise channels on failure

    That's pretty awkward handling. It should probably be dependant on the API's state at the very least, and/or delay the next request by few milliseconds.

    Discussed in https://github.com/ppy/osu/discussions/22042

    Originally posted by Stedoss January 6, 2023 I searched and couldn't find any reported issues relating to this, sorry if there is one! Have only just noticed this started happening.

    Issue

    Crash to desktop.

    After logging in and logging out again (seems to be when you do it somewhat quickly), hundreds of requests get queued up and eventually crash the application (I believe the problem request being ListChannelsRequest). Seems to be a recursive issue since the request's fail handler calls the function it's in, but haven't dug into this one too much (sorry!).

    Reproduction steps

    1. Log in
    2. Quickly log out (doesn't happen every time, seems to have a certain timing to it)
    3. Game freezes and eventually crashes to desktop

    Video

    https://user-images.githubusercontent.com/29103029/210914422-279ee346-9b99-4095-afcc-0c895b229453.mp4

    Logs

    runtime.log updater.log input.log network.log performance.log

    Relevant logs

    runtime.log

    2023-01-06 01:51:51 [verbose]: Current channel changed to #osu
    2023-01-06 01:51:51 [error]: Fetching channel list failed
    2023-01-06 01:51:51 [error]: System.Net.WebException: Request failed from flush operation (state Offline)
    2023-01-06 01:51:51 [error]: Fetching channel list failed
    2023-01-06 01:51:51 [error]: System.Net.WebException: User not logged in
    2023-01-06 01:51:51 [error]: Fetching channel list failed
    2023-01-06 01:51:51 [error]: System.Net.WebException: User not logged in
    2023-01-06 01:51:51 [error]: Fetching channel list failed
    2023-01-06 01:51:51 [error]: System.Net.WebException: User not logged in
    2023-01-06 01:51:51 [error]: Fetching channel list failed
    2023-01-06 01:51:51 [error]: System.Net.WebException: User not logged in
    2023-01-06 01:51:51 [error]: Fetching channel list failed
    2023-01-06 01:51:51 [error]: System.Net.WebException: User not logged in
    2023-01-06 01:51:51 [error]: Fetching channel list failed
    2023-01-06 01:51:51 [error]: System.Net.WebException: User not logged in
    2023-01-06 01:51:51 [error]: Fetching channel list failed
    ...
    

    network.log

    2023-01-06 01:51:51 [verbose]: WebSocketNotificationsClientConnector connected!
    2023-01-06 01:51:51 [verbose]: Performing request osu.Game.Online.API.Requests.GetUpdatesRequest
    2023-01-06 01:51:51 [verbose]: Request to https://lazer.ppy.sh/api/v2/chat/updates successfully completed!
    2023-01-06 01:51:51 [verbose]: osu.Game.Online.API.Requests.GetUpdatesRequest finished with response size of 3,656 bytes
    2023-01-06 01:51:51 [verbose]: Failing request osu.Game.Online.API.Requests.GetMessagesRequest (System.Net.WebException: Request failed from flush operation (state Offline))
    2023-01-06 01:51:51 [verbose]: Failing request osu.Game.Online.API.Requests.ListChannelsRequest (System.Net.WebException: Request failed from flush operation (state Offline))
    2023-01-06 01:51:51 [verbose]: Failing request osu.Game.Online.API.Requests.ListChannelsRequest (System.Net.WebException: User not logged in)
    2023-01-06 01:51:51 [verbose]: Failing request osu.Game.Online.API.Requests.ListChannelsRequest (System.Net.WebException: User not logged in)
    2023-01-06 01:51:51 [verbose]: Failing request osu.Game.Online.API.Requests.ListChannelsRequest (System.Net.WebException: User not logged in)
    2023-01-06 01:51:51 [verbose]: Failing request osu.Game.Online.API.Requests.ListChannelsRequest (System.Net.WebException: User not logged in)
    2023-01-06 01:51:51 [verbose]: Failing request osu.Game.Online.API.Requests.ListChannelsRequest (System.Net.WebException: User not logged in)
    2023-01-06 01:51:51 [verbose]: Failing request osu.Game.Online.API.Requests.ListChannelsRequest (System.Net.WebException: User not logged in)
    ...
    ```</div>
    type:online priority:1 
    opened by frenzibyte 1
  • File type assosiation and importing issues

    File type assosiation and importing issues

    Type

    Game behaviour

    Bug description

    After installing osu!lazer for the first time on a Windows 11 machine, the file type didn't associate with osu! at all, but even after trying to open the file using the "Open With" context menu option in Windows Explorer, selecting the osu executable as well. The file didn't import. The only way to import said file is it is to drag and drop it into the osu! window (shown in the screen recording).

    Screenshots or videos

    Screen Recording: https://user-images.githubusercontent.com/102518950/210865978-c6736820-10e3-433e-87cc-af4ace8438a8.mp4

    Version

    2022.1228.0-lazer

    Logs

    Taken after trying to open using Explorer and the drag and drop of the file. database.log input.log network.log performance.log runtime.log updater.log

    platform:windows 
    opened by cheeezie 1
Releases(2022.1228.0)
  • 2022.1228.0(Dec 28, 2022)

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

    Code Quality

    • Use generic Enum and CreateDelegate methods (ppy/osu-framework#5613 by @turbedi)
    • Use StringSplitOptions.TrimEntries in string.Split() when possible (ppy/osu#21809 by @turbedi)

    Online

    Fix osu.ppy.sh links no longer opening in-game (ppy/osu#21854 by @peppy)

    Addresses https://github.com/ppy/osu/discussions/21838.

    Improve reliability of solo statistics watcher (ppy/osu#21871 by @bdach)

    Results

    Fix incorrect accuracy display on overall ranking view (ppy/osu#21819 by @bdach)

    Tooling

    Fix android project not getting correct versioning information (ppy/osu#21878 by @bdach)

    Allows us to release android builds again!

    UX

    • Add keywords to ease search of "first object visibility" setting (ppy/osu#21879 by @frenzibyte)

    Full Changelog: https://github.com/ppy/osu/compare/2022.1227.0...2022.1228.0

    Source code(tar.gz)
    Source code(zip)
    install.exe(146.37 MB)
    osu.app.Apple.Silicon.zip(154.33 MB)
    osu.app.Intel.zip(156.38 MB)
    osu.AppImage(143.70 MB)
    osu.AppImage.zsync(251.67 KB)
    osulazer-2022.1207.0-delta.nupkg(894.44 KB)
    osulazer-2022.1208.0-delta.nupkg(478.99 KB)
    osulazer-2022.1227.0-delta.nupkg(6.83 MB)
    osulazer-2022.1228.0-delta.nupkg(488.16 KB)
    osulazer-2022.1228.0-full.nupkg(146.04 MB)
    RELEASES(413 bytes)
    sh.ppy.osulazer.apk(194.76 MB)
  • 2022.1227.0(Dec 27, 2022)

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

    Mobile releases will come later after some fixes. The android APK is from the previous release so new users still have something to download.

    Beatmap Listing

    Turn on featured artist filter by default and add disclaimer when toggling for the first time (ppy/osu#21646 by @peppy)

    Another step in the direction of promoting featured artist beatmaps and providing new users with better directed access to licenced content. I hope the overhead of clicking through the dialog will not be too bad once per session, but depending on feedback we can consider adding a "don't show again" or similar.

    This is a personal requirement for pushing osu! out to a new audience (aka mobile). We've made huge progress with the featured artist project and I think making it the default visibility is the right next step.

    https://user-images.githubusercontent.com/191335/207827249-90cf4328-9777-4b59-a255-ceddbb7d7e24.mp4

    Code Quality

    • Allow keeping stream open after encoding scores (ppy/osu#21627 by @smoogipoo)
    • Fix SDL error on startup caused by setting min/max size before window creation (ppy/osu-framework#5584 by @Susko3)
    • Fix wrong paths to macOS log folder in docs (ppy/osu#21667 by @bdach)
    • Remove unnecessary yield return from getSDLDisplays() and log errors (ppy/osu-framework#5602 by @Susko3)
    • Use new ArgumentNullException.ThrowIfNull throw-helper API (ppy/osu-framework#5605 by @turbedi)
    • Use new ArgumentNullException.ThrowIfNull throw-helper API (ppy/osu#21763 by @turbedi)
    • Fix parameters with the same default value inspection (ppy/osu#21792 by @Joehuu)
    • Remove obsoleted "ForDifficultyRating" method (ppy/osu#21800 by @mk56-spn)
    • Use generic Enum methods (ppy/osu#21802 by @turbedi)

    Database

    Allow imports from stable on windows to not use extra disk space (ppy/osu#21628 by @peppy)

    A common user request is to "make lazer share a beatmaps directory with stable". This finally realises that goal when both games are on the same drive, using "hard links". You can find more details about how this works at the explanatory wiki page.

    Editor

    • Fix track changes not updating initial timeline zoom correctly (ppy/osu#21766 by @frenzibyte)

    Framework

    • Fix WhitePixel texture rectangle doesn't respect provided area (ppy/osu-framework#5577 by @EVAST9919)
    • Bring Android framework to .NET 6 (ppy/osu-framework#5080 by @huoyaoyuan)
    • Update SDL2 (ppy/osu-framework#5579 by @peppy)
    • Fix one more case of using AutoGen's ffmpeg class for constants (ppy/osu-framework#5580 by @frenzibyte)
    • Guard against attempting to call OpenUrlExternally with non-http content (ppy/osu-framework#5574 by @peppy)
    • Add more logging to SDL2DesktopWindow (ppy/osu-framework#5585 by @Susko3)
    • Add bare-minimum Veldrid renderer implementation (ppy/osu-framework#5483 by @frenzibyte)
    • Fix some issues with Veldrid/Vulkan on Linux (ppy/osu-framework#5587 by @smoogipoo)
    • Fix osuTK graphics surface causing mobile platforms to crash (ppy/osu-framework#5591 by @frenzibyte)
    • Fix bypassing front-to-back not actually disabling depth test (ppy/osu-framework#5601 by @frenzibyte)
    • Avoid performing GL occlusion queries on Veldrid (ppy/osu-framework#5600 by @frenzibyte)
    • Implement Veldrid vertex buffers (ppy/osu-framework#5595 by @frenzibyte)
    • Update framework (ppy/osu#21629 by @peppy)
    • Update framework (again) and remove some no-longer required workarounds (ppy/osu#21711 by @peppy)
    • Simplify TriangleBorder shader (ppy/osu-resources#237 by @EVAST9919)
    • Don't post notifications from custom log targets (ppy/osu#21760 by @Flutterish)
    • Remove Roslyn 3.11 and update source generator to .NET 6 (ppy/osu-framework#5607 by @frenzibyte)
    • Update framework (ppy/osu#21798 by @peppy)

    Gameplay

    Retrofit lazer scoring data onto .osr files (ppy/osu#21553 by @smoogipoo)

    This retrofits a minimal subset of scoring data that is required by lazer in order to properly show scores to the end of .osr files. This leaves the files backwards compatible with osu-stable should you choose to import a lazer replay into it, and also perhaps the path for us to potentially show lazer scores in stable?

    Add argon "pro" skin (ppy/osu#21735 by @nekodex)

    Adds a new argon "pro" skin variant that inherits from "argon".

    Initially the only difference will be the new "pro" hitsounds, but this provides a home for potential "pro"-targeting skin modifications in the future.

    Smaller changes

    • Add description for lazer score version 30000001 (ppy/osu#21637 by @smoogipoo)
    • Call spectator EndPlaying() immediately after score submission (ppy/osu#21686 by @bdach)
    • Add samples for argon "pro" skin (ppy/osu-resources#235 by @nekodex)

    Gameplay (osu!)

    Don't show "great" or higher judgements when using argon "pro" skin (ppy/osu#21774 by @peppy)

    Done in the easiest-to-implement way for now. I would have liked to use MaxResult from the triggering Judgement but doing so would come with its own weirdness due to how drawable judgements are pooled. Eventually we will want to move this logic inside DrawableJudgement to allow for toggling as a setting, but that will come later.

    Gameplay (osu!catch)

    Always hide cursor in osu!catch gameplay (ppy/osu#21625 by @Mogiiii)

    Gameplay (osu!mania)

    • Fix crashes on quick-retrying when holding note in mania (ppy/osu#21751 by @bdach)

    Localisation

    • Fix parsing of ruleset configuration values being incorrect on some locales (ppy/osu#21612 by @peppy)
    • Add StringFormatMethod annotation to LocalisableString.Format (ppy/osu-framework#5586 by @Susko3)
    • Use LocalisableStrings for date and time formats (ppy/osu#21654 by @Susko3)
    • Fix some comment actions not being lowercased (ppy/osu#21707 by @Joehuu)
    • Update translations (ppy/osu-resources#236 by @peppy)

    Multiplayer

    Only show local results in multi-spectator results screen (ppy/osu#21618 by @smoogipoo)

    Was previously showing local results as if it was a non-multiplayer display.

    Online

    • Fix clients not reconnecting after a connection error (ppy/osu#21586 by @smoogipoo)
    • Store maximum statistics to spectator state (ppy/osu#21587 by @smoogipoo)
    • Add score token to BeginPlaySession() (ppy/osu#21588 by @smoogipoo)
    • Ensure score submission completion before notifying spectator server when exiting play early (ppy/osu#21753 by @bdach)
    • Add score processed callback to spectator client (ppy/osu#21738 by @bdach)
    • Add solo statistics watcher component to deliver incremental global user statistics updates (ppy/osu#21762 by @bdach)
    • Use new lazer API endpoint (ppy/osu#21810 by @peppy)

    Performance

    • Fix search container filtering too much (ppy/osu-framework#5578 by @bdach)

    Platform

    Fix android crash when using non-Gregorian calendars (ppy/osu#21583 by @Susko3)

    Fix iPad devices not rendering various circular elements (ppy/osu-framework#5610 by @frenzibyte)

    Results

    Limit SFX panning range on results screen (ppy/osu#21661 by @nekodex)

    At least one user reported that the panning effect was too intense, so it is now reduced to match other panning effects.

    Add overall ranking display to solo results screen (ppy/osu#21778 by @bdach)

    osu_2022-12-24_14-04-46

    Smaller changes

    • Only show global rankings on solo results screen when progressing from gameplay (ppy/osu#21804 by @bdach)

    Settings

    Add button to settings to show lazer upgrade guide (ppy/osu#21777 by @peppy)

    Smaller changes

    • Fix language dropdown in settings and language selector in first run dialog not syncing (ppy/osu#21746 by @peppy)
    • Fix restore default button having a minuscule hit area (ppy/osu#21737 by @bdach)

    Tooling

    • Bring iOS framework to .NET 6 (ppy/osu-framework#5582 by @frenzibyte)
    • Move away from .NET Standard (ppy/osu-framework#5583 by @frenzibyte)
    • Include missing properties to iOS templates (ppy/osu-framework#5593 by @frenzibyte)
    • Replace project references during packing templates in GH workflow (ppy/osu-framework#5594 by @frenzibyte)
    • Work around DirectX libraries blocking iOS from building (ppy/osu-framework#5592 by @frenzibyte)
    • Fix wrong path separator used in templates pack CI (ppy/osu-framework#5603 by @frenzibyte)
    • Remove no longer needed Linker.xml configurations for mobile projects (ppy/osu#21716 by @Susko3)
    • Fix iOS workflow failing to restore workloads (ppy/osu-framework#5606 by @frenzibyte)
    • Move system packages version pinning workaround to game project (ppy/osu#21812 by @frenzibyte)

    UI

    Only show song select for now at UI scale adjust first run screen (ppy/osu#21730 by @peppy)

    Having both was a bit too much. Still not happy with this but it's a bit less sensory overload. I think while it's cool being able to show nested screens like this, it needs more thought to actually be a good experience.

    Smaller changes

    • Fix buttons in setting overlay receiving input outside the visible corners (ppy/osu#21614 by @EVAST9919)
    • Fix changelog single build dates disappearing before being off screen (ppy/osu#21616 by @Joehuu)
    • Fix buttons receiving input outside the content (ppy/osu#21619 by @EVAST9919)
    • Fix welcome screen language buttons not working (ppy/osu#21718 by @bdach)
    • Fix file select popup getting stuck when switching first run screens while selecting (ppy/osu#21731 by @peppy)
    • Fix breadcrumb tab item click area not extending to background height (ppy/osu#21675 by @Joehuu)
    • Fix wiki overlay showing error message when load is cancelled (ppy/osu#21772 by @peppy)
    • Implement overall ranking display for solo results screen (ppy/osu#21776 by @bdach)
    • Link beatmap set title and artist to listing search (ppy/osu#21781 by @Joehuu)
    • Highlight "open" option on external link button context menu (ppy/osu#21807 by @Joehuu)
    • Add link to hard link explanation wiki page (ppy/osu#21811 by @peppy)

    Wiki

    • Add footnote support to Markdown container (ppy/osu-framework#5589 by @bdach)
    • Add Markdown footnote support to wiki overlay (ppy/osu#21722 by @bdach)
    • Add support for block attributes in wiki overlay (ppy/osu#21723 by @bdach)

    Full Changelog: https://github.com/ppy/osu/compare/2022.1225.1...2022.1227.0

    Source code(tar.gz)
    Source code(zip)
    install.exe(146.37 MB)
    osu.app.Apple.Silicon.zip(154.33 MB)
    osu.app.Intel.zip(156.38 MB)
    osu.AppImage(143.70 MB)
    osu.AppImage.zsync(251.67 KB)
    osulazer-2022.1205.0-delta.nupkg(2.04 MB)
    osulazer-2022.1207.0-delta.nupkg(894.44 KB)
    osulazer-2022.1208.0-delta.nupkg(478.99 KB)
    osulazer-2022.1227.0-delta.nupkg(6.83 MB)
    osulazer-2022.1227.0-full.nupkg(146.04 MB)
    RELEASES(414 bytes)
    sh.ppy.osulazer.apk(172.72 MB)
  • 2022.1208.0(Dec 8, 2022)

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

    Code Quality

    • Fix incorrect resolution of GameHost in LegacyImportManager (ppy/osu#21558 by @peppy)

    Framework

    • Update framework and resources (ppy/osu#21555 by @peppy)
    • Throw if SDL_GetNumVideoDisplays() returns an invalid number (ppy/osu-framework#5566 by @Susko3)
      • Will help with diagnosing https://github.com/ppy/osu/discussions/20481 and reporting the issue upstream.

    Gameplay (osu!)

    Fix mirroring of hit objects working incorrectly in HR/MR mods (ppy/osu#21567 by @apollo-dw)

    Performance

    Improve performance of font texture retrieval by ~60% (ppy/osu-framework#5573 by @peppy)

    UI

    Display nominated ranked beatmaps in user profile (ppy/osu#21557 by @Joehuu)

    Fix expanded beatmap cards sometimes being hidden by next profile section (ppy/osu#21556 by @peppy)

    osu! 2022-12-07 at 07 33 35

    Smaller changes

    • Fix stale keybinding in "today's tip" (ppy/osu#21564 by @Loreos7)
      • To be consistent with https://github.com/ppy/osu/pull/21203

    New Contributors

    • @Loreos7 made their first contribution in https://github.com/ppy/osu/pull/21564

    Full Changelog: https://github.com/ppy/osu/compare/2022.1207.0...2022.1208.0

    Source code(tar.gz)
    Source code(zip)
    install.exe(141.58 MB)
    osu.app.Apple.Silicon.zip(145.74 MB)
    osu.app.Intel.zip(147.78 MB)
    osu.AppImage(137.09 MB)
    osu.AppImage.zsync(240.10 KB)
    osulazer-2022.1123.0-delta.nupkg(369.15 KB)
    osulazer-2022.1205.0-delta.nupkg(2.04 MB)
    osulazer-2022.1207.0-delta.nupkg(894.44 KB)
    osulazer-2022.1208.0-delta.nupkg(478.99 KB)
    osulazer-2022.1208.0-full.nupkg(141.25 MB)
    RELEASES(413 bytes)
    sh.ppy.osulazer.apk(172.72 MB)
  • 2022.1207.0(Dec 7, 2022)

    Thanks for following along! This is a tagged hotfix release (2022.1207.0), mainly aimed to fix a critical oversight on android which caused user settings to disappear. For more information check out the osu! changelog page and dev blog.

    Audio

    • Fix preview track in beatmap listing overlay potentially leaving game track muted (ppy/osu#21520 by @frenzibyte)

    Chat

    Fix chat messages sometimes looking like they didn't send (ppy/osu#21550 by @smoogipoo)

    Code Quality

    • Remove SmoothCircularProgress component as being replaced (ppy/osu#21502 by @EVAST9919)
    • Don't use texture sampling in TriangleBorder shader (ppy/osu-resources#233 by @EVAST9919)

    Framework

    • Emit global:: prefix before type names in DI source generator (ppy/osu-framework#5565 by @bdach)
    • Add multi phase source generator test (ppy/osu-framework#5562 by @X9VoiD)
    • Fix source generator csproj wildcard (ppy/osu-framework#5572 by @goodtrailer)
    • Fix broken iOS build configurations of template projects in framework solution (ppy/osu-framework#5570 by @frenzibyte)
    • Update framework and resources (ppy/osu#21555 by @peppy)

    Gameplay

    • Fix loss of precision in ScoreProcessor.ComputeAccuracy() (ppy/osu#21517 by @smoogipoo)

    Gameplay (osu!)

    Allow random mod to flip sliders (ppy/osu#21544 by @Pasi4K5)

    Just a minor addition to the random mod. Sliders now get flipped (horizontally, but it doesn't really matter because sliders are being rotated) with a 50% chance.

    Localisation

    • Update translations (ppy/osu-resources#234 by @peppy)

    Mobile

    Fix settings being wiped on each startup (ppy/osu-framework#5571 by @bdach)

    Regressed in the previous build. Due to a stupid reason which is completely not our fault.

    Settings

    • Remove triangle effect from latency certifier buttons (ppy/osu#21551 by @peppy)

    Song Select

    Fix extended values in difficulty adjust mod being truncated to 10 on beatmap change (ppy/osu#21541 by @bdach)

    Smaller changes

    • Perform rewind with right click only if cursor didn't leave the button (ppy/osu#21523 by @Feodor0090)

    Full Changelog: https://github.com/ppy/osu/compare/2022.1205.1...2022.1207.0

    Source code(tar.gz)
    Source code(zip)
    install.exe(141.58 MB)
    osu.app.Apple.Silicon.zip(145.73 MB)
    osu.app.Intel.zip(147.78 MB)
    osu.AppImage(137.09 MB)
    osu.AppImage.zsync(240.10 KB)
    osulazer-2022.1117.0-delta.nupkg(2.36 MB)
    osulazer-2022.1123.0-delta.nupkg(369.15 KB)
    osulazer-2022.1205.0-delta.nupkg(2.04 MB)
    osulazer-2022.1207.0-delta.nupkg(894.44 KB)
    osulazer-2022.1207.0-full.nupkg(141.25 MB)
    RELEASES(414 bytes)
    sh.ppy.osulazer.apk(172.72 MB)
  • 2022.1205.0(Dec 6, 2022)

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

    Chat

    Add ability to view recently sent chat messages using up/down arrows (ppy/osu#21228 by @Terochi)

    Show mods, ruleset and unicode metadata in "now playing" chat command (ppy/osu#21420 by @cdwcgt)

    %5G%)MALQQ4%)P$M FJ %_0

    image

    Smaller changes

    • Fix chat day separator not being added on pending message resolution (ppy/osu#21349 by @peppy)
    • Fix system messages appearing out of order in chat display (ppy/osu#21463 by @peppy)

    Code Quality

    • Apply NRT to all zero-refactor cases (ppy/osu-framework#5519 by @peppy)
    • Small code quality pass on SDL2DesktopWindow (ppy/osu-framework#5522 by @Susko3)
    • Refactor and simplify text builder bounds calculation (ppy/osu-framework#5520 by @frenzibyte)
    • Fix potentially incorrect implementation of double-locking in Drawable.Scheduler retrieval (ppy/osu-framework#5533 by @peppy)
    • Refactor star "DifficultyRangeFilterControl" into generic range slider (ppy/osu#21428 by @mk56-spn)
    • Fix inconsistent body style inspection (ppy/osu-framework#5558 by @peppy)
    • Remove SmoothCircularProgress component as being replaced (ppy/osu#21502 by @EVAST9919)

    Database

    Add suffix when exporting replays with same filename to avoid overwriting (ppy/osu#21468 by @Piggey)

    Editor

    Fix sliders not correctly taking on full available length after changing curve type (ppy/osu#21268 by @peppy)

    https://user-images.githubusercontent.com/191335/205922151-04ed30a9-3f9f-4f84-b5f6-f77cbc89b805.mp4

    Fix editor not always playing hitsounds with clock offsets applied (ppy/osu#21306 by @frenzibyte)

    When returning to the editor after test play, use the original editor time rather than the point of exit (ppy/osu#21266 by @peppy)

    Matches stable. Felt weird as we had it.

    Add ability to seek between control points in editor using down/up arrows (ppy/osu#21387 by @peppy)

    Fix osu!mania editor timeline showing bright-white blueprints (ppy/osu#21477 by @peppy)

    Fix being able to place zero-length spinners (ppy/osu#21496 by @peppy)

    Don't seek to current editor location when location is close to (or before) the first object (ppy/osu#21265 by @peppy)

    https://user-images.githubusercontent.com/191335/205922244-48950807-078c-4c12-9461-aa9ece39b803.mp4

    Smaller changes

    • Create "streams" icon (ppy/osu-resources#228 by @OliBomby)
      • For future use.
    • Fix timeline potentially scrolling at extents while not dragging (ppy/osu#21293 by @frenzibyte)
    • Hide scroll speed control from effects section on rulesets which don't support it (ppy/osu#21307 by @frenzibyte)
    • Fix crash when hitting 'T' to tap timing while no timing point is selected (ppy/osu#21386 by @peppy)
    • Ensure currently selected control point always scroll into view (ppy/osu#21434 by @jai-x)
    • Fix incorrect culture used when parsing timeline popup textbox content (ppy/osu#21476 by @peppy)
    • Allow custom rulesets to resolve assets better in the editor (ppy/osu#21405 by @LumpBloom7)

    Framework

    • Fix incorrect nullability specific on ITrackableConfigManager (ppy/osu-framework#5527 by @peppy)
    • Fix displays sometimes not getting updated and failing assertion (ppy/osu-framework#5523 by @Susko3)
    • Cleanup LocalisationManager and related classes (ppy/osu-framework#5536 by @Susko3)
    • Refactor LocaleMapping lookup to require an exact match to FrameworkSetting.Locale (ppy/osu-framework#5537 by @Susko3)
    • Correctly return AVERROR_EOF in VideoDecoder (ppy/osu-framework#5539 by @Igoorx)
    • Implement TriangleBorder shader (ppy/osu-resources#227 by @EVAST9919)
    • Fix wrong range constrained bindable value transferal in CopyTo() (ppy/osu-framework#5542 by @bdach)
    • Move early return conditions away from CircularProgress and CircularBlob shaders (ppy/osu-framework#5544 by @EVAST9919)
    • Use fully qualified name to ensure uniqueness (ppy/osu-framework#5545 by @smoogipoo)
    • Fix incorrect source gen in edge cases of dependency injection (ppy/osu-framework#5547 by @smoogipoo)
    • Make all Drawable classes partial (ppy/osu-framework#5543 by @smoogipoo)
    • Remove dFdx/dFdy usage in TriangleBorder shader (ppy/osu-resources#229 by @EVAST9919)
    • Compute texel size in the DrawNode of TrianglesV2 component (ppy/osu#21432 by @EVAST9919)
    • Simplify resolution of dependency injection candidates (ppy/osu-framework#5548 by @smoogipoo)
    • Update dependency injection to use incremental source generation (ppy/osu-framework#5550 by @smoogipoo)
    • Improve TrianglesV2 antialiasing (ppy/osu#21446 by @EVAST9919)
    • Add missing localization in DrawableComment (ppy/osu#21450 by @Feodor0090)
    • Adjust search container logic to address game-side issues with hiding its children (ppy/osu-framework#5530 by @bdach)
    • Add Roslyn 3.11 source generator package (ppy/osu-framework#5554 by @smoogipoo)
    • Add multi target file to source generator package (ppy/osu-framework#5556 by @smoogipoo)
    • Remove texture usage in TrianglesV2 component (ppy/osu#21460 by @EVAST9919)
    • Update framework (ppy/osu#21503 by @peppy)
    • Bump dorny/test-reporter action to 1.6.0 (ppy/osu#21506 by @bdach)
    • Emit global:: prefix before type names in DI source generator (ppy/osu-framework#5565 by @bdach)
    • Add multi phase source generator test (ppy/osu-framework#5562 by @X9VoiD)

    Gameplay

    Display - symbol when tracked in-game leaderboard score is below 50 (ppy/osu#21191 by @Piggey)

    Add ability to display arbitrary beatmap information in skin layout editor (ppy/osu#21065 by @C0D3-M4513R)

    You can now add beatmap metadata or arbitrary text to your skin layouts (in both song select and gameplay)! This allows for a lot of flexibility and should be a welcome addition for streamers and advanced players that don't want to rely on third-party applications.

    https://user-images.githubusercontent.com/191335/205922368-79a1d310-b158-4ff3-a6af-8476a3b7611c.mp4

    Smaller changes

    • Standardise scores to long type (ppy/osu#21140 by @maromalo)
    • Add support for storyboards with incorrect path specifications (\\ instead of \) (ppy/osu#21356 by @peppy)
    • Update DrawableHitObject state based on entry result during LoadComplete (ppy/osu#21439 by @LumpBloom7)
    • Fix loss of precision in ScoreProcessor.ComputeAccuracy() (ppy/osu#21517 by @smoogipoo)

    Gameplay (osu!)

    Add support for non-square skinned smoke textures (ppy/osu#21343 by @goodtrailer)

    https://user-images.githubusercontent.com/191335/205921940-25aa4207-ff2c-4f35-93f4-a61b674d18db.mp4

    Gameplay (osu!catch)

    Rearrange osu!catch touch input areas for better ergonomics (ppy/osu#21224 by @honguyenminh)

    https://user-images.githubusercontent.com/191335/205922291-f0781039-290b-4168-85fd-f89bf36f23ab.mp4

    Ensure the mouse cursor is hidden when playing osu!catch with relax mod (ppy/osu#21467 by @peppy)

    https://user-images.githubusercontent.com/191335/205921755-d03bf990-62d9-408b-a58e-f2ba014b2b43.mp4

    Gameplay (osu!mania)

    Realign white line on argon hold note ends to match hit target (ppy/osu#21360 by @peppy)

    2022-12-06 22 32 39@2x

    Fix osu!mania hold notes occasionally getting in a visually incorrect hit state (ppy/osu#21371 by @peppy)

    https://user-images.githubusercontent.com/191335/205921842-aa6ac1a2-24a0-4346-bf83-28fe18334206.mp4

    Smaller changes

    • Fix some components not accounting for final hold notes in osu!mania beatmaps (ppy/osu#21479 by @peppy)

    Gameplay (osu!taiko)

    Add back "kiai" time hit animation support in taiko skins (ppy/osu#21379 by @Joppe27)

    Smaller changes

    • Add "kiai" time glow element support (ppy/osu#21459 by @Joppe27)
      • https://user-images.githubusercontent.com/56885706/204674379-a48a167c-4d57-43a6-9fbf-6df920ef78c6.mp4

    Online

    Fix entering gameplay while network connection is in a bad state taking too long (ppy/osu#21288 by @peppy)

    Stop requesting messages as part of initial chat presence (ppy/osu#21353 by @peppy)

    No longer necessary with the new websocket-based chat. Reduces network overhead and makes chat load a lot faster.

    Smaller changes

    • Fix potential incorrect connection state resulting in null reference (ppy/osu#21287 by @peppy)

    Performance

    Reduce unnecessary texture overhead incurred by beatmap listing (ppy/osu#21277 by @peppy)

    The two placeholder textures were loaded at startup, even though there's a chance they would never be used. This simplifies the content update flow and also fixes the issue.

    Reduce overhead of audio components until they actually attempt to play a sound (ppy/osu-framework#5532 by @peppy)

    Quite a large reduction in gameplay and song select allocations, should improve load times.

    Use source generator for dependency injection (ppy/osu-framework#5541 by @smoogipoo)

    Huge effort to reduce the reflection overheads of systems game-wide. This reduces allocations and CPU usage, especially during load procedures. It's huge, trust me.

    Smaller changes

    • Avoid loading overlay headers until first open (ppy/osu#21278 by @peppy)
    • Fix news post images never unloading from memory after first display (ppy/osu#21279 by @peppy)
    • Eagerly dispose of triangles intro textures to avoid holding for full length of game session (ppy/osu#21276 by @peppy)
    • Fix NowPlayingOverlay loading background texture too early (and permanently) (ppy/osu#21284 by @peppy)
    • Initialise BufferedDrawNode FBOs as late as possible (ppy/osu-framework#5525 by @smoogipoo)
    • Rewrite bar graph implementation to use more efficient quads (ppy/osu#21304 by @EVAST9919)
    • Add Bindable<T>.CopyTo and use in GetUnboundCopy implementation (ppy/osu-framework#5531 by @peppy)
    • Limit how far before the first hitobject that barlines can be generated (ppy/osu#21351 by @peppy)
      • This is intended to fix runaway cases such as https://github.com/ppy/osu/issues/21217.
    • Rework source generator to cache more (ppy/osu-framework#5560 by @smoogipoo)

    Reliability

    • Fix "perform from screen" invoking action on non-loaded screens (ppy/osu#21299 by @frenzibyte)
    • Catch and gracefully handle file/directory enumeration failures during stable import (ppy/osu#21267 by @peppy)
    • Avoid crashing when a system audio device provides a null name (ppy/osu#21352 by @peppy)
    • Don't hard crash on incorrect drawable patterns when they wouldn't affect the end user (ppy/osu-framework#5534 by @peppy)
    • Fix first-run setup overlay crashing on mobile platforms (ppy/osu#21512 by @frenzibyte)

    Results

    Hide spinner ticks / bonus from results screen when not applicable to score (ppy/osu#21350 by @peppy)

    Settings

    Add auto-advance support when binding for ruleset key bindings (ppy/osu#21270 by @peppy)

    https://user-images.githubusercontent.com/191335/205922114-7d712e4b-d301-4684-86b2-5c67ff9f3dc0.mp4

    Smaller changes

    • Move "keybindings" keyword to correct section (ppy/osu#21269 by @peppy)
    • Fix being able to bind two non-modifier keys to the same binding (ppy/osu#21292 by @peppy)
    • Fix incorrect rounding of tablet aspect ratio values (ppy/osu#21205 by @Samaoo)
    • Added "prefer original language metadata" toggle to first-run overlay (ppy/osu#21340 by @vegguid)
      • afbeelding
    • Increase maximum aspect ratio for tablet settings to 23:9 / 2.55 (ppy/osu#21346 by @peppy)

    Song Select

    Change song select to only allow volume adjusting if alt is held while scrolling (ppy/osu#21377 by @peppy)

    Smaller changes

    • Disable certain beatmap option buttons when there are no beatmaps selected (ppy/osu#21244 by @nanashi-1)
      • Screenshot from 2022-11-15 21-10-08
    • Change how leaderboard mod filter works to match web-side implementation (ppy/osu#21338 by @RATCM)
    • Avoid changing ruleset when presenting a beatmap if it can be converted (ppy/osu#21417 by @peppy)

    Testing

    • Fix beatmap options test failure due to no beatmap selected (ppy/osu#21286 by @frenzibyte)
    • Add some debugging for multiplayer test failures (ppy/osu#21290 by @smoogipoo)
    • Fix intermittent present beatmap test failures (ppy/osu#21310 by @frenzibyte)
    • Fix TestSceneTabletSettings falling off the bottom of the screen (ppy/osu#21344 by @peppy)
    • Fix broken rank graph test (ppy/osu#21366 by @bdach)
    • Add test coverage of input near end of hold note with nearby subsequent note (ppy/osu#21372 by @peppy)
    • Remove unnecessary caching in dependencies tests (ppy/osu-framework#5552 by @smoogipoo)
    • Fix flaky test conditions in TestSceneReplayDownloadButton (ppy/osu#21465 by @peppy)
    • Attempt to fix flaky TestHoldForMenuDoesWorkWhenHidden (ppy/osu#21466 by @peppy)

    UI

    Implement TrianglesV2 component (ppy/osu#21225 by @EVAST9919)

    Update most game buttons to use new outlined triangles style (ppy/osu#21403 by @peppy)

    https://user-images.githubusercontent.com/191335/205921788-352152e5-f3f6-4aef-9118-1514730118cf.mp4

    Highlight ChatLine username on hover (ppy/osu#21369 by @goodtrailer)

    https://user-images.githubusercontent.com/46171121/203213799-ca2238c7-e8ac-4c74-98c3-57f9fb045a7e.mp4

    Smaller changes

    • Fix triangle button flash effect looking incorrect (ppy/osu#21289 by @peppy)
    • Fix first run beatmap screen button colours looking incorrect with new triangle effect (ppy/osu#21501 by @peppy)

    UX

    Add winner of Triangles mapping competition as a bundled beatmap (ppy/osu#21215 by @jai-x)

    https://osu.ppy.sh/home/news/2022-10-06-results-triangles

    Full Changelog: https://github.com/ppy/osu/compare/2022.1129.0...2022.1205.0

    Source code(tar.gz)
    Source code(zip)
    install.exe(141.47 MB)
    osu.app.Apple.Silicon.zip(145.61 MB)
    osu.app.Intel.zip(147.65 MB)
    osu.AppImage(136.95 MB)
    osu.AppImage.zsync(239.86 KB)
    osulazer-2022.1101.0-delta.nupkg(437.11 KB)
    osulazer-2022.1117.0-delta.nupkg(2.36 MB)
    osulazer-2022.1123.0-delta.nupkg(369.15 KB)
    osulazer-2022.1205.0-delta.nupkg(2.04 MB)
    osulazer-2022.1205.0-full.nupkg(141.14 MB)
    RELEASES(414 bytes)
  • 2022.1117.0(Nov 17, 2022)

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

    Audio

    Add sound effect for disabled components (ppy/osu-resources#224 by @nekodex)

    https://user-images.githubusercontent.com/191335/202410926-b0e41f62-ba21-4919-87ab-a56afd47a092.mp4

    Smaller changes

    • Add support for 'disabled' sample variation to HoverClickSounds (ppy/osu#21097 by @nekodex)

    Beatmap Listing

    • Fix beatmap cards still potentially showing twice in listing (ppy/osu#21109 by @frenzibyte)

    Chat

    Receive chat messages in real-time (ppy/osu#20991 by @smoogipoo)

    Chat now uses the newer websocket API, allowing more efficient and faster delivery of chat messages. This also paves the path forward towards in-game notifications (that match the experience you get on the website).

    https://user-images.githubusercontent.com/191335/202410688-a5ee4b22-e9f0-43e9-ac60-2291489fddf0.mp4

    Smaller changes

    • Remove chat messages from silenced users (ppy/osu#21073 by @smoogipoo)

    Code Quality

    • Generalise HubClientConnector into SocketClientConnector (ppy/osu#20990 by @smoogipoo)
    • Clean up taiko classes in preparation for new skin implementation (ppy/osu#21074 by @peppy)
    • Remove nullable disable in the checks. (ppy/osu#21017 by @andy840119)
    • Fix FrameworkSetting.Locale not changing InputThread culture (ppy/osu-framework#5504 by @Susko3)
    • Apply nullability considerations to all skin related classes (ppy/osu#21183 by @peppy)
    • Remove triangles skin specific implementation from base osu!taiko DrawableHit (ppy/osu#21171 by @peppy)
    • Skinnable class naming pass (ppy/osu#21184 by @peppy)
    • Fix NRT causing CI failure (ppy/osu#21197 by @Susko3)
    • Move first tick tracking logic inside TickPiece (ppy/osu#21150 by @peppy)
    • Move major barline portion to default implementation to allow for further customisation (ppy/osu#21148 by @peppy)
    • Fix various issues surrounding hit judgements (ppy/osu#21151 by @peppy)
    • Remove internal access modifier from CompositeDrawable.AddInternal (ppy/osu-framework#5510 by @peppy)
    • Apply NRT to all zero-refactor cases (ppy/osu-framework#5519 by @peppy)

    Comments

    Add ability to report comments (ppy/osu#20765 by @Feodor0090)

    Editor

    Add conversion algorithm for lazer slider curves to work with stable (ppy/osu#20952 by @OliBomby)

    This code is largely ported from my Mapping Tools code base. The part about CircularArcProperties is copied from osu!framework and it would require a change to framework to make that thing public to prevent code duplication. Will be used in the future to make lazer beatmaps work better when exported to .osz format.

    Fix editor playing too many sounds when user performs a manual seek during playback (ppy/osu#21185 by @peppy)

    Add the ability to toggle off hit marker displays in the editor (ppy/osu#21173 by @peppy)

    https://user-images.githubusercontent.com/191335/202411329-1598f064-4714-454b-a63a-ab778eb36fde.mp4

    Add ability to toggle background dim in editor (ppy/osu#20907 by @cdwcgt)

    https://user-images.githubusercontent.com/191335/202410489-7c6991d2-6d48-4362-95b8-48e4b7514c29.mp4

    Smaller changes

    • Fix editor selection behaviour regressions due to new path visualiser optimisation (ppy/osu#21122 by @peppy)
    • Fix editor hard crash when beatmap file specified out-of-range timeline zoom value (ppy/osu#21147 by @peppy)
    • Fix combo colour normalisation setting not applying to editor test play (ppy/osu#21257 by @peppy)

    Framework

    • Update dependencies (ppy/osu#21115 by @peppy)
    • Implement antialiasing for CircularProgress shader (ppy/osu-framework#5465 by @EVAST9919)
    • Fix disabling UseFullGlyphHeight does not trim top part of sprite text glyphs (ppy/osu-framework#5427 by @HiddenNode)
    • Default CurrentCulture to system culture (ppy/osu-framework#5505 by @Susko3)
    • Cursor trail shader: target rounded fragment shader (ppy/osu-resources#226 by @Tom94)
    • Target rounded fragment shader (ppy/osu#21208 by @Tom94)
    • Fix possible NRE in GetAsync between DllResourceStore and ResourceStore (ppy/osu-framework#5514 by @Flutterish)
    • Fix FallbackSampleStore.GetAsync fallback logic (ppy/osu#21227 by @Susko3)
    • Fix Dropdown calling GenerateItemText before it's loaded (ppy/osu-framework#5516 by @Susko3)
    • Make IBindable : IFormattable to allow formatting its value with InvariantCulture (ppy/osu-framework#5515 by @Susko3)
    • Refactor SpriteIcon tests to allow slowly adding new icons (ppy/osu-framework#5517 by @peppy)

    Gameplay

    Fix automated skip not skipping more than once when required (ppy/osu#21093 by @peppy)

    Normalise combo colour brightness (ppy/osu#20736 by @smoogipoo)

    This aims to resolve long standing issues that people have historically had where you can get blindsighted by a beatmap having very dark combo colours. It's more important with the new "argon" skin which requires a certain amount of contrast to look good and be usable.

    https://user-images.githubusercontent.com/191335/202410102-6f46d25c-0263-4edd-bcfb-97b65ae3562c.mp4

    Smaller changes

    • Fix SkinnableSprite lookups broken in lazer-first skins (ppy/osu#21220 by @peppy)

    Gameplay (osu!)

    Add arc-shaped progress bars to "argon" spinner (ppy/osu#20793 by @frenzibyte)

    Second pass on "argon" spinner, mainly including the arc-shaped progress bars on the sides which have been pending framework-side support for the rounded caps.

    CleanShot 2022-10-17 at 08 32 46@2x

    Fix slider ticks appearing before sliders are done snaking in with Freeze Frame (ppy/osu#21235 by @mk56-spn)

    https://user-images.githubusercontent.com/191335/202411488-8fa01665-8f83-45d5-88b8-8f97c07929ad.mp4

    Smaller changes

    • Fix spinner centre size being updated every frame using transforms (ppy/osu#21095 by @peppy)
      • This led to bad looking animation (and a lot of performance overhead).

    Gameplay (osu!taiko)

    Fix taiko barlines not rendering correctly (ppy/osu#21165 by @frenzibyte)

    First pass osu!taiko "argon" skin (ppy/osu#21153 by @peppy)

    https://user-images.githubusercontent.com/191335/202411217-4e0535c1-532b-4067-ad94-dd65a985cccc.mp4

    Smaller changes

    • Difficulty Calculation: Basic tl-tapping consideration for stamina (ppy/osu#20558 by @vunyunt)
    • Fix argon and triangles swells incorrectly flashing on every hit (ppy/osu#21243 by @peppy)
    • Add basic osu!taiko "argon" swell visual (ppy/osu#21256 by @peppy)

    Performance

    Remove all usage of Add/RemoveMemoryPressure (ppy/osu-framework#5506 by @peppy)

    Especially in cases like song select, we are churning a lot of GPU memory. This will eventually be fixed, but until then it seems that making the GC aware of this usage is detrimental to performance. In some very non-scientific benchmarks, removing these calls reduced gen 2 GC run counts by around 40-50% while paginating at song select.

    Use (high resolution) waitable timers on windows when available (ppy/osu-framework#5501 by @peppy)

    Intends to fix the remaining inaccuracy that can be seen when running at frame rates close to the maximum precision provided by Thread.Sleep on windows.

    Before (Thread.Sleep): mpv_2022-11-06_15-01-51

    image

    After (WaitableTimer): mpv_2022-11-06_15-02-07

    image

    You can count the individual frames being run. In both profile runs above, the reported frame rate is 1,000, but in the first multiple frames were being coalesced into single back-to-back executions (which is basically pointless to us).

    Don't yield when game can't keep up (ppy/osu-framework#5503 by @peppy)

    This might help marginally in cases where the game is not able to keep up with the user's specified frame limiter, by removing the yield overhead (~0.2ms for me, but maybe higher on lower end hardware).

    Especially when users have "game mode" enabled, this should be beneficial with no downsides.

    Use rounded fragment shader exclusively (ppy/osu-framework#5512 by @Tom94)

    Apply pooling support to hit error metres (ppy/osu#21240 by @peppy)

    Fixes one of the remaining large sources of drawable allocation churn during gameplay.

    Settings

    Fix inaccurate tablet area dimensions when applying aspect ratio (ppy/osu#21192 by @Samaoo)

    When applying my current aspect ratio 16:9 to my tablet width 165mm, the height will be 92mm, but when you calculate it 165/(16/9)≈92.8 it's closer to 93mm. This fixes that and also moves the calculation into functions because there are multiple occurrences.

    Fix default value being wrong for 24 hour time preference (ppy/osu#21164 by @Susko3)

    Fix "reset to full area" button not always working correctly (ppy/osu#21255 by @peppy)

    Song Select

    Maintain selection of common mods when switching rulesets (ppy/osu#20758 by @frenzibyte)

    Matches stable, and generally saves the effort of checking out a mod between different rulesets without having to re-select it every time.

    https://user-images.githubusercontent.com/191335/202410237-50c97249-8098-4205-bad7-006f27acb0a9.mp4

    Storyboard

    • Fix sprites not displaying in storyboard if filename extension is missing in script (ppy/osu#21168 by @peppy)
    • Fix some issues with storyboard variables (ppy/osu#21167 by @peppy)
    • Fix incorrect handling of storyboard events with end_time before start_time (ppy/osu#21144 by @peppy)

    Testing

    • Fix velocity test failing with no audio device (ppy/osu#21094 by @smoogipoo)
    • Fix failing gameplay bindings test (ppy/osu#21207 by @bdach)
    • Load genuine font for text builder test in favour of hardcoded glyph numbers (ppy/osu-framework#5518 by @frenzibyte)

    Tooling

    • Fix Realm package downgrade issue in mobile projects (ppy/osu#21126 by @bdach)
    • Add script helpers to use local framework (ppy/osu#21134 by @peppy)
    • Change game thread prefixes to suffixes (ppy/osu-framework#5502 by @peppy)
    • Log sources of VBO flushes (aka batching interruptions) to global statistics (ppy/osu-framework#5509 by @peppy)
    • Add helper scripts for using local resources (ppy/osu#21209 by @bdach)
    • Fix tool overlays not scaling with DPI / window size (ppy/osu-framework#5511 by @peppy)
    • Display tool overlays in front on toggle (ppy/osu-framework#5513 by @peppy)

    Tournament

    • Increase the maximum seed range for tournament client (ppy/osu#21092 by @peppy)
    • Fix multiple issues with seeding screen in tournament client (ppy/osu#21154 by @peppy)

    UI

    Standardise "Visual Settings" components to fix mismatched paddings and labels (ppy/osu#21070 by @peppy)

    Add ability to click user profile badges (ppy/osu#21111 by @Joehuu)

    Adjust transition effect for main menu backgrounds (ppy/osu#21118 by @peppy)

    Reduces the amount of concurrent motion to give a better overall experience.

    https://user-images.githubusercontent.com/191335/202411109-ba7d11a5-8da0-4efb-baba-7b41566c2c25.mp4

    Make chat line timestamp adjust to 24-hour time setting (ppy/osu#21145 by @Joehuu)

    osu!_55twZe5PE5

    Improve song select transition to gameplay (ppy/osu#21112 by @peppy)

    Replaces the screen-wide scale with an animation that feels less bad.

    https://user-images.githubusercontent.com/191335/202410993-86acc29b-a41c-4613-a83a-d42a08471c66.mp4

    Update settings UI animation to better suit immediacy of sound effects (ppy/osu#21121 by @peppy)

    https://user-images.githubusercontent.com/191335/199947454-1069f331-fef3-49aa-962b-c33cef843701.mp4

    Improve triangles particle effect (ppy/osu#21242 by @EVAST9919)

    Fixed changing triangle scale may cause big problems

    Previously changing the scale was not causing AimCount to recompute, which could cause big problems when changing the scale of already drawn triangles. Example: set scale to something small, so there are thousands of triangles being drawn, then increase the scale. Now we have thousands of big triangles rendered, which causes massive performance drop.

    Fixed incorrect number of added triangles

    This is was caused by a small overlook which caused half of needed triangles being drawn on first frame which leaded to other half to be added on the second one and looked as a bias in random function.

    Improved triangles distribution on initial draw

    Smaller changes

    • Fix multiple notifications arriving for imports in edge cases (ppy/osu#21071 by @peppy)
    • Fix preposition for exclusive fullscreen prompt (ppy/osu#21135 by @CenTdemeern1)

    UX

    Improve clickable area of beatmap card icon buttons (ppy/osu#20743 by @frenzibyte)

    https://user-images.githubusercontent.com/22781491/195605751-d6109c7d-c22d-418d-9677-187851a15a9d.mp4

    Always display menu cursor when game is not focused (ppy/osu#21163 by @frenzibyte)

    Automatically close settings and notification overlays when opening main overlay (ppy/osu#21166 by @peppy)

    Change default beatmap listing key binding to Ctrl+B (ppy/osu#21203 by @peppy)

    Makes more sense as a default.

    Smaller changes

    • Fix parsing of Language when using system default language (ppy/osu#21199 by @Susko3)
    • Fix beatmap card expanded content not blocking clicks from behind (ppy/osu#21226 by @Joehuu)

    New Contributors

    • @Samaoo made their first contribution in https://github.com/ppy/osu/pull/21192

    Full Changelog: https://github.com/ppy/osu/compare/2022.1101.0...2022.1117.0

    Source code(tar.gz)
    Source code(zip)
    install.exe(141.29 MB)
    osu.app.Apple.Silicon.zip(144.53 MB)
    osu.app.Intel.zip(146.57 MB)
    osu.AppImage(135.87 MB)
    osu.AppImage.zsync(237.97 KB)
    osulazer-2022.1022.0-delta.nupkg(1.85 MB)
    osulazer-2022.1031.0-delta.nupkg(1.63 MB)
    osulazer-2022.1101.0-delta.nupkg(437.11 KB)
    osulazer-2022.1117.0-delta.nupkg(2.36 MB)
    osulazer-2022.1117.0-full.nupkg(140.96 MB)
    RELEASES(415 bytes)
    sh.ppy.osulazer.apk(172.37 MB)
  • 2022.1101.0(Nov 1, 2022)

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

    Editor

    Fix time snap of sliders not matching when SV is not 1.0x (ppy/osu#21049 by @peppy)

    Note that I'm still not decided on whether this should be re-integrated into the distance snap grid, which is why I added this back only the the required paths.

    Gameplay

    Adjust "Target Practice" and "Hold Off" mod multipliers (ppy/osu#21054 by @smoogipoo)

    Fix osu!catch argon skin not displaying correctly on mobile devices (ppy/osu-framework#5495 by @EVAST9919)

    Smaller changes

    • Fix large transform retention when adjusting accent colour of hitobject during pause (ppy/osu#21057 by @peppy)
    • Fix argon hit circle outer gradient getting smaller each state application (ppy/osu#21056 by @peppy)
    • Fix DrawableHitObject.AccentColour not being updated if object entry is not attached (ppy/osu#21059 by @peppy)
    • Rename mod "Target" to "Target Practice" (ppy/osu#21060 by @peppy)

    Reliability

    • Fix control points not being cloned when running beatmap conversion (ppy/osu#21052 by @peppy)

    Settings

    Fix notch toggle not applying correctly after restart (ppy/osu#21050 by @peppy)

    Tooling

    Refactor drawable pool statistics output to make more sense (ppy/osu-framework#5490 by @peppy)

    I was confused by the previous output, as it didn't do a great job showing the current pool usage – specifically it was not showing the current pool size in the denominator portion of the display, but the total usages. Which didn't make much sense at all.

    UI

    • Update localisations (ppy/osu-resources#223 by @peppy)
    • Fix breadcrumb display in directory selector overlapping new "show hidden" button (ppy/osu#21051 by @peppy)

    UX

    Improve messaging when ruleset load fails (ppy/osu#21045 by @peppy)

    No longer shows a very long version of the ruleset's assembly information, since this error message was supposed to be something that users can easily action on.

    Full Changelog: https://github.com/ppy/osu/compare/2022.1031.0...2022.1101.0

    Source code(tar.gz)
    Source code(zip)
    install.exe(141.10 MB)
    osu.app.Apple.Silicon.zip(144.40 MB)
    osu.app.Intel.zip(146.44 MB)
    osu.AppImage(135.66 MB)
    osu.AppImage.zsync(237.60 KB)
    osulazer-2022.1008.2-delta.nupkg(854.71 KB)
    osulazer-2022.1022.0-delta.nupkg(1.85 MB)
    osulazer-2022.1031.0-delta.nupkg(1.63 MB)
    osulazer-2022.1101.0-delta.nupkg(437.11 KB)
    osulazer-2022.1101.0-full.nupkg(140.78 MB)
    RELEASES(414 bytes)
    sh.ppy.osulazer.apk(172.16 MB)
  • 2022.1031.0(Oct 31, 2022)

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

    Code Quality

    • Rename some pieces and better document SampleBankInfo (ppy/osu#20916 by @peppy)
    • Clean up configuration related obsoleted code (ppy/osu#20980 by @peppy)
    • Clean up obsoleted tournament folder migration code (ppy/osu#20981 by @peppy)
    • Clean up various obsoleted code (ppy/osu#20982 by @peppy)
    • Clean up various obsoleted code (ppy/osu-framework#5489 by @peppy)
    • Delete unused button "CircularButton.cs" (ppy/osu#20997 by @mk56-spn)
    • Reuse function in the timeline class (ppy/osu#21018 by @andy840119)

    Editor

    Change distance snap to never account for slider velocity (ppy/osu#20850 by @peppy)

    This is a nuanced detail that hasn't worked correctly since SV was moved to per-object.

    A bit of a hard one to explain, but let's try. In osu!stable's editor, slider velocity is factored into distance spacing (so current distance spacing is distance_spacing_multiplier * slider_velocity_from_current_timing_point). Since we moved slider velocity to be attached to hit objects, in lazer it would always take the SV multiplier from the previous hitobject. In the case this was a hit circle, it would not correctly fetch the SV from the last slider.

    Rather than make it use the "last slider SV" (which could lead to further complication or confusion), I've opted to remove SV from factoring into distance spacing at all. This means that a mapper may need to manually adjust their distance spacing multiplier when changing slider velocities for a longer section of the beatmap. Maybe better for higher difficulties, but worse for lower? Will be interested to hear feedback on this one.

    https://user-images.githubusercontent.com/191335/198939558-8f81690e-cd94-49fb-b81a-33a5adab9185.mp4

    Fix slider tracks flashing black for one frame when making adjustments (ppy/osu-framework#5479 by @smoogipoo)

    Allow both distance snap and grid snap to be applied at the same time (ppy/osu#20914 by @peppy)

    Note that as per stable, this will result in non-precise distance spacing, as the grid snap is applied as an afterthought.

    Add ability to use Shift+Number to set current beat divisor in editor (ppy/osu#20903 by @peppy)

    https://user-images.githubusercontent.com/191335/198940031-037c8db0-9723-4be8-b8b8-776ed557eb97.mp4

    Add ability to clone objects in the editor (ppy/osu#20901 by @peppy)

    A bit of a low-effort implementation, but I'd like to push this out and see what kind of feedback mappers have. The implementation in stable is a bit nuanced, and may be preferred in some cases and potentially not in others.

    https://user-images.githubusercontent.com/191335/198939896-2472d2c8-0b06-4032-979d-6499c0168075.mp4

    Add momentary shortcuts to toggle grid/distance snap (ppy/osu#20828 by @peppy)

    Matching osu!stable. I use these quite a lot while mapping and I'm sure others do as well.

    Hold Shift = invert grid snap Hold Alt = invert distance snap

    https://user-images.githubusercontent.com/191335/198939483-06ef989b-acec-4aa8-ada1-560180fba7e2.mp4

    Show distance snap at current point in time (and add ability to set as usable value) (ppy/osu#20854 by @peppy)

    osu!stable shows "prev" and "next" values (based on selection), but this time i've tried showing the current instead. Again, interested in feedback. We can add back the prev/next displays if required.

    https://user-images.githubusercontent.com/191335/198939830-573b9704-187e-409c-973c-5dc90625183d.mp4

    Fix incorrect time value when distance snapping on the same position as an existing object (ppy/osu#20943 by @peppy)

    Reduce size of spinner blueprint to better represent gameplay size (ppy/osu#20967 by @peppy)

    Noticed that when selecting all objects, the spinners were hiding most of the visibility of other objects due to being much larger than they should be.

    osu Game Rulesets Osu Tests 2022-10-27 at 07 15 53

    Avoid unnecessarily refreshing SliderBodyPiece's path (ppy/osu#20966 by @peppy)

    Improves performance in the editor when many sliders are selected at once.

    Only draw path visualiser when slider is hovered, or only a single slider is selected (ppy/osu#20965 by @peppy)

    This matches stable editor behaviour.

    Now, slider path visualisations will only be shown when

    • A single slider is selected
    • A slider in a multi-selection is hovered

    This improves performance when selecting all objects by around 25% (on "My Love", update 44 / draw 22, up from update 33 / draw 18). Nothing too big but it's a starting point.

    https://user-images.githubusercontent.com/191335/198940141-1ecffcf2-5f26-4d0f-b6fa-da1ea505e1df.mp4

    Smaller changes

    • Fix placement preview not showing in timeline of osu!taiko editor (ppy/osu#20811 by @cdwcgt)
    • Fix distance spacing grid sometimes not being visually aligned with expectations (ppy/osu#20941 by @peppy)
    • Fix slider heads getting misplaced after flipping in editor (ppy/osu#20945 by @peppy)
    • Fix filenames potentially containing invalid characters on non-windows systems (ppy/osu#20948 by @nullium21)

    Framework

    Fix directory selector crashing when attempting to display a bitlocker locked drive (ppy/osu-framework#5478 by @peppy)

    Fix WaveformGraph showing mono tracks incorrectly (ppy/osu-framework#5484 by @peppy)

    Implement CircularBlob component (ppy/osu-framework#5485 by @EVAST9919)

    Used to create the dynamic osu!catch fruit lines.

    Smaller changes

    • Update framework (ppy/osu#20852 by @peppy)
    • Optimise ColourInfo conversion and add conversion helper method (ppy/osu-framework#5472 by @smoogipoo)
    • Make GLTexture disposal action not capturing (ppy/osu-framework#5480 by @smoogipoo)
    • Make CircularArcProperties public (ppy/osu-framework#5487 by @OliBomby)
    • CircularBlob shader improvements (ppy/osu-framework#5491 by @EVAST9919)
    • Fix Renderer holding a permanent reference to every texture ever created (ppy/osu-framework#5493 by @peppy)

    Gameplay

    Fix hold to pause button not working when HUD is hidden (ppy/osu#21020 by @peppy)

    Broke in the last release.

    Smaller changes

    • Add countdown ready sprite (ppy/osu-resources#221 by @LiterallyFabian)
      • Again, just adding resources, not actually implementing yet.
    • Fix SoloScoreInfo.Rank not being serialised if rank is D (ppy/osu#20968 by @peppy)
    • Fix bar hit error meter labels not clearing when setting to none (ppy/osu#20986 by @Joehuu)
    • Populate beatmap ruleset in SoloScoreInfo.ToScoreInfo() (ppy/osu#20984 by @smoogipoo)

    Gameplay (osu!)

    Add "Freeze Frame" mod (ppy/osu#20345 by @mk56-spn)

    https://user-images.githubusercontent.com/191335/198939329-8a8ec8aa-fd51-4cc8-a16e-20fe1804863f.mp4

    Gameplay (osu!catch)

    Add first pass osu!catch "argon" skin (ppy/osu#20946 by @peppy)

    Yes, this is a first pass. There's a few things I'm aware of which will be improved as we go forward:

    • Fruit can become hard to see against very bright backgrounds.
    • Hyper fruit can be hard to see when combo colour is red.
    • The catcher can be hard to see when hit lighting is not currently showing. We have a "yuzu" design coming soon.
    • Some users may want more definition in the hit box of the fruit. There will be configuration for this in the future.

    https://user-images.githubusercontent.com/191335/198000006-decb8d97-b4cd-47d3-8bfb-62f25412f082.mp4

    https://user-images.githubusercontent.com/191335/198000026-088607e7-b7b6-4517-a930-b6e62ba2e424.mp4

    Smaller changes

    • Improve osu!catch "argon" skin banana visuals and performance (ppy/osu#20993 by @peppy)

    Gameplay (osu!mania)

    Fix hold notes sometimes disappearing instantly without fade out (ppy/osu#20922 by @ekrctb)

    Gameplay (osu!taiko)

    Implement taiko hitobject kiai flashing (ppy/osu#20819 by @Joppe27)

    https://user-images.githubusercontent.com/56885706/196560488-047932c2-57e4-49c1-b0a6-afd18dbd0f03.mp4

    Fix "flashlight" mod occasionally making the whole screen black on starting gameplay (ppy/osu#20934 by @bdach)

    Smaller changes

    • Fix incorrect scroll speeds on some special beatmaps (ppy/osu#20658 by @sw1tchbl4d3r)
    • Convert slider velocity to scroll speed in taiko beatmap conversion (ppy/osu#20716 by @sw1tchbl4d3r)

    Platform

    • Downgrade AutoMapper to fix Android startup crash (ppy/osu#20872 by @Susko3)

    Settings

    Add setting to allow forcing the game to draw over notches / cameras (ppy/osu#20983 by @peppy)

    Setting will only show up when running on a device that has defined safe areas (ie. was already letterboxing prior to this change).

    https://user-images.githubusercontent.com/191335/198940217-afe8071c-bad3-4f28-86dd-9c43bef4709c.mp4

    Song Select

    Make beatmap carousel select nearest to selection when selection was filtered (ppy/osu#20912 by @LittleEndu)

    This PR changes carousel behaviour when currently selected beatmap gets filtered. Until now the new selection would be a random item, but with this change the nearest item to the previous selection will now be used.

    https://user-images.githubusercontent.com/191335/198940085-fcaa1461-17af-43ee-8e12-bc0da53c245f.mp4

    Testing

    Add test scene as environment to test changes to score algorithms (ppy/osu#20810 by @peppy)

    I've made a test scene to allow comparing different scoring algorithms, including those from stable which have not been available for comparison until now in lazer.

    https://user-images.githubusercontent.com/191335/196401226-356f36af-3ed8-46c6-8364-f96a9f106b8a.mp4

    You will need to build the test project to access this for now.

    Smaller changes

    • Fix input settings not displaying in visual test browser (ppy/osu#20842 by @frenzibyte)

    Tournament

    • Fix point conversion not using invariant culture (ppy/osu#20899 by @peppy)
    • Fix crash when exiting seeding editor while it is populating data (ppy/osu#20904 by @peppy)

    UI

    • Fix osu! logo drag area being a square (ppy/osu#20960 by @Joehuu)
    • Fix changing clock display mode in toolbar causing one frame misalignment (ppy/osu#21014 by @Joehuu)

    UX

    • Add checkbox to file selectors to show hidden files (ppy/osu#19048 by @ggliv)
    • Scroll beatmap listing to top when searching via tags/source (ppy/osu#20937 by @Joehuu)
    • Fix toggle mute (and volume meter traversal) handling repeat key presses (ppy/osu#20962 by @peppy)

    New Contributors

    • @Joppe27 made their first contribution in https://github.com/ppy/osu/pull/20819
    • @nullium21 made their first contribution in https://github.com/ppy/osu/pull/20948

    Full Changelog: https://github.com/ppy/osu/compare/2022.1022.0...2022.1031.0

    Source code(tar.gz)
    Source code(zip)
    install.exe(141.10 MB)
    osu.app.Apple.Silicon.zip(144.40 MB)
    osu.app.Intel.zip(146.44 MB)
    osu.AppImage(135.66 MB)
    osu.AppImage.zsync(237.60 KB)
    osulazer-2022.1008.0-delta.nupkg(3.01 MB)
    osulazer-2022.1008.2-delta.nupkg(854.71 KB)
    osulazer-2022.1022.0-delta.nupkg(1.85 MB)
    osulazer-2022.1031.0-delta.nupkg(1.63 MB)
    osulazer-2022.1031.0-full.nupkg(140.78 MB)
    RELEASES(415 bytes)
    sh.ppy.osulazer.apk(172.16 MB)
  • 2022.1022.0(Oct 22, 2022)

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

    Audio

    Add unique hover/select samples to settings sidebar buttons (ppy/osu#20845 by @nekodex)

    Fix adjusting volume via settings playing tick samples twice (ppy/osu#20848 by @peppy)

    Resulted in a very "scratchy" sound that was not pleasing on the ears.

    Code Quality

    • Remove leftover Enum (ppy/osu#20672 by @mk56-spn)
    • Rename updatefetch where applicable in SDL2DesktopWindow (ppy/osu-framework#5457 by @Susko3)
    • Cleanup fetchDisplayMode() (ppy/osu-framework#5456 by @Susko3)
    • Fix release configuration not building (ppy/osu-framework#5461 by @Susko3)
    • Avoid serialising some more properties of SoloScoreInfo unless present (ppy/osu#20846 by @peppy)
    • Ban char.ToLower()/char.ToUpper() as well for better safety (ppy/osu#20855 by @frenzibyte)
    • Make getClosestDisplayMode() static (ppy/osu-framework#5473 by @Susko3)

    Editor

    Fixed slider stream convert float precision edge case (ppy/osu#20650 by @OliBomby)

    Under the right circumstances a slider to stream convert would put the last circle at the start of the slider, creating an incorrect stream.

    https://user-images.githubusercontent.com/17460441/194728790-21d2c2e4-1551-4c12-b6b0-d18af25c67a0.mp4

    This is now fixed.

    Fix objects sometimes not being selected in timeline when making long selections (ppy/osu#20586 by @ekrctb)

    Improve time-based selections in osu!catch / osu!mania editor playfield (ppy/osu#20704 by @ekrctb)

    https://user-images.githubusercontent.com/191335/197349509-a1609355-d265-4d5e-ab59-4731c6653e1a.mp4

    Improve editor drag box selection logic (ppy/osu#20703 by @ekrctb)

    Should provide a better overall experience when dragging selections while using mouse wheel to adjust the current time.

    Fix some UI elements getting cut off in compact timeline mode (ppy/osu#20738 by @peppy)

    Adjust visuals of settings toolboxes (gameplay loading screen and editor) (ppy/osu#20739 by @peppy)

    These were some of the most out-of-place designs so I've updated them to roughly be in line with newer design language. The player loader screen changes kind of came as a "bonus" because of the shared logic.

    osu! 2022-10-13 at 07 37 03

    osu! 2022-10-13 at 07 38 13

    Allow arbitrary height catch editor (ppy/osu#20593 by @ekrctb)

    https://user-images.githubusercontent.com/191335/197349598-0fcfc77d-aa39-4156-92e6-6467ce0aa538.mp4

    With a tall window size, one can see more fruits at once.

    Also allow changing scrolling speed in catch editor. Scroll speed is not saved. It is purely a feature for a better visualization.

    To make this work, you will need to manually change bindings for "scroll speed increase" / "decrease" as to not conflict with editor mode changes.

    Fix some argon circle layers not getting correct colour updates in editor (ppy/osu#20825 by @peppy)

    Smaller changes

    • Fix slider ball facing incorrect direction during rewinding in editor (ppy/osu#20680 by @peppy)
    • Keep beatmap in collections even after saving changes (ppy/osu#20641 by @pfgithub)
    • Fix editor padding regression (ppy/osu#20808 by @peppy)

    Framework

    • Misc windowing changes (ppy/osu-framework#5454 by @Susko3)
    • Allow handling CustomContainerInline markdown objects for custom components (ppy/osu-framework#5455 by @frenzibyte)
    • Rewrite CircularProgress to use shader (ppy/osu-framework#5065 by @EVAST9919)
    • Include missing device vendors in tablet driver (ppy/osu-framework#5467 by @AkiSakurai)
    • Fix CircularProgress having an opaque interior drawn on FTB pass (ppy/osu-framework#5468 by @frenzibyte)
    • Harden getClosestDisplayMode() to return a valid display mode in more scenarios (ppy/osu-framework#5469 by @Susko3)
    • Make updateWindowStateAndSize() and accompanying methods stateless in regards to WindowState, CurrentDisplay and CurrentDisplayMode (ppy/osu-framework#5458 by @Susko3)
    • Ban char.ToLower()/char.ToUpper() as well for better safety (ppy/osu-framework#5474 by @frenzibyte)
    • Fix replacing items in dropdown changing selection (ppy/osu-framework#5475 by @Susko3)
    • Update framework (ppy/osu#20852 by @peppy)

    Gameplay

    Fix HUD components being interactive even when the HUD is visually hidden (ppy/osu#20681 by @peppy)

    Improve flashlight display on break periods (ppy/osu#20714 by @frenzibyte)

    https://user-images.githubusercontent.com/22781491/195116861-0080f253-1f40-4444-8386-7c37afb5b96f.mp4

    Fix legacy fallbacks not working correctly for beatmap skins (ppy/osu#20725 by @peppy)

    At some point we broke partial beatmap skin implementations being able to use classic skin resources. It is working again.

    Add "longest combo" counter to HUD components. (ppy/osu#20724 by @mk56-spn)

    https://user-images.githubusercontent.com/191335/197349553-6c17780f-8624-4fd5-9fe9-9d51eaf05a3b.mp4

    Hide menu cursor when non-mouse (e.g. keyboard) input is received (ppy/osu#20713 by @frenzibyte)

    https://user-images.githubusercontent.com/22781491/195103032-e640d024-8b9e-492c-8c66-198c494cf6ec.mp4

    Smaller changes

    • Add support for weird storyboards which have backwards events (ppy/osu#20683 by @peppy)
    • Fix hit error bar icon orientation when rotated (ppy/osu#20780 by @outfoxxed)
      • Icons now keep their original orientation when the hit error bar is flipped, instead of breaking.
    • Add countdown sprites (ppy/osu-resources#218 by @LiterallyFabian)
      • Just the resources, not completely implemented yet!
    • Fix some older beatmaps having missing backgrounds (ppy/osu#20826 by @peppy)
      • Note that this will require a re-import of beatmaps as it is baked into the database. Doesn't affect too many beatmaps luckily.

    Gameplay (osu!)

    Move "argon" skin judgement text in front of hitobjects (ppy/osu#20735 by @peppy)

    I wanted to do this from the start but thought it was going to be a PITA to make happen. Turns out it was pretty simple as we already used similar functionality for the classic skin.

    https://user-images.githubusercontent.com/191335/197349611-ea16a783-ef8a-4a5e-bec1-2bea0421d155.mp4

    Further adjust hit objects' fade to match osu!stable expectations (ppy/osu#20815 by @frenzibyte)

    https://user-images.githubusercontent.com/22781491/196539550-080bc0ce-703c-4875-832a-2b95e8acd992.mp4

    Enable slider ball tint on "classic" skin (ppy/osu#20834 by @frenzibyte)

    Remove smoke trail maximum length (ppy/osu#20827 by @goodtrailer)

    Smaller changes

    • Fix smoke being blocked with "Relax" mod enabled (ppy/osu#20665 by @frenzibyte)
    • Fix smoke shaking when gameplay is paused (ppy/osu#20756 by @goodtrailer)
    • Hide cursor smoke when "no scope" mod is enabled (ppy/osu#20767 by @frenzibyte)
    • Adjust spinner fade transitions to match stable (ppy/osu#20817 by @frenzibyte)
    • Adjust slider fade out transition to match stable (ppy/osu#20816 by @frenzibyte)

    Gameplay (osu!catch)

    Fade out classic combo counter when HUD is hidden (ppy/osu#20266 by @cdwcgt)

    Gameplay (osu!mania)

    Fix PP counter breaking on rewind due to numeric overflow (ppy/osu#20691 by @Natelytle)

    Implement hold "sliding" samples in osu!mania (ppy/osu#20708 by @peppy)

    Remove duplicated colour in osu!mania argon skin column colouring (ppy/osu#20679 by @peppy)

    There will probably be more change to colours, but let's just fix this for now. There were two of the same colour.

    Uploading 20679.mp4…

    Gameplay (osu!taiko)

    Improve accuracy of barline generation in some beatmaps (ppy/osu#20606 by @sw1tchbl4d3r)

    Fix taiko drum roll ticks sometimes overflowing outside the drum roll itself (ppy/osu#20809 by @peppy)

    Input

    Fix tablets connected on startup sometimes not working properly (ppy/osu-framework#5462 by @frenzibyte)

    Implement tablet pen/auxiliary button keybindings (ppy/osu#20771 by @AkiSakurai)

    Main Menu

    • Improve intro music timing when osu! theme music is disabled (ppy/osu#20687 by @NotGumballer91)
    • Fix incorrect delay for non-theme music on "welcome" intro (ppy/osu#20720 by @peppy)

    Multiplayer

    Add ability to remove the current item in multiplayer (ppy/osu#20763 by @smoogipoo)

    Finally!

    Overlays

    • Add support for inline country flags in wiki overlay (ppy/osu#20645 by @frenzibyte)
      • CleanShot 2022-10-08 at 21 11 46@2x
    • Add ability to delete own comments (ppy/osu#20512 by @Feodor0090)
    • Add ability to copy links to comments (ppy/osu#20754 by @Feodor0090)

    Performance

    Fix another unnecessary VBO flushing overhead in shader bind (ppy/osu-framework#5453 by @frenzibyte)

    Reduce potential stutters when updating key bindings (ppy/osu#20707 by @peppy)

    Reduce locking database overhead during import operations (ppy/osu#20712 by @peppy)

    Platform

    • Fix colour picker background not rendering correctly on mobile platforms (ppy/osu-framework#5463 by @frenzibyte)
    • Fix changing displays working only in windowed mode (ppy/osu-framework#5459 by @Susko3)
    • Fix some physical keyboards not working on Android (ppy/osu-framework#5442 by @Susko3)
    • Fix window size properties not correct on Hi-DPI screens (ppy/osu-framework#5452 by @frenzibyte)

    Playlists

    • Fix max combo missing from playlists results screen (ppy/osu#20761 by @smoogipoo)

    Reliability

    • Fix potential exception in SubmittingPlayer token retrieval on request timeout (ppy/osu#20788 by @frenzibyte)

    Settings

    Update displays dropdown with external changes (ppy/osu#20568 by @Susko3)

    Previously, it would load the displays once on startup.

    Song Select

    Fix clicking a leaderboard score at song select transitioning briefly to main menu (ppy/osu#20682 by @peppy)

    Fix beatmap update button not respecting user "prefer no video" setting (ppy/osu#20702 by @peppy)

    Request user confirmation on updating locally-modified beatmaps (ppy/osu#20729 by @frenzibyte)

    CleanShot 2022-10-13 at 02 44 56@2x

    Testing

    • Refactor borderless test for component reuse and to show more info (ppy/osu-framework#5450 by @Susko3)
    • Fix flaky update beatmap set test (ppy/osu#20753 by @bdach)
    • Add basic test coverage for flashlight mod (ppy/osu#20759 by @frenzibyte)
    • Fix fullscreen test failing if window is on non-primary display (ppy/osu-framework#5464 by @Susko3)

    UI

    • Improve transition visuals of player load sequence (ppy/osu#20740 by @peppy)
    • Fix skin toolbox component button not playing hover/click sounds (ppy/osu#20840 by @Joehuu)
    • Update translations (ppy/osu-resources#220 by @peppy)

    UX

    • Improve automatic cursor hiding logic and limit to gameplay screen (ppy/osu#20835 by @frenzibyte)
      • Avoids hiding the cursor at screens like the editor, where a user is regularly using both mouse and keyboard input at the same time.

    New Contributors

    • @Natelytle made their first contribution in https://github.com/ppy/osu/pull/20691
    • @pfgithub made their first contribution in https://github.com/ppy/osu/pull/20641
    • @AkiSakurai made their first contribution in https://github.com/ppy/osu/pull/20771
    • @outfoxxed made their first contribution in https://github.com/ppy/osu/pull/20780

    Full Changelog: https://github.com/ppy/osu/compare/2022.1008.0...2022.1022.0

    Source code(tar.gz)
    Source code(zip)
    install.exe(141.08 MB)
    osu.app.Apple.Silicon.zip(144.38 MB)
    osu.app.Intel.zip(146.42 MB)
    osu.AppImage(135.63 MB)
    osu.AppImage.zsync(237.56 KB)
    osulazer-2022.1008.0-delta.nupkg(3.01 MB)
    osulazer-2022.1008.2-delta.nupkg(854.71 KB)
    osulazer-2022.1022.0-delta.nupkg(1.85 MB)
    osulazer-2022.1022.0-full.nupkg(140.76 MB)
    osulazer-2022.923.1-delta.nupkg(1.04 MB)
    RELEASES(414 bytes)
    sh.ppy.osulazer.apk(172.15 MB)
  • 2022.1008.0(Oct 8, 2022)

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

    Code Quality

    • Cleanup bindings instantiation (ppy/osu#20472 by @o-dasher)
    • Apply NRT to GameplayLeaderboard hierarchy (ppy/osu#20486 by @peppy)
    • Apply NRT to leaderboard hierarchy (ppy/osu#20485 by @peppy)
    • Removes unnecessary setting sources specifications (ppy/osu#20509 by @o-dasher)
    • Remove unused usings in mobile projects (ppy/osu-framework#5440 by @Susko3)

    Framework

    • Expose ScrollContainer.Target (ppy/osu-framework#5434 by @peppy)
    • Fix Shader not reset to null when completely unbound (ppy/osu-framework#5437 by @frenzibyte)
    • Split out windowing and input of SDL2DesktopWindow into partial classes (ppy/osu-framework#5436 by @Susko3)
    • Fix InputHandler exceptions not being forwarded to logger (ppy/osu-framework#5441 by @Susko3)
    • Always show exclusive fullscreen as enabled on Intel platforms (ppy/osu#20506 by @smoogipoo)
    • Fix SpriteText size not immediately responding to changes in text (ppy/osu-framework#5443 by @smoogipoo)

    Gameplay

    Add toggle for solo gameplay leaderboard (ppy/osu#20488 by @nanashi-1)

    Eventually we want the leaderboard to be repositionable with more flexibility, but until then, there is now a toggle in settings to allow turning it off.

    Flush toast tray on entering gameplay (ppy/osu#20502 by @peppy)

    On entering gameplay, notifications will now be immediately hidden to avoid them getting in your way.

    I've also adjusted the delay after a no-notification section slightly because I felt it was too sudden with the recent reduction from 1 second.

    Adjust leaderboard score panels sizing based on accuracy/combo width (ppy/osu#20564 by @peppy)

    Avoids the two numbers colliding

    https://user-images.githubusercontent.com/191335/193541766-339455e4-47a4-47d7-9ec3-029b076fa0be.mp4

    Display highest combo rather than current combo for local play on leaderboard (ppy/osu#20547 by @nanashi-1)

    https://user-images.githubusercontent.com/191335/194702653-79cf20f1-9f92-4d46-a2b5-b707f2c4e78d.mp4

    Smaller changes

    • Fix leaderboard wobble when in first place (ppy/osu#20518 by @peppy)
    • Fix gameplay sometimes getting stuck before results screen (ppy/osu#20549 by @frenzibyte)
      • Would only happen with storyboard enabled and on some storyboarded beatmaps.
    • Expose flashlight smoothness as uniform (ppy/osu-resources#215 by @smoogipoo)
    • Fix fade being applied for too long when leaderboard scrolls to start (ppy/osu#20519 by @peppy)

    Gameplay (osu!)

    Fix osu! slider ticks appearing too late (ppy/osu#20477 by @peppy)

    Pretty weird one. Slider ticks were always too late on lazer. Like, way too late.

    https://user-images.githubusercontent.com/191335/194702740-220f2513-7c31-4f51-9c84-dae5383e47fd.mp4

    Add osu! hit object dim (ppy/osu#20572 by @peppy)

    osu! stable would dim objects when they can't be hit (ie. the "miss" window is not active yet). This was never implemented in lazer, and causes quite large visual differences.

    Few have mentioned this yet, but it will definitely be one of those missing pieces which makes lazer feel different to stable.

    https://user-images.githubusercontent.com/191335/194702696-99f48871-6783-4b5b-99c3-6ce1303e3815.mp4

    Hide approach circles immediately on successful hit (ppy/osu#20580 by @peppy)

    Something was bugging me about argon while testing with actual gameplay recently. Something about the animation made it feel like I wasn't in control. Turns out it was the fact that the approach circle stays visible for 50ms after a hit. This is less noticeable on classic/triangles skins, but an especially uneasy feeling on argon where the hitcircle is scaled inwards at the same time.

    Note that as it's only a 50ms fade, this is much more noticeable at >60hz and may not show in the videos below very well.

    https://user-images.githubusercontent.com/191335/194702718-c3ed5178-93de-4bf3-80ce-850afe59f5d7.mp4

    Add cursor "smoke" trails (ppy/osu#20376 by @goodtrailer)

    The smoke trails are back!!

    https://user-images.githubusercontent.com/191335/194702753-4a87d478-9b2f-4a37-bde1-5f784eeb074c.mp4

    Adjust flashlight to more closely match classic scaling (ppy/osu#20566 by @smoogipoo)

    This is an accuracy pass on all rulesets to ensure flashlight matches as closely as possible. Note that the gradient still isn't 1:1, but it's much better than how it used to be.

    https://user-images.githubusercontent.com/191335/194702711-d4ab2179-82cb-4da0-9709-8207c0c243a7.mp4

    Smaller changes

    • Fix slider tick colour not being applied properly (ppy/osu#20424 by @peppy)
      • This was actually in the previous hotfix, but didn't show in the changelog. It only affected the new "argon" skin.
    • Use StackedEndPosition instead of EndPosition to determine the jump distance in the FlashlightEvaluator (ppy/osu#20489 by @abstrakt8)
      • Difficulty calculation related.

    Gameplay (osu!catch)

    Hide osu!catch touch input controls when relax mod is enabled (ppy/osu#20426 by @NullifiedJosh)

    Gameplay (osu!mania)

    Add "argon" note and stage design for osu!mania (ppy/osu#20601 by @peppy)

    Hold note "ticks" are not skinned yet. Weirdly, this doesn't even support legacy skinning as it stands and uses a single visual for all skins.

    https://user-images.githubusercontent.com/191335/194477996-8acefe9c-95b2-4c7f-a6e6-181a6c69ee2d.mp4

    Second pass on osu!mania "argon" visuals (ppy/osu#20604 by @peppy)

    https://user-images.githubusercontent.com/191335/194545633-9a343683-3eb6-4e0b-abe1-62a3fe99a225.mp4

    Still not 100% happy, but should be quite playable.

    Fix osu!mania key / stage lighting / explosions display wrong after rewinding (ppy/osu#20600 by @peppy)

    Smaller changes

    • Fix mania hold note head disappearing (ppy/osu#20594 by @ekrctb)
      • A regression that was never seen by users.
    • Add "argon" key area for osu!mania (ppy/osu#20571 by @peppy)
      • This lays the groundwork for the new design to be added in osu!mania.
    • Refactor osu!mania skinning to allow skins to specify column accent colours (ppy/osu#20592 by @peppy)
    • Fix osu!mania not colours not always updating when switching skins (ppy/osu#20602 by @peppy)

    Gameplay (osu!taiko)

    Fix some "aspire" taiko beatmaps not playing correctly (ppy/osu#20510 by @sw1tchbl4d3r)

    This is observable in osu!taiko gimmick ("Aspire"-like) maps that use very high note velocities to make notes near invisble.

    Compute lifetime start from entry for scrolling hit objects (ppy/osu#20570 by @ekrctb)

    Fixes a long-standing issue where some objects appearing suddenly, later than expected.

    Smaller changes

    • Pin osu!taiko PP calculator's accuracy to the classic value (ppy/osu#20585 by @smoogipoo)

    Notifications

    • Fix progress notifications being able to be flung (and cancelled) (ppy/osu#20478 by @peppy)
    • Fix update progress notification not closing on completion (ppy/osu#20428 by @frenzibyte)

    Performance

    Fix editor performance being sub-par on beatmap load (ppy/osu#20501 by @peppy)

    Worse for longer beatmaps. Basically every timeline tick for the whole duration of the beatmap was being loaded at startup due to changes in the zoom container logic.

    Smaller changes

    • Fix VBO incorrectly flushing on no-op shader bind (ppy/osu-framework#5431 by @peppy)
    • Avoid flushing VBO when the renderer state is not affected (ppy/osu-framework#5438 by @frenzibyte)
    • Fix Displays querying on every access and add DisplaysChanged (ppy/osu-framework#5439 by @Susko3)

    Reliability

    • Fix off-thread drawable mutation in multiplayer settings overlay when an error occurs (ppy/osu#20419 by @peppy)
    • Fix crash when storyboard attempts to play at main menu (ppy/osu#20417 by @peppy)
    • Fix potential null return to ArrayPool in Waveform (ppy/osu-framework#5428 by @peppy)
    • Fix intermittent leaderboard crash due to request finishing after drawable is disposed (ppy/osu#20418 by @peppy)
    • Move MusicController binds to LoadComplete for added thread safety (ppy/osu#20483 by @peppy)
    • Fix potential crash on game exit due to incorrect scheduling of realm change handler (ppy/osu#20479 by @peppy)
    • Fix potential crash from incorrect drawable mutation in tablet settings display (ppy/osu#20480 by @peppy)
    • Fix rank_history serialisation order dependence (ppy/osu#20498 by @peppy)
    • Fix potential crash when losing network connectivity in multiplayer/playlists screens (ppy/osu#20504 by @peppy)
    • Fix potential crash when attempting to display an imported score at song select (ppy/osu#20567 by @peppy)
    • Silence unobserved exceptions in BeginPlayingInternal (ppy/osu#20582 by @peppy)
    • Fix potential crash when score submission token retrival fails (ppy/osu#20562 by @peppy)

    Settings

    Always show exclusive fullscreen as available on Intel platforms (ppy/osu-framework#5432 by @smoogipoo)

    The detection we had in place was not working well for intel GPUs, making users confused that they were not running in exclusive fullscreen when they actually were.

    Change default skin for new installations to "Argon" (ppy/osu#20503 by @peppy)

    It's in a good state now, let's make it the default.

    Adjust out-of-the-box background dim back down to 70% (ppy/osu#20603 by @peppy)

    It was previously bumped from 60% to 80%, but I've recently felt that this is too high as a default, and takes away from storyboards and video backgrounds.

    Song Select

    Change song select random key binding to not handle key repeat (ppy/osu#20565 by @peppy)

    Eventually this will have a better behaviour, but let's fix "ear destroying" for now with the simple fix.

    Testing

    • Fix SkinnableTestScene sizing logic potentially failing to work (ppy/osu#20497 by @frenzibyte)
    • Fix failing multiplayer tests (ppy/osu#20507 by @smoogipoo)
    • Attempt to fix deadlock in TestSceneOnlinePlayBeatmapAvailabilityTracker (ppy/osu#20569 by @smoogipoo)

    Tooling

    • GitHub Workflows security hardening (ppy/osu#20468 by @sashashura)
    • Copy DotSettings CodeInspections from osu! sln (ppy/osu-framework#5444 by @Susko3)
    • Update all dependencies (ppy/osu#20605 by @peppy)

    UI

    • Fix playlist overlay overflowing at high UI scales (ppy/osu#20495 by @Feodor0090)
    • Update localisations (ppy/osu-resources#216 by @peppy)
    • Localize non-localizable setting items (ppy/osu#20340 by @azutake)
    • Fix language settings dropdown not updating when changing language in first run setup (ppy/osu#20599 by @Joehuu)

    New Contributors

    • @azutake made their first contribution in https://github.com/ppy/osu/pull/20340
    • @NullifiedJosh made their first contribution in https://github.com/ppy/osu/pull/20426

    Full Changelog: https://github.com/ppy/osu/compare/2022.927.0...2022.1008.0

    Source code(tar.gz)
    Source code(zip)
    install.exe(140.84 MB)
    osu.app.Apple.Silicon.zip(144.14 MB)
    osu.app.Intel.zip(146.18 MB)
    osu.AppImage(135.41 MB)
    osu.AppImage.zsync(237.16 KB)
    osulazer-2022.1008.0-delta.nupkg(3.01 MB)
    osulazer-2022.1008.0-full.nupkg(140.51 MB)
    osulazer-2022.911.0-delta.nupkg(569.28 KB)
    osulazer-2022.923.0-delta.nupkg(1.97 MB)
    osulazer-2022.923.1-delta.nupkg(1.04 MB)
    RELEASES(412 bytes)
  • 2022.923.0(Sep 23, 2022)

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

    Beatmap Listing

    Fix beatmap listing potentially showing duplicate beatmap cards (ppy/osu#20273 by @frenzibyte)

    Improve sorting criteria in beatmap listing overlay (ppy/osu#20317 by @frenzibyte)

    • Adds Nomination and Updated sorting criteria to beatmap listing, displaying on specific categories
    • When Pending, WIP, Graveyard, or My Maps category is selected, criteria will default to Updated rather than Ranked.
    • When no query is specified, Relevance will not be shown.

    Code Quality

    Remove all entity framework code and migrations (ppy/osu#20319 by @peppy)

    Migration was added in January, so most people should have already finished running it. If anyone hasn't, we can offer manual migration.

    Smaller changes

    • Remove the nullable disable annotation in the ruleset class (ppy/osu#19066 by @andy840119)
    • Fix null considerations in DrawableRulesetDependencies (ppy/osu#20281 by @peppy)
    • Remove unused KeyCounterState (ppy/osu#20309 by @mk56-spn)
    • Retrieve great hit window from the hit object in osu! difficulty calculation (ppy/osu#20160 by @apollo-dw)
    • Move DifficultyMultiplierDisplay's layout and colour logic to a base class (ppy/osu#19991 by @Feodor0090)
    • Close open parenthesis in README.md (ppy/osu-framework#5420 by @MMagnate)
    • Clarify purpose of APIUserScoreAggregate using xmldoc (ppy/osu#20355 by @frenzibyte)

    Editor

    Fixed occasional crashes due to hitobject sorting oversight (ppy/osu#20270 by @OliBomby)

    Fix performing rotation on sliders getting slower over time (ppy/osu#20308 by @peppy)

    Add snapping for slider control points in the editor (ppy/osu#20385 by @B3nn1)

    https://user-images.githubusercontent.com/191335/191932104-4ad9a214-786d-4a06-a80f-779049763d8a.mp4

    Framework

    • Ensure unbind action is always available on request (ppy/osu-framework#5419 by @peppy)
    • Introduce base implementation for IRenderer (ppy/osu-framework#5404 by @frenzibyte)
    • Expose TextureAtlas.Add() (ppy/osu-framework#5403 by @smoogipoo)
    • Add support for blending "write mask" in IRenderer (ppy/osu-framework#5422 by @frenzibyte)
    • Forward tablet driver output to custom logging target (ppy/osu-framework#5421 by @frenzibyte)

    Gameplay

    Fix song progress display fading in and out to often (ppy/osu#20265 by @peppy)

    Fix gameplay leaderboard sometimes not showing up in multiplayer (ppy/osu#20389 by @peppy)

    This also changes the scroll animation a bit:

    https://user-images.githubusercontent.com/191335/191425418-935f656a-adeb-4558-91ba-09f30c0c4523.mp4

    Add gameplay leaderboard (ppy/osu#20286 by @peppy)

    This is by no means the final product, but is a stepping stone towards where we want to be. It also completes the "stable parity" requirement at least.

    "Why is this not a customisable HUD component?"

    Because the implementation changes based on context (multiplayer vs solo currently, but may also support playlists at a later point), it makes it hard to add position flexibility. Especially since in multiplayer we want it to always display.

    Hides with the rest of the HUD (shift + tab) and contracts during gameplay, like the multiplayer counterpart.

    https://user-images.githubusercontent.com/191335/191932087-ce809d1f-6449-4d1a-bbcd-aaaee1fd52d7.mp4

    Smaller changes

    • Fix local scores potentially not being stable-sorted for leaderboard display (ppy/osu#20300 by @peppy)

    Gameplay (osu!)

    Fix flashlight shrinking at >100x rather than starting from 100x (ppy/osu#20358 by @o-dasher)

    https://user-images.githubusercontent.com/191335/191932103-d0c61fb3-8a8c-4311-8e5d-3c585cb785ea.mp4

    Fix alternate / single tap mods not always resetting after break (ppy/osu#20346 by @frenzibyte)

    Fix touch device difficulty reduction not affecting star rating (ppy/osu#16524 by @stanriders)

    This should fix TD scores getting star rating achievements and also makes calculating TD star rating possible. SR is calculated as x^0.8.

    Add "Random" mod setting for angle sharpness (ppy/osu#20370 by @Pasi4K5)

    After the recent changes, some people from the community pointed out that the uncomfortable patterns the random mod was generating were the main reason they were using the mod, since it made maps that they thought were boring more engaging to play. This is my attempt to satisfy those players while still keeping the recent changes.

    "Angle sharpness" - A higher angle sharpness value means that angles are generally sharper, and vice versa. It does that by adding two offsets to the angle calculation function.

    Add new default "argon" skin (ppy/osu#20377 by @peppy)

    This is a work in progress. Consider is a preview release. It's not optimised and may have readability issues. Look forward to watching it grow over the coming releases (including implementation in other rulesets too!).

    Add "argon" skin judgement bubbles (ppy/osu#20399 by @peppy)

    https://user-images.githubusercontent.com/191335/191703279-f646c9dc-b1b4-441a-960b-0e18f45c19cb.mp4

    Am aware that the judgements are sometimes hard to see (visible response time is slower than triangles / classic) with the new argon skin's circle glow. I need to move that to the "lighting" layer to improve things, which will come as a follow-up effort.

    Fix "note lock" shake not always animating (ppy/osu#20398 by @peppy)

    Add argon combo colours (ppy/osu#20402 by @peppy)

    I'm 99% sure these are just test colours flyte was using, but they look good so let's go with them. I've added two new colours to increase the default combo colour rotation to 6. The initial ordering still matches, for whatever that's worth.

    Add very basic follow point implementation for argon skin (ppy/osu#20403 by @peppy)

    This is just something to look better than the glowing mess which triangles fallback was providing. This element hasn't been designed yet, so I'm just filling in with something amicable for the time being.

    Changes to animations are definitely required, but that involves refactoring the animations out of the higher level component. For another day.

    osu! 2022-09-22 at 11 25 17

    Add very basic "argon" spinner (ppy/osu#20406 by @frenzibyte)

    https://user-images.githubusercontent.com/22781491/191815624-114fe262-575e-4b40-b823-80d1c1a4e1c6.mp4

    Smaller changes

    • Fix argon reverse arrow becoming white after switching skins (ppy/osu#20400 by @peppy)
    • Add basic "argon" cursor (ppy/osu#20404 by @peppy)
      • Just something I made up which fits better than the old default.

    osu! 2022-09-22 at 12 21 25

    • Adjust argon animations a bit (ppy/osu#20405 by @peppy)

    Gameplay (osu!catch)

    Fixed osu!catch objects spawning outside of playfield (ppy/osu#20368 by @Drison64)

    Multiplayer

    Fix multiplayer crashes due to incorrect download state (ppy/osu#20366 by @peppy)

    Show countdown notification when multiplayer server is restarting (ppy/osu#20342 by @smoogipoo)

    https://user-images.githubusercontent.com/191335/191932097-ed0fa1f4-7247-4e45-b123-b1ef8645fe48.mp4

    Notifications

    Allow dismissing notifications without performing action using middle / right click (ppy/osu#20215 by @peppy)

    Add ability to "fling" notifications to dismiss them (ppy/osu#20244 by @peppy)

    Fling to left will dismiss, to right will store to overlay (will come later).

    https://user-images.githubusercontent.com/191335/189532613-868a12ed-308a-440b-833f-d7389c8460ec.mp4

    Add ability to flick notifications to the right to store for later (ppy/osu#20267 by @peppy)

    https://user-images.githubusercontent.com/191335/189641321-ed433cd1-1438-48d8-a934-c767d7f1c5ba.mp4

    Smaller changes

    • Fix notification overlay toast tray background absorbing input from behind (ppy/osu#20294 by @Joehuu)
    • Fix notification count not always updating when it should (ppy/osu#20339 by @peppy)
      • Part two of fixing progress notifications completing off-screen (ie. while the overlay is hidden) not correctly updating the unread count.
    • Fix progress notifications no longer blocking cancel on left click (ppy/osu#20383 by @frenzibyte)

    Performance

    Fix PoolableDrawable prepare call schedules potentially creating overhead if drawable never updated (ppy/osu-framework#5409 by @peppy)

    Could lead to stutters in gameplay.

    Reduce overhead of Waveform resampling (ppy/osu-framework#5414 by @peppy)

    Around 50% faster.

    Smaller changes

    • Fix bindable event binds to HitObject directly (ppy/osu#20258 by @peppy)
    • Remove EnumerateBaseTypes overhead in UnbindAllBindables (ppy/osu-framework#5411 by @peppy)
    • Fix editor performance drop over time due to lingering nested object references (ppy/osu#20303 by @peppy)
    • Preallocate layout members list size to reduce allocations from list resize (ppy/osu-framework#5410 by @peppy)
    • Fix memory leak due to missing event unbind (ppy/osu#20359 by @smoogipoo)
    • Fix mods potentially keeping reference to runtime gameplay elements (ppy/osu#20375 by @peppy)

    Reliability

    • Fix potential crash when opening changelog overlay if entry has no URL (ppy/osu#20259 by @peppy)
    • Fix potential crash if multiplayer spectator load is aborted early (ppy/osu#20283 by @peppy)
    • Fix potential startup failures if sqlite cannot be loaded (ppy/osu#20329 by @peppy)
    • Catch any unobserved exceptions during beatmap metadata harvesting (ppy/osu#20337 by @peppy)
    • Fix unbind action caching occurring too late (ppy/osu-framework#5418 by @peppy)
      • This was causing osu! side failures. It "regressed" with #5411, but was only "working" previously due to the relevant base types being cached elsewhere. So a bit of luck that things have been working until now.

    I'm not sure how to write test coverage for this (or if it's required), but I've run osu! side tests and confirmed they now pass (see failure on update attempt).

    • Fix editor timeline zoom potentially breaking permanently (ppy/osu#20353 by @Drison64)
    • Unsubscribe from tablet driver events on disposal (ppy/osu-framework#5424 by @frenzibyte)
    • Fix unsubscription logic not handling null tablet drivers (ppy/osu-framework#5425 by @frenzibyte)
    • Add legacy cursor-smoke texture (ppy/osu-resources#214 by @goodtrailer)

    Scoring

    • Add ScoreProcessor.ComputeAccuracy() (ppy/osu#20262 by @smoogipoo)
      • I will be consuming this in osu-queue-score-statistics for upgrading total scores/accuracies.

    Settings

    • Simplify skin bindable flow (ppy/osu#20264 by @peppy)
      • Now, nothing touches the configuration apart from OsuGame, making everything else flow better and avoid weird cyclic set bugs.
    • Add "keybindings" search term to settings (ppy/osu#20393 by @smoogipoo)
      • Every time I try to search for this section I end up writing "keyb" and get no results. This annoys me to no end and I've tried to deal with it for the greater part of 2 years, yet still unsuccessful at remembering that the game expects "bindings" or "key bindings" instead.

    Skinning

    Fix new-style legacy skins with animated judgements not adding correct transforms (ppy/osu#20260 by @peppy)

    https://user-images.githubusercontent.com/191335/191932085-6633cce2-278f-4f21-8175-9b145052e892.mp4

    Allow skin transformers to be created for all skins (ppy/osu#20320 by @peppy)

    Paving way for multiple default skins in the future (or now?!)

    Fix follow point animations in legacy skins not always starting at correct point in time (ppy/osu#20338 by @peppy)

    For users with animated follow points (legacy skins) this will fix phantom follow points appearing where they shouldn't (or out of time with the connecting objects).

    https://user-images.githubusercontent.com/191335/191932095-6e9b5322-0856-47ab-900a-6e1f4a803ad0.mp4

    Rename default skin to make way for new version (ppy/osu#20354 by @peppy)

    Add customisation settings of colour hit error display (ppy/osu#20111 by @mk56-spn)

    https://user-images.githubusercontent.com/74463310/188277215-0a59c31f-eff1-4488-9cf6-ed5ced4bcad1.mp4

    Smaller changes

    • Disable alpha component parsing in beatmap / skin colour sections (ppy/osu#20392 by @peppy)
    • Fix "argon" skin not supporting user loaded sprites in gameplay (ppy/osu#20401 by @peppy)

    Song Select

    Add new ways to search for time spans (ppy/osu#19275 by @solstice23)

    The following search formats are now possible:

    • 7m27s
    • 1h2m3s
    • 7:27
    • 1:2:3

    Show login overlay when attempting to update a beatmap while logged out (ppy/osu#20257 by @peppy)

    https://user-images.githubusercontent.com/191335/191932034-750de2d7-c810-4545-ba48-a02e74cef350.mp4

    Smaller changes

    • Fix best rank badge not handling legacy scores properly (ppy/osu#19308 by @frenzibyte)
    • Fix song select status prefix matching no longer working (ppy/osu#20292 by @peppy)

    Storyboard

    Fix world.execute(me) storyboard animation incorrectness (ppy/osu#20253 by @peppy)

    Testing

    • Add TestSceneOsuModRandom (ppy/osu#20408 by @Pasi4K5)
      • As suggested in https://github.com/ppy/osu/pull/20370#issuecomment-1254526494.

    Tooling

    • Cancel in progress CI runs when new commits are pushed (ppy/osu#20261 by @peppy)
    • Update ReSharper CLI to 2022.2.3 (ppy/osu#20301 by @smoogipoo)

    UI

    Fix update progress notification icon visual overload (ppy/osu#20254 by @peppy)

    https://user-images.githubusercontent.com/191335/189583600-d1da7027-8cee-409a-96d2-1a4fe243df77.mp4

    Make score panel timestamp adjust to 24-hour time setting (ppy/osu#20334 by @Drison64)

    https://user-images.githubusercontent.com/191335/191932102-db0d74cd-83eb-4dd7-868c-e9a80a4194a2.mp4

    Smaller changes

    • Fix beatmap card play button not working with touch inputs when not hovered (ppy/osu#18642 by @Joehuu)
    • Fix markdown container not rendering certain text correctly (ppy/osu#20213 by @frenzibyte)
    • Fix new hit distribution graph not accounting for size changes (ppy/osu#20248 by @acid-chicken)
    • Update localisations (ppy/osu-resources#212 by @peppy)
    • Fix dropdown selected visual state not being maintained when Items are set after Current (ppy/osu-framework#5401 by @peppy)
    • Fixed Leaderboard tooltip not following time format setting (ppy/osu#20349 by @vegguid)
    • Fix Progress bar info text overlapping with progress graph (ppy/osu#20321 by @HiddenNode)
    • Fix nested storage lookup check not accounting for case insensitive filesystems (ppy/osu-framework#5383 by @peppy)

    UX

    Reduce occasions when "game is muted" notification shows (ppy/osu#20379 by @peppy)

    Reduces the threshold to 1%, and changes clicking the notification to only increase volume level to 50%, rather than 100%.

    Add warning message in files folder to avoid accidental deletion (ppy/osu#20396 by @peppy)

    This is a pretty standard practice for applications that have data stored in folders where a user may accidentally determine that the content is unnecessary.

    Parallels Desktop 2022-09-22 at 04 18 59

    Improve tablet error/warning notifications messaging (ppy/osu#20344 by @frenzibyte)

    CleanShot 2022-09-16 at 16 28 39@2x

    New Contributors

    • @B3nn1 made their first contribution in https://github.com/ppy/osu/pull/20385

    Full Changelog: https://github.com/ppy/osu/compare/2022.920.0...2022.923.0

    Source code(tar.gz)
    Source code(zip)
    install.exe(140.68 MB)
    osu.app.Apple.Silicon.zip(143.91 MB)
    osu.app.Intel.zip(145.96 MB)
    osu.AppImage(135.21 MB)
    osu.AppImage.zsync(236.82 KB)
    osulazer-2022.902.1-delta.nupkg(392.44 KB)
    osulazer-2022.910.0-delta.nupkg(1.24 MB)
    osulazer-2022.911.0-delta.nupkg(569.28 KB)
    osulazer-2022.923.0-delta.nupkg(1.97 MB)
    osulazer-2022.923.0-full.nupkg(140.35 MB)
    RELEASES(409 bytes)
    sh.ppy.osulazer.apk(172.25 MB)
  • 2022.910.0(Sep 11, 2022)

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

    Audio

    Add audio feedback for Esc/Back clearing text from a FocusedTextBox (ppy/osu#20168 by @nekodex)

    https://user-images.githubusercontent.com/272140/188790642-c775e974-9356-4f41-bce3-290a9cba68bf.mov

    Code Quality

    • Update Remove/RemoveRange/RemoveAll calls in line with framework changes (ppy/osu#19971 by @peppy)
    • Add unmanaged constraint to vertex/uniform generic types (ppy/osu-framework#5388 by @frenzibyte)
    • Update GlobalPropertyManager to support registering IShaders (ppy/osu-framework#5387 by @frenzibyte)
    • Rename DepthStencilFunction to BufferTestFunction (ppy/osu-framework#5390 by @Flutterish)
    • Tidy up TestSceneStoryboard (ppy/osu#20173 by @peppy)
    • Refactor TrueGameplayRate to account for only gameplay adjustments, no matter what (ppy/osu#20157 by @peppy)

    Difficulty

    Bump difficulty calculator versions (ppy/osu#20092 by @smoogipoo)

    Will cause all local scores to recalculate to latest SR/PP implementations. We forgot to bump for a few updates.

    Editor

    Fix sliders sometimes looking longer than expected in editor timeline (ppy/osu#20141 by @peppy)

    During placement, it was possible that sliders would have the wrong velocity for display purposes.

    https://user-images.githubusercontent.com/191335/189513073-2ebb524a-e6b9-4cd6-9ab0-da04edcb0692.mp4

    Add ability to delete difficulties from the editor (ppy/osu#19413 by @Gramore)

    https://user-images.githubusercontent.com/191335/189513124-5dc0d209-3a09-4f47-ac6f-7b9b27ea00fa.mp4

    Framework

    • Remove "GL" prefix from performance collection type enum (ppy/osu-framework#5386 by @frenzibyte)
    • Don't fabricate UIEvents in TestSceneDropdown (ppy/osu-framework#5391 by @Susko3)
    • Allow Drawable Scale to be exactly zero (ppy/osu-framework#5394 by @smoogipoo)
    • Attempt to fix AppVeyor not publishing .snupkgs (ppy/osu-framework#5395 by @smoogipoo)
    • Make IsPresent consider DrawScale instead of Scale (ppy/osu-framework#5397 by @smoogipoo)
    • Throw exception when modifying contents of Container while iterating through it (ppy/osu-framework#5396 by @hwabis)

    Gameplay

    Add clicks/second counter (ppy/osu#19599 by @ItsShamed)

    https://user-images.githubusercontent.com/191335/189513106-8319eaaf-5b31-4658-ac14-39e2ce79b42c.mp4

    Gameplay (osu!)

    Enhance angle calculations of "Random" mod (ppy/osu#18769 by @Pasi4K5)

    The main problem this PR addresses is that the angles between far spaced hit objects are way too wide in many cases, which makes some patterns extremely uncomfortable and unreasonably difficult to play. Furthermore, it turns patterns that were originally jump patterns into a big mess of hit objects that goes in circles around the screen.

    Gameplay (osu!catch)

    Add basic touch support for osu!catch (ppy/osu#19774 by @josh-codes)

    Gameplay (osu!taiko)

    • Make drum rolls and swells optional in taiko (ppy/osu#18764 by @sw1tchbl4d3r)
      • With these changes, drum rolls and swells in taiko will behave similarly to stable when the Classic mod is enabled. By default in scorev2, these types of hitobjects are incorporated into accuracy and combo, which isn't the case for scorev1 on stable.

    Multiplayer

    Fix room status dropdown placement inconsistent between multiplayer and playlists (ppy/osu#20109 by @frenzibyte)

    Fix multiplayer song select not always opening to correct beatmap (ppy/osu#20178 by @smoogipoo)

    Add auto skip for multiplayer rooms (ppy/osu#20047 by @smoogipoo)

    Defaults to off for now. Can be set during room creation or settings at any point.

    Smaller changes

    • Implement support for multiple active countdowns in multiplayer (ppy/osu#20145 by @smoogipoo)
      • To be used soon for cool things.

    Notifications

    • Fix completion toasts sometimes not displaying (ppy/osu#20144 by @peppy)

    Performance

    Improve invalidation/validation performance (ppy/osu-framework#5392 by @smoogipoo)

    Should provide a ~10% performance bump on scenarios where things are moving on screen a lot (ie. storyboards).

    Smaller changes

    • Improve performance when cancelling import with debugger attached (ppy/osu#20136 by @smoogipoo)

    Reliability

    • Fix textbox sample playback potentially crashing if called before load (ppy/osu#20142 by @peppy)
    • Fix missing null checks on selectedBeatmap fields in BeatmapCarousel (ppy/osu#20171 by @peppy)
    • Fix target mod crashing if beatmap is played with a break after all hitobjects (ppy/osu#20177 by @peppy)
    • Fix attempting to use "home" key binding while exiting game causing errors (ppy/osu#20205 by @peppy)

    Results

    Show judgement colours in hit distribution graph (ppy/osu#20143 by @acid-chicken)

    Changed the bars in the time distribution graph to stack for each HitResult. Their colors are borrowed from those used in HitErrorMeter.

    std mania taiko

    Scoring

    • Add has_replay and legacy_score_id to SoloScoreInfo (ppy/osu#20070 by @smoogipoo)
    • Don't serialise has_replay (ppy/osu#20093 by @smoogipoo)
    • Decode taiko Geki/Katu from legacy scores into LargeBonus (ppy/osu#20158 by @smoogipoo)
    • Turn score ids into ulongs (ppy/osu#20202 by @smoogipoo)
    • Reduce ramp mod multipliers in line with other difficulty change mods for now (ppy/osu#20206 by @peppy)
      • Will require reprocessing of everything server-side.
    • Fix local scores displaying incorrectly since last update (ppy/osu#20200 by @smoogipoo)

    Settings

    Show fixed speed in mania scroll speed settings tooltip (ppy/osu#20190 by @cdwcgt)

    https://user-images.githubusercontent.com/191335/189513082-38f27fa4-893b-4351-9106-34f204208653.mp4

    Skin Editor

    Allow nudging components using arrow keys (ppy/osu#20195 by @cdwcgt)

    https://user-images.githubusercontent.com/191335/189513152-035d60e9-0cc8-4779-a586-55bf7840c4a2.mp4

    Ensure that some skin components always keep text upright when flipped / rotated (ppy/osu#19556 by @HiddenNode)

    incorrect_slider_length 00_02_31_59 Still006

    Song Select

    Display 0 stars instead of infinity for the minimum star slider (ppy/osu#20130 by @Exanc)

    20130

    Storyboard

    • Fix some storyboard elements displaying too late due to incorrect start time allowances (ppy/osu#20156 by @peppy)
    • Fix some storyboard sprites still showing with zero VectorScale (ppy/osu#20174 by @peppy)

    Tournament

    • Fix right-clicking a non-selected match in ladder view dismissing context menu (ppy/osu#20095 by @peppy)
    • Show team scores at the tournament map pool screen (ppy/osu#20094 by @peppy)
    • Fix clicking an in-progress match in bracket view potentially resetting scores (ppy/osu#20186 by @peppy)

    UI

    Fix playlist items showing download button briefly during initial display (ppy/osu#20189 by @peppy)

    Fixes this weirdness:

    https://user-images.githubusercontent.com/191335/189071695-efdedade-4e79-4077-a6c6-54327f7c10b2.mp4

    Smaller changes

    • Fix beat sync components stopping after beatmap change (ppy/osu#20076 by @peppy)
    • Fix double colour application in update progress notification (ppy/osu#20079 by @peppy)
    • Fix beat sync stopping after returning to menu from a failed play (ppy/osu#20203 by @peppy)

    New Contributors

    • @josh-codes made their first contribution in https://github.com/ppy/osu/pull/19774
    • @HiddenNode made their first contribution in https://github.com/ppy/osu/pull/19556

    Full Changelog: https://github.com/ppy/osu/compare/2022.909.0...2022.910.0

    Source code(tar.gz)
    Source code(zip)
    install.exe(141.78 MB)
    osu.app.Apple.Silicon.zip(144.61 MB)
    osu.app.Intel.zip(147.42 MB)
    osu.AppImage(136.32 MB)
    osu.AppImage.zsync(238.77 KB)
    osulazer-2022.901.0-delta.nupkg(1.52 MB)
    osulazer-2022.902.0-delta.nupkg(665.59 KB)
    osulazer-2022.902.1-delta.nupkg(392.44 KB)
    osulazer-2022.910.0-delta.nupkg(1.24 MB)
    osulazer-2022.910.0-full.nupkg(141.45 MB)
    RELEASES(409 bytes)
    sh.ppy.osulazer.apk(173.55 MB)
  • 2022.902.0(Sep 1, 2022)

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

    Hotfix release mostly for android startup crash

    Code Quality

    • Update IContainer interface to add explicit disposal argument on Remove methods (ppy/osu-framework#5382 by @peppy)

    Editor

    • Fixed merging circles at the same time causing a crash (ppy/osu#19984 by @OliBomby)

    Reliability

    Fix tournament population failure when beatmap is not found on server (ppy/osu#20073 by @peppy)

    Fix android startup crash (ppy/osu-framework#5385 by @peppy)

    Settings

    Fix seasonal background not being unloaded when changing setting to "Never" (ppy/osu#20072 by @peppy)

    Song Select

    • Fix "date submitted" and "date ranked" filtering not working as intended (ppy/osu#20066 by @peppy)

    Full Changelog: https://github.com/ppy/osu/compare/2022.901.0...2022.902.0

    Source code(tar.gz)
    Source code(zip)
    install.exe(141.77 MB)
    osu.app.Apple.Silicon.zip(144.60 MB)
    osu.app.Intel.zip(147.41 MB)
    osu.AppImage(136.31 MB)
    osu.AppImage.zsync(238.74 KB)
    osulazer-2022.816.0-delta.nupkg(439.70 KB)
    osulazer-2022.821.0-delta.nupkg(2.79 MB)
    osulazer-2022.901.0-delta.nupkg(1.52 MB)
    osulazer-2022.902.0-delta.nupkg(665.59 KB)
    osulazer-2022.902.0-full.nupkg(141.44 MB)
    RELEASES(409 bytes)
    sh.ppy.osulazer.apk(173.54 MB)
  • 2022.901.0(Sep 1, 2022)

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

    NOTE: 🤖 ANDROID RELEASE PULLED TEMPORARILY DUE TO SOMETHING GONE WRONG

    Audio

    Add audio feedback for text selection (ppy/osu#19850 by @nekodex)

    https://user-images.githubusercontent.com/272140/185581073-0bd07257-a0ea-4750-aad2-78dd399f0b24.mov

    Fix audio glitching when showing results screen with many scores (ppy/osu#20025 by @peppy)

    Could be heard as a soft "pop" when entering results, even when the game was muted.

    Add audio feedback for invalid textbox input (ppy/osu#20045 by @nekodex)

    https://user-images.githubusercontent.com/272140/187635638-139a2ca7-bc3a-4e22-a398-55182731e6fe.mov

    Code Quality

    • Invert creation of clocks in multi-spectator (ppy/osu#19911 by @smoogipoo)
    • Tidy up spectator clock/manager naming and interfaces (ppy/osu#19933 by @peppy)
    • Move MasterClockState handling in to SpectatorSyncManager (ppy/osu#19936 by @peppy)
    • No "gameplayClock" usage with playfield update mods (ppy/osu#19951 by @o-dasher)
    • Prefix all remaining OpenGL-specific classes with "GL" in name (ppy/osu-framework#5381 by @frenzibyte)
    • Introduce FramedBeatmapClock (and use in gameplay flow) (ppy/osu#19828 by @peppy)
      • First piece of getting offsets more global. This just moves the handling to an isolated class which can be used in more contexts.
    • Refactor/merge ScoreProcessor.ComputeScore() methods (ppy/osu#20008 by @smoogipoo)
    • Refactor scoring to remove async methods / simplify (ppy/osu#20011 by @smoogipoo)
    • Add LegacyTotalScore to SoloScoreInfo (ppy/osu#20028 by @smoogipoo)
    • Apply NRT to notification classes (ppy/osu#20026 by @peppy)
    • Assert non-null in ProfileHeader to appease r# (ppy/osu#20029 by @peppy)

    Database

    Always reprocess beatmaps after a user update request (ppy/osu#20013 by @peppy)

    If a beatmap had metadata changes server-side without its content changing, the game would prompt the user to update but early-abort the update process due to not finding any file changes. Now, osu! will do a full metadata reprocess to bring things into a correct state.

    https://user-images.githubusercontent.com/191335/187860324-48aa3dbe-996b-4b94-8c53-fc684c46237f.mp4

    Editor

    Add ability to split sliders into multiple pieces (ppy/osu#19858 by @OliBomby)

    This synergizes particularly well with the merging feature added earlier, allowing splitting a part of the slider, transforming it however you want, then merging it back together.

    For now you can only split on control points which have a non-inherited curve types and are not the first or last control point of the slider. It is theoretically possible to make a splitting feature which can split on any part of the slider body, but that would be more involved require some extra UX considerations. Maybe something for the future.

    https://user-images.githubusercontent.com/17460441/185665881-68bcce68-b2d5-4f30-a192-6fbe4aa1c89c.mp4

    Correctly apply universal and beatmap offsets in editor (ppy/osu#19974 by @peppy)

    I did it! This was quite a journey to make happen in a semi-sane way. Should pave a path for a brighter (and more in-time) future.

    Smaller changes

    • Fix flipping a slider sometimes changing the curve type from "Perfect" to "Bezier" (ppy/osu#19865 by @OliBomby)
    • Fix mering of hitobjects not correctly populating hitsounds (ppy/osu#19964 by @nanashi-1)
    • Fixed merging zero-length hitobject combinations being allowed (ppy/osu#19982 by @OliBomby)
      • And causing a crash as a result.
    • Adjust weirdly back-to-front fallback comparison in HitObjectOrderedSelectionContainer (ppy/osu#20009 by @frenzibyte)
    • Fixed merging circles at the same time causing a crash (ppy/osu#19984 by @OliBomby)

    Framework

    • Add method to get configuration from a ConfigManager for logging purposes (ppy/osu-framework#5372 by @peppy)
    • Expose method to allow implementations to perform operations when drawable items change in RearrangeableListContainer (ppy/osu-framework#5376 by @peppy)
    • Avoid performing Seek operations on a decoupled source when the source is not running (ppy/osu-framework#5380 by @peppy)
    • Add callbacks to text selection events of TextBox (ppy/osu-framework#5366 by @nekodex)
    • Add Name to samples and channels (ppy/osu-framework#5384 by @peppy)

    Gameplay

    Emulate osu!stable's NaN slider velocity behavior (ppy/osu#19919 by @khang06)

    Some loved maps (1, 2, 3) like to use NaN slider velocity timing points, which acts exactly like 1.0x but disables slider tick generation. This allows effectively going far past the 10x slider velocity limit without generating an unnecessary amount of slider ticks.

    This change allows such beatmaps to function "correctly".

    https://user-images.githubusercontent.com/191335/187860565-8d363a39-640a-40bb-aa58-5286eb30645d.mp4

    Smaller changes

    • Ensure fail animation sequence isn't run after the player exit sequence has started (ppy/osu#19958 by @peppy)
    • Don't include misses in failed score statistics (ppy/osu#20010 by @smoogipoo)
    • Fix skip button getting stuck on screen for certain beatmaps (ppy/osu#20039 by @peppy)
    • Fix gameplay skipping forward during resume operation (ppy/osu#20014 by @peppy)

    Gameplay (osu!)

    Add setting to toggle metronome in "Target" mod (ppy/osu#20012 by @peppy)

    Per a user request.

    https://user-images.githubusercontent.com/191335/187860419-69396245-70df-4582-9e98-49f363a9a647.mp4

    Smaller changes

    • Nerf repeated angles in Flashlight skill (ppy/osu#19716 by @MBmasher)
      • Difficulty calculation changes. More detail coming in a news post in the near future.
    • Fix relevant note count summation in osu!'s Speed skill (ppy/osu#20033 by @apollo-dw)
      • Difficulty calculation changes. More detail coming in a news post in the near future.

    Gameplay (osu!taiko)

    • Rewrite of the colour skill & refactoring of difficulty calculation within osu!taiko (ppy/osu#19571 by @vunyunt)
      • Difficulty calculation changes. More detail coming in a news post in the near future.
    • osu!taiko performance point adjustments & effective misses (ppy/osu#19853 by @Lawtrohux)
      • Difficulty calculation changes. More detail coming in a news post in the near future.

    Multiplayer

    Fix multiplayer spectator sometimes getting stuck at the end of the beatmap (ppy/osu#19938 by @frenzibyte)

    Online

    • Add maximum_statistics to ScoreInfo (ppy/osu#19939 by @smoogipoo)
      • To be used for new score storage systems.
    • Add legacy_combo_increase hit result type for legacy scores (ppy/osu#19940 by @smoogipoo)
      • To be used for new score storage systems.

    Performance

    • Fix SliderPath.Version bindings not being correctly cleaned up on path changes (ppy/osu#19959 by @peppy)

    Reliability

    Perform more initial checks when loading rulesets to avoid runtime crashes (ppy/osu#19830 by @peppy)

    As we continue to break the ruleset API, it makes more sense to proactively check known changes and bail early during ruleset loading to avoid a user experiencing a crash at a random point during execution.

    Add ruleset API versioning (ppy/osu#19907 by @peppy)

    Should result in less crashes from outdated rulesets. Will only take effect after ruleset creators update in line with the new changes, but from that point forward things should be a lot more user-friendly, and less crashy.

    Smaller changes

    • Fix crash if file with incorrect filename format is in font cache directory (ppy/osu-framework#5370 by @peppy)
    • Fix editor crashing on mobile releases (ppy/osu#19906 by @peppy)
      • Big oops.
    • Fix a crash if a slider bar is disabled during a drag operation (ppy/osu-framework#5373 by @peppy)
    • Include framework configuration in sentry output (ppy/osu#19909 by @peppy)
    • Fix crash with legacy import from incomplete installs (ppy/osu#19995 by @its5Q)
    • Fix crash when attempting to watch a replay when the storage file doesn't exist (ppy/osu#20031 by @peppy)

    Song Select

    Fix selecting preset containing Difficulty Adjust automatically opening customisation panel (ppy/osu#19783 by @bdach)

    Add "date submitted" sorting (ppy/osu#19904 by @novialriptide)

    https://user-images.githubusercontent.com/35881688/185831856-d1d86f2d-927b-4422-9980-045fee2d6be3.mp4

    Fix beatmap carousel not maintaining selection if currently selected beatmap is updated (ppy/osu#19409 by @peppy)

    Smaller changes

    • Adjust rounding in mod select difficulty multiplier to match song select footer (ppy/osu#19898 by @bdach)
      • Now the displayed numbers should match everywhere they are shown on the song select screen.

    Testing

    • Add safeties to avoid deadlock in SubmittingPlayer (ppy/osu#19868 by @peppy)
    • Fix some BeatmapCarousel tests not correctly reinitialising local data per run (ppy/osu#19956 by @peppy)
    • Ensure all mods are incompatible in both ways (ppy/osu#19203 by @tsunyoku)
    • Fix intermittent test failures in TestScenePlaylistOverlay (ppy/osu#19924 by @peppy)
    • Populate MaximumStatistics for test scores (ppy/osu#20024 by @smoogipoo)
    • Test editor ComposeScreen tests not adding beatmap to hierarchy (ppy/osu#20042 by @peppy)

    Tournament

    Add toggle for tournament client "auto progression" behaviour (ppy/osu#20041 by @peppy)

    UI

    Add option to copy URL rather than open an external link (ppy/osu#19937 by @novialriptide)

    image

    Fix beat synced components not applying offsets (ppy/osu#19973 by @peppy)

    This fixes things like the main menu osu! logo and nightcore beats not adjusting with "universal offset" changes. It was a journey to make this work, but we made it.

    Update notification overlay design (ppy/osu#20030 by @peppy)

    Roughly matches web. Not interested in getting metrics perfect or removing the light. Just wanted to get ballpark visuals correct to make sure any subsequent changes don't feel too out-of-place against the rest of the game ecosystem.

    notifications new design

    Add toast notifications (ppy/osu#20032 by @peppy)

    Been wanting to do this for quite a while. It greatly improves user experience almost everywhere in the game.

    https://user-images.githubusercontent.com/191335/187437527-6b9a3d65-4306-4d4b-86df-defa123257b2.mp4

    Smaller changes

    • Fix language change removing mod column bold text (ppy/osu#19905 by @smoogipoo)
    • Change most ruleset-accessible string types to Localisable strings (ppy/osu#19695 by @naoei)
    • Do not apply hidden state to system drives in directory selector (ppy/osu-framework#5374 by @mashiro-azure)
    • Add profile url context menu to user container (ppy/osu#19934 by @novialriptide)

    New Contributors

    • @o-dasher made their first contribution in https://github.com/ppy/osu/pull/19951
    • @vunyunt made their first contribution in https://github.com/ppy/osu/pull/19571
    • @nanashi-1 made their first contribution in https://github.com/ppy/osu/pull/19964
    • @khang06 made their first contribution in https://github.com/ppy/osu/pull/19919

    Full Changelog: https://github.com/ppy/osu/compare/2022.821.0...2022.901.0

    Source code(tar.gz)
    Source code(zip)
    install.exe(141.77 MB)
    osu.app.Apple.Silicon.zip(144.59 MB)
    osu.app.Intel.zip(147.40 MB)
    osu.AppImage(136.31 MB)
    osu.AppImage.zsync(238.74 KB)
    osulazer-2022.810.2-delta.nupkg(541.93 KB)
    osulazer-2022.816.0-delta.nupkg(439.70 KB)
    osulazer-2022.821.0-delta.nupkg(2.79 MB)
    osulazer-2022.901.0-delta.nupkg(1.52 MB)
    osulazer-2022.901.0-full.nupkg(141.44 MB)
    RELEASES(409 bytes)
  • 2022.821.0(Aug 21, 2022)

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

    Code Quality

    • Refactor APIAccess main loop to read better (ppy/osu#19707 by @peppy)
    • Fix naming of depth stencil function function type (ppy/osu-framework#5357 by @smoogipoo)
    • Move all usage of GameplayClock to IGameplayClock (ppy/osu#19775 by @peppy)
      • As a first step towards tidying up the structure of clocks in gameplay usages, I want to remove all usage of GameplayClock via DI. The next step would be to attempt to remove GameplayClock itself.
    • Remove FrameStableClock (and redirect usages to FrameStabilityContainer) (ppy/osu#19776 by @peppy)
    • Tidy up and document FrameStabilityContainer (ppy/osu#19777 by @peppy)
    • Add LocalisableString.IsNullOrEmpty and LocalisableString.IsNullOrWhiteSpace (ppy/osu-framework#5364 by @smoogipoo)
    • Remove all remaining usage of GameplayClock (ppy/osu#19779 by @peppy)
    • Split OffsetCorrectionClock out of MasterGameplayClockContainer (ppy/osu#19836 by @peppy)

    Database

    Fix re-importing existing collections not correctly adding new items (ppy/osu#19801 by @peppy)

    Smaller changes

    • Add LastUpdate field to track the time of local changes (ppy/osu#19530 by @peppy)
      • Not displayed anywhere yet, but will allow for better ordering of locally edited beatmaps in the future.

    Difficulty Calculation (osu!)

    • Add slider bonus to Flashlight skill (ppy/osu#15666 by @MBmasher)
    • osu! performance points balancing pass (ppy/osu#19001 by @stanriders)
    • Clamp effective miss count to maximum amount of possible breaks (ppy/osu#19804 by @stanriders)

    Difficulty Calculation (osu!mania)

    • Fix mania star rating varying by order of notes in a chord (ppy/osu#19120 by @molneya)

    Editor

    Fix slider ticks playing back at infinite rate while making changes to a slider in the editor (ppy/osu#19800 by @peppy)

    https://user-images.githubusercontent.com/191335/185783245-0c627c81-ebf9-4ff3-8fa4-e254d1d66e51.mp4

    Add ability to merge hit objects in osu! editor to create sliders (ppy/osu#19782 by @OliBomby)

    I added a feature to the osu editor which lets you merge multiple objects into one big slider. You can use it by selecting multiple sliders and then pressing the 'Merge selection' in the context menu or pressing Ctrl+Shift+M.

    https://user-images.githubusercontent.com/17460441/184664631-decf2530-d119-4198-94ac-250091470893.mp4

    Fix taiko blueprints displaying incorrectly for drum rolls (ppy/osu#19832 by @peppy)

    https://user-images.githubusercontent.com/191335/185783217-24355d8c-eb3a-4439-9ea3-7e42fc29d60a.mp4

    Smaller changes

    • Make clock position transfer more reliable when track is stopped (ppy/osu-framework#5362 by @peppy)
    • Fix some editor setup screen changes not triggering the "save changes" dialog (ppy/osu#19547 by @peppy)
    • Fix taiko drum rolls with zero length being placeable in editor (ppy/osu#19831 by @peppy)
    • Fix flipping a slider sometimes changing the curve type from "Perfect" to "Bezier" (ppy/osu#19865 by @OliBomby)
      • fixes #19824

    Framework

    • Add validation on circular progress properties (ppy/osu-framework#5349 by @smoogipoo)
    • Refactor exceptions thrown from vertex buffer construction (ppy/osu-framework#5350 by @smoogipoo)
    • Remove GL reference from DepthInfo (ppy/osu-framework#5352 by @smoogipoo)
    • Add some missing rendering enums' values (ppy/osu-framework#5353 by @Flutterish)
    • Add stencil support for renderers (ppy/osu-framework#5351 by @Flutterish)
    • Fix performing a Seek on decouplable clock while coupled and stopped not updating the CurrentTime (ppy/osu-framework#5355 by @peppy)
      • Noticed while using this clock to implement a higher-level beatmap clock osu! side.
    • Add ability to push arbitrary projection matrix to IRenderer (ppy/osu-framework#5354 by @Flutterish)
    • Add CompositeComponent marker class (ppy/osu-framework#5363 by @peppy)

    Gameplay

    Adjust various mod multipliers to avoid competition with normal scores (ppy/osu#19715 by @peppy)

    While we have leaderboards still showing all mods next to each other, we've decided to devalue new (lazer-first) mods which are seen as making the game easier. The multipliers decided here are placeholder and mainly meant to reduce competition of unworthy scores that were previously showing at the top of the leaderboards. We will continue to adjust these (and make them dynamic based on settings) going forward.

    • Relax 1.0x0.1x
    • Autopilot 1.0x0.1x
    • Magnetised 1.0x0.5x
    • Adaptive Speed 1.0x0.5x
    • Difficulty Adjust 1.0x0.5x
    • Constant Speed 1.0x0.9x

    Leaderboards will be re-processed over the coming week.

    Skip song intro on quick restart (ppy/osu#19594 by @BlauFx)

    Same as what you are used to in osu!(stable).

    https://user-images.githubusercontent.com/191335/185783069-49bbc27f-3b3c-460f-98d2-48e514095004.mp4

    Localisation

    • Add missing localisation for settings enums (ppy/osu#19646 by @its5Q)
    • Add localisation support for beatmap editor setup (ppy/osu#19693 by @its5Q)

    Reliability

    • Guard against pixel count attempting to be decremented (ppy/osu-framework#5347 by @peppy)
    • Fix TabControl causing a crash if current value is not found in tabs (ppy/osu-framework#5348 by @peppy)

    Song Select

    • Fix audio track not correctly advancing when changing between certain beatmaps (ppy/osu#19678 by @peppy)

    Testing

    • Update interactive visual test runs to use development directory (ppy/osu#19717 by @peppy)
    • Use local httpbin instance on CI runs (ppy/osu-framework#5356 by @smoogipoo)
    • Fix div-by-zero in SongProgress when no object duration could be calculated (ppy/osu#19768 by @peppy)
    • Update some clock tests to use constraint-based assertions (ppy/osu#19773 by @peppy)
    • Fix running TestScenePlayerLoader interactively leaving volume in a bad state (ppy/osu#19796 by @peppy)
    • Fix flaky quick retry test (ppy/osu#19815 by @smoogipoo)
    • Refactor some tests (ppy/osu#19817 by @peppy)
    • Fix some backwards asserts (ppy/osu#19833 by @smoogipoo)
    • Update TestSceneLeadIn to use new assert style (ppy/osu#19838 by @peppy)

    Tooling

    • Generate and upload symbol packages to nuget (ppy/osu-framework#5346 by @smoogipoo)
    • Version realm files for debug executions (ppy/osu#19586 by @peppy)
      • To make it easier for developers to test out pull requests which bump the realm schema version, realm files are now stored with the schema version in the filename.
    • Fix possible null reference inspection (ppy/osu#19708 by @smoogipoo)
    • Upgrade LocalisationAnalyser and disable warning (ppy/osu#19827 by @smoogipoo)
    • Sourcelink improvements (ppy/osu-framework#5365 by @smoogipoo)
    • Ensure appveyor discovers .snupkg files (ppy/osu-framework#5367 by @smoogipoo)

    UI

    Tweak intro sequence timings when osu! theme song is disabled (ppy/osu#19812 by @peppy)

    This change has the music track start at its preview point, and also fade in at a more correct timing. Only noticeable if you have the "osu! theme music" disabled.

    https://user-images.githubusercontent.com/191335/185783236-93cab9b4-a20d-4343-bb8d-67e30e6b09bb.mp4

    Smaller changes

    • Fix avatar potentially not loading in LoginOverlay due to misordered events (ppy/osu#19706 by @peppy)
    • Fix playlist overlay showing new imports when they don't match collection filter (ppy/osu#19718 by @peppy)
    • Fix images not being displayed in comments (ppy/osu#19746 by @bastianpedersen)
    • Add samples for text selection (ppy/osu-resources#208 by @nekodex)
      • Can't here these yet, will arrive in the next release!

    UX

    Reorganise global bindings and split out overlay bindings to make things easier to find (ppy/osu#19661 by @peppy)

    Before:

    osu! 2022-08-09 at 08 09 37

    After:

    osu! 2022-08-09 at 08 02 56

    Add keybind for showing own profile (ppy/osu#19657 by @novialriptide)

    Defaults to Ctrl+P

    New Contributors

    • @bastianpedersen made their first contribution in https://github.com/ppy/osu/pull/19746
    • @BlauFx made their first contribution in https://github.com/ppy/osu/pull/19594
    • @OliBomby made their first contribution in https://github.com/ppy/osu/pull/19782

    Full Changelog: https://github.com/ppy/osu/compare/2022.810.2...2022.821.0

    Source code(tar.gz)
    Source code(zip)
    install.exe(141.73 MB)
    osu.app.Apple.Silicon.zip(144.55 MB)
    osu.app.Intel.zip(147.36 MB)
    osu.AppImage(136.26 MB)
    osu.AppImage.zsync(238.66 KB)
    osulazer-2022.810.0-delta.nupkg(1.71 MB)
    osulazer-2022.810.2-delta.nupkg(541.93 KB)
    osulazer-2022.816.0-delta.nupkg(439.70 KB)
    osulazer-2022.821.0-delta.nupkg(2.79 MB)
    osulazer-2022.821.0-full.nupkg(141.41 MB)
    RELEASES(409 bytes)
    sh.ppy.osulazer.apk(173.46 MB)
  • 2022.816.0(Aug 16, 2022)

  • 2022.810.2(Aug 10, 2022)

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

    Online

    Use a placeholder user with the correct username during login process (ppy/osu#19662 by @peppy)

    This allows for various components (like gameplay) to obtain a correct username even if the API is not yet in a connected state. The most common case is during startup, where a connection may not have been established yet, but the user's username was restored from their config file.

    Local scores will now have the correct username (although avatar etc. will be missing, which I think it fine) even if the API is not yet connected. Previously, they would show up as "Guest".

    Reliability

    Fix crash when minimising while fullscreen on windows (ppy/osu-framework#5344 by @peppy)

    Unfortunate change in behaviour of a library we use (SDL) :(.

    Fix crash when attempting to import on mobile platforms (ppy/osu#19677 by @peppy)

    Regression due to unrelated code changes.

    Smaller changes

    • Handle cancellation at more points during Player initialisation (ppy/osu#19669 by @peppy)

    Full Changelog: https://github.com/ppy/osu/compare/2022.810.0...2022.810.2

    Source code(tar.gz)
    Source code(zip)
    install.exe(141.60 MB)
    osu.app.Apple.Silicon.zip(144.43 MB)
    osu.app.Intel.zip(147.24 MB)
    osu.AppImage(136.11 MB)
    osu.AppImage.zsync(238.39 KB)
    osulazer-2022.723.0-delta.nupkg(1.43 MB)
    osulazer-2022.731.1-delta.nupkg(1.24 MB)
    osulazer-2022.810.0-delta.nupkg(1.71 MB)
    osulazer-2022.810.2-delta.nupkg(541.93 KB)
    osulazer-2022.810.2-full.nupkg(141.27 MB)
    RELEASES(410 bytes)
    sh.ppy.osulazer.apk(172.61 MB)
  • 2022.810.0(Aug 10, 2022)

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

    Code Quality

    • Remove nullable disable annotation in mods for osu ruleset. (ppy/osu#19407 by @andy840119)
    • Remove nullable disable annotation in audio namespace (ppy/osu#19500 by @andy840119)
    • Update nullability specifications in osu!catch and osu!taiko mods (ppy/osu#19534 by @andy840119)
    • Improve IBeatSyncProvider interface and reduce beatmap track dependence (ppy/osu#19548 by @peppy)
      • As a preliminary step to moving out more of the clock/offset logic to a higher level, I want to start by reducing dependence on WorkingBeatmap.Track. Most of the usages outside of editor/player are for beat sync purposes (ie. animating various components), so I've gone through each of these usages and removed any references to the beatmap itself.
    • Remove nullable disable in the osu.Desktop (ppy/osu#19552 by @andy840119)
    • Clean up SoloScoreInfo serialised output (ppy/osu#19575 by @smoogipoo)
    • Remove nullable disable annotation in the clock namespace (ppy/osu-framework#5337 by @andy840119)
    • Fix possible null assignment inspection in TestScenePreviewTrackManager (ppy/osu#19635 by @frenzibyte)
    • Don't serialise empty mod settings (ppy/osu#19582 by @smoogipoo)
    • Apply IRenderer changes (ppy/osu#19560 by @smoogipoo)
    • Fix typo in IBindable xmldoc (ppy/osu-framework#5340 by @peppy)
    • Simplify task logic in ModPresetColumn (ppy/osu#19640 by @peppy)
    • Remove nullable disable annotation in the threading namespace. (ppy/osu-framework#5338 by @andy840119)

    Framework

    • Internalise vertex batches and expose via IVertexBatch (ppy/osu-framework#5325 by @smoogipoo)
    • Internalise FrameBuffer and expose via IFrameBuffer (ppy/osu-framework#5326 by @smoogipoo)
    • Internalise Shader and expose via IShader (ppy/osu-framework#5327 by @smoogipoo)
    • Internalise TextureGL and rewrite Texture to take its role (ppy/osu-framework#5330 by @smoogipoo)
    • Remove GLWrapper and move implementation to IRenderer (ppy/osu-framework#5332 by @smoogipoo)
    • Move vertices out of the OpenGL namespace (ppy/osu-framework#5336 by @smoogipoo)

    Gameplay

    Fix circular song progress display incorrectly blocking mouse input from gameplay (ppy/osu#19564 by @peppy)

    https://user-images.githubusercontent.com/191335/183820458-0625897c-3216-42ea-83a8-3f19c77cae27.mp4

    Gameplay (osu!)

    Imitate osu!stable's slider followcircle behaviour at ticks (ppy/osu#19262 by @goodtrailer)

    This change is most visible in two ways:

    https://user-images.githubusercontent.com/191335/183820501-7d15d763-610c-419e-b56f-fa5892be0b01.mp4

    The default skin will now bounce when reaching a tick, just like classic skins.

    https://user-images.githubusercontent.com/191335/183820543-7999eddb-9af7-43d9-bc88-1c1e1c4087d2.mp4

    Classic skins will now correctly wait until the next tick before dismissing the follow circle.

    Add "strength" setting for wiggle mod (ppy/osu#16589 by @mk56-spn)

    https://user-images.githubusercontent.com/191335/183820600-cd0caf98-3bf9-4ee5-8f60-e6c3b3bd1b5f.mp4

    Gameplay (osu!mania)

    Adjust visuals of osu!mania barlines to be less present (ppy/osu#19642 by @peppy)

    Roughly matches the new design. Metrics adjusted to fit with the existing design. This also makes also barlines less opaque than before. We'll continue to adjust as the new gameplay designs are introduced.

    https://user-images.githubusercontent.com/191335/183820625-a32b82c9-589f-4063-8246-d0454785846d.mp4

    Gameplay (osu!taiko)

    Allow osu!taiko hitsounds to fall back to classic skin rather than use non-taiko samples (ppy/osu#19467 by @frenzibyte)

    Smaller changes

    • Add taiko hitsound samples for the "drum" sampleset (ppy/osu-resources#206 by @frenzibyte)

    Multiplayer

    Fix multi-spectator potentially getting stuck for passed players (hotfix) (ppy/osu#19597 by @frenzibyte)

    https://user-images.githubusercontent.com/191335/183820662-340d7a34-87c1-4c82-b77c-dca2d3dfcc5d.mp4

    Smaller changes

    • Fix host room status incorrectly showing "ended" after playing (ppy/osu#19668 by @smoogipoo)

    Performance

    Adjust pooling to fix stutters during some special beatmaps (ppy/osu#19587 by @peppy)

    This basically means we are preloading more hitobjects. For weird edge cases like beatmaps containing sliders with 1,000 repeats or ticks, preloading is now heuristically aware and will prepare for the worst.

    This should add minimal overhead during beatmap load but greatly smooth performance on more intensive beatmaps.

    Smaller changes

    • Fix preview tracks at the beatmap listing not being cleaned up correctly (ppy/osu#19583 by @peppy)

    Platform

    Refactor android input handling (ppy/osu-framework#5317 by @Susko3)

    This is especially important if the game/device is lagging. Previously we were dropping a lot of events. I expect the UI to feel marginally smoother with historic handling, and scrolling/dragging to be more precise.

    Update SDL (ppy/osu-framework#5339 by @peppy)

    Includes a fix for startup crashes on macOS with certain display configurations.

    Smaller changes

    • Fix game folder migration potentially failing on macOS (ppy/osu#19563 by @peppy)

    Reliability

    Fix common editor crash when returning from testing a beatmap (ppy/osu#19516 by @peppy)

    Smaller changes

    • Fix ModelBackedDrawable attempting to mutate children after disposal (ppy/osu-framework#5329 by @peppy)
    • Fix migration failing on single file copy failure (ppy/osu#19514 by @peppy)
    • Fix playlist settings reference leak due to unsafe binding (ppy/osu#19536 by @frenzibyte)
    • Guard against work being queued on an already-disposed ThreadedTaskScheduler (ppy/osu-framework#5320 by @peppy)

    Skinning

    Ensure skin samples are looked up in correct order (ppy/osu#19574 by @smoogipoo)

    For skins which contained '.ogg' files, the lookup order may have meant that the skin samples were never used.

    Song Select

    Fix newly imported beatmaps not sorting into place correctly (ppy/osu#19532 by @frenzibyte)

    Show "locally modified" pill when local modifications have been made (ppy/osu#19529 by @peppy)

    https://user-images.githubusercontent.com/191335/183821173-ed6d9690-ea44-49ed-8894-c6377e6e8b99.mp4

    Add mod preset column to solo mod select overlay (ppy/osu#19622 by @bdach)

    https://user-images.githubusercontent.com/191335/183821214-df357e43-a68f-4ec5-919b-22efa933e53e.mp4

    This is only supported in solo for the time being, as it is the simplest case.

    Smaller changes

    • Add persistence of mod presets to realm (ppy/osu#19510 by @bdach)
    • Fix song select not updating selected beatmap card on editor resume (ppy/osu#19479 by @frenzibyte)
      • Along with all other components, selected beatmap card will get refreshed on screen resume to ensure it doesn't become out of sync.
    • Add flow for deleting mod presets (ppy/osu#19613 by @bdach)
    • Fix spurious sample playbacks from already-removed mod preset panels (ppy/osu#19651 by @bdach)

    Testing

    • Add test coverage of deserialisation of skin layouts (ppy/osu#19504 by @peppy)
    • Add more missing realm Refresh() calls to new beatmap import tests (ppy/osu#19517 by @peppy)
    • Change all filter control button state test to until steps (ppy/osu#19570 by @peppy)
    • Safely restore TPL capacity after test failures (ppy/osu-framework#5334 by @smoogipoo)
    • Fix gameplay tests crashing when run multiple times (ppy/osu#19656 by @smoogipoo)
    • Refactor dodgy test to avoid TPL exhaustion (ppy/osu-framework#5342 by @smoogipoo)
    • Update multiple tests to use new assert output for easier to understand failures (ppy/osu#19664 by @peppy)
      • Splitting out some of the larger auxiliary changes from incoming clock refactorings.

    Tooling

    • Isolate development builds' storage from release builds (ppy/osu#19513 by @peppy)
      • I've also updated the game title/name to better know when an instance is running in development mode.
    • Fix GetLocalisableDescription() crashing on unnamed enum values (ppy/osu-framework#5335 by @smoogipoo)
    • Fix TestBrowser potentially crashing from null ref on quickly switching scenes (ppy/osu-framework#5333 by @peppy)
    • Unify usages of GetCultureInfo and fix LocalisationManager throwing on invalid culture (ppy/osu-framework#5341 by @Susko3)

    UI

    Display readable error message when reaching download limit (ppy/osu#19522 by @frenzibyte)

    Display connecting / failing states on toolbar user display (ppy/osu#19658 by @peppy)

    https://user-images.githubusercontent.com/191335/183821251-0b79300e-0467-414e-a251-316c4b9a4a62.mp4

    Smaller changes

    • Prevent tags overflowing on beatmap info overlay (ppy/osu#19508 by @gutyina70)
      • This isn't the final solution (pending larger design changes), but at least it looks more correct.
    • Fix broken sheared button autosizing logic (ppy/osu#19538 by @bdach)
    • Hide F rank from the beatmap overlay filter (ppy/osu#19535 by @naipofo)
    • Fix textbox initial commit of empty string being considered "new" due to null equality (ppy/osu-framework#5331 by @peppy)
    • Add missing icons to UserProfileRecentSection (ppy/osu#19323 by @LukynkaCZE)
      • image
    • Unify implementations of deletion dialogs (ppy/osu#19612 by @bdach)
    • Implement selection logic for mod preset panels (ppy/osu#19621 by @bdach)

    UX

    Prevent capturing arrow keys on playlist creation (ppy/osu#19507 by @naipofo)

    You can now once again use the arrow keys to navigate song select during playlist creation.

    Don't clear chat overlay textbox when pressing "back" key binding (ppy/osu#19543 by @peppy)

    Fix FPS counter disappearing even when hovered (ppy/osu#19637 by @its5Q)

    The intention was for it to stay visible when hovering, in case a user wants to monitor it for longer.

    Fix incorrect FPS damping implementation (ppy/osu#19639 by @peppy)

    Resolves a case where the FPS display would show way too high values after returning to the game from a suspended state. Also fixes the frame time display not updating to new values as fast as intended.

    Smaller changes

    • Fix collection import not showing progress notification (ppy/osu#19638 by @peppy)

    New Contributors

    • @gutyina70 made their first contribution in https://github.com/ppy/osu/pull/19508
    • @its5Q made their first contribution in https://github.com/ppy/osu/pull/19637

    Full Changelog: https://github.com/ppy/osu/compare/2022.731.1...2022.810.0

    Source code(tar.gz)
    Source code(zip)
    install.exe(141.64 MB)
    osu.app.Apple.Silicon.zip(144.44 MB)
    osu.app.Intel.zip(147.25 MB)
    osu.AppImage(136.13 MB)
    osu.AppImage.zsync(238.43 KB)
    osulazer-2022.719.0-delta.nupkg(769.03 KB)
    osulazer-2022.723.0-delta.nupkg(1.43 MB)
    osulazer-2022.731.1-delta.nupkg(1.24 MB)
    osulazer-2022.810.0-delta.nupkg(1.71 MB)
    osulazer-2022.810.0-full.nupkg(141.31 MB)
    RELEASES(410 bytes)
    sh.ppy.osulazer.apk(172.61 MB)
  • 2022.731.1(Jul 30, 2022)

    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 (ppy/osu#19367 by @smoogipoo)
    • Improve log output for too-many-scheduled-tasks (ppy/osu-framework#5322 by @peppy)
    • Remove no longer necessary API score models (ppy/osu#19379 by @frenzibyte)
    • Remove nullable disable annotation in mods for catch ruleset. (ppy/osu#19249 by @andy840119)
    • Move LegacyComboCounter to osu.Game.Skinning (ppy/osu#19426 by @LeNitrous)
    • Remove nullable disable annotation in mods for mania ruleset. (ppy/osu#19418 by @andy840119)
    • Remove nullable disable annotation in mods for taiko ruleset. (ppy/osu#19419 by @andy840119)
    • Add more comprehensive xmldoc for beatmap model classes (ppy/osu#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 (ppy/osu#19435 by @peppy)

    Database

    Fix multiple issues with beatmap updating (ppy/osu#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 (ppy/osu#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 (ppy/osu#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 (ppy/osu#19457 by @peppy)

    Gameplay

    Add osu!stable style circular song progress for legacy skins (ppy/osu#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 (ppy/osu#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 (ppy/osu#19466 by @naipofo)

    Online

    Attempt to fix spectator sending too slow for users with high latency (ppy/osu#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 (ppy/osu#19363 by @frenzibyte)
    • Fix beatmap updater potentially using outdated local metadata (ppy/osu#19440 by @peppy)

    Overlays

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

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

    Performance

    Refactor FPSCounter to not use scheduled tasks (ppy/osu#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 (ppy/osu#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 (ppy/osu#19324 by @peppy)
    • Fix OsuSliderBar throwing on negative draw width (ppy/osu#19345 by @frenzibyte)
    • Avoid potential realm fetch after disposal in StatisticsPanel (ppy/osu#19393 by @peppy)

    Song Select

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

    osu! 2022-07-25 at 06 48 38

    Smaller changes

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

    Testing

    • Fix background beatmap processor resetting star ratings in tests (ppy/osu#19312 by @frenzibyte)
    • Disable timeline test for now (ppy/osu#19368 by @smoogipoo)
    • Fix intermittent timeline zoom test failures (ppy/osu#19377 by @frenzibyte)
    • Avoid leaving left-over files after test run completes (ppy/osu#19392 by @peppy)
    • Don't show audio playback issue notification if debugger is attached (ppy/osu#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 (ppy/osu#19411 by @peppy)
    • Add realm refresh calls to fix intermittent test failures on new update tests (ppy/osu#19432 by @peppy)
    • Reduce calls to LoadTrack by implicitly running on test/dummy classes (ppy/osu#19441 by @peppy)
    • Fix intermittent HUD tests (ppy/osu#19443 by @smoogipoo)
    • Fix potential test failures due to Setup/SetUpSteps ordering (ppy/osu#19453 by @smoogipoo)
    • Move spectator begin/end playing to SubmittingPlayer (ppy/osu#19442 by @smoogipoo)
    • Add constrained assertions (ppy/osu-framework#5323 by @smoogipoo)
    • Ensure realm is in a good state before asserts in TestSceneFilterControl (ppy/osu#19454 by @peppy)
    • Fix potential nullref in TestSceneAutoplay check steps method (ppy/osu#19469 by @frenzibyte)

    UI

    Implement mod preset panels for mod select overlay (ppy/osu#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.

    https://user-images.githubusercontent.com/20418176/180319257-10d311c6-412f-4c5a-b49c-20e9742e93d1.mp4

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

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

    image

    Smaller changes

    • Implement basic appearance of mod preset column (ppy/osu#19349 by @bdach)
    • Update more places to support displaying unprocessed PP placeholder (ppy/osu#19372 by @frenzibyte)
    • Always allow selecting the top-most button in popups using the select binding (ppy/osu#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 (ppy/osu#19455 by @peppy)

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

    https://user-images.githubusercontent.com/191335/181986211-aa447202-4e68-4df3-a516-f610272a48b2.mp4

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

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

    New Contributors

    • @naipofo made their first contribution in https://github.com/ppy/osu/pull/19466

    Full Changelog: https://github.com/ppy/osu/compare/2022.723.0...2022.731.1

    Source code(tar.gz)
    Source code(zip)
    install.exe(141.20 MB)
    osu.app.Apple.Silicon.zip(144.02 MB)
    osu.app.Intel.zip(146.83 MB)
    osu.AppImage(135.70 MB)
    osu.AppImage.zsync(237.67 KB)
    osulazer-2022.716.1-delta.nupkg(1.75 MB)
    osulazer-2022.719.0-delta.nupkg(769.03 KB)
    osulazer-2022.723.0-delta.nupkg(1.43 MB)
    osulazer-2022.731.1-delta.nupkg(1.24 MB)
    osulazer-2022.731.1-full.nupkg(140.88 MB)
    RELEASES(410 bytes)
    sh.ppy.osulazer.apk(172.06 MB)
  • 2022.723.0(Jul 23, 2022)

    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 (ppy/osu#19226 by @peppy)
    • Remove nullable disable annotation in the mods. (ppy/osu#19235 by @andy840119)
    • Change carousel terminology to not use Children / InternalChildren (ppy/osu#19268 by @peppy)
    • Cleanup pass on FPSCounter (ppy/osu#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 (ppy/osu#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 (ppy/osu#19236 by @peppy)

    Weirdly was not brought to our attention until now!

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

    Before:

    https://user-images.githubusercontent.com/191335/179767918-78ff4680-da4b-49c0-adb8-cdcd7528ee8e.mp4

    After:

    https://user-images.githubusercontent.com/191335/179767658-1192ac42-4e14-4988-848b-dd6171faba1c.mp4

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

    Adds missing visual feedback when saving.

    https://user-images.githubusercontent.com/48604271/179846239-7cf8eefc-94ab-4f61-87c4-a20c7c4ab02f.mp4

    Smaller changes

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

    Framework

    • Update OpenTabletDriver to latest version (ppy/osu-framework#5319 by @peppy)

    Gameplay

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

    Gameplay (osu!)

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

    Before:

    https://user-images.githubusercontent.com/191335/179185413-6a1d4143-34d9-447f-8614-1578ace97eb8.mp4

    After:

    https://user-images.githubusercontent.com/191335/179185257-8fdd4c68-7bd1-4ce3-b010-bf3b457ed5ed.mp4

    Smaller changes

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

    Gameplay (osu!taiko)

    Add basic touch support for osu!taiko (ppy/osu#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!

    https://user-images.githubusercontent.com/191335/180597739-bdeaa6cc-7fa3-4014-bb9d-a1415338a6f8.MOV

    Performance point balance changes (ppy/osu#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 (ppy/osu#17622 by @frenzibyte)

    Mods

    Remove score multiplier on difficulty-increasing mods with customised settings (ppy/osu#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 (ppy/osu#19234 by @Cwazywierdo)

    Smaller changes

    • Fix creating multiplayer game during server migration not joining new room correctly (ppy/osu#19189 by @peppy)
      • https://user-images.githubusercontent.com/191335/179398381-a76e5805-e43c-4663-8fd3-da7d554a7a48.mp4

    Overlays

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

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

    https://user-images.githubusercontent.com/22781491/179854821-7a8c7b71-9c0a-4495-a93f-17dfff2cd343.mp4

    Smaller changes

    • Fix wiki overlay not handling path redirection properly (ppy/osu#19246 by @frenzibyte)
      • This is noticeable on pages like https://osu.ppy.sh/wiki/en/osu!_File_Formats (copied from main page) which redirect to https://osu.ppy.sh/wiki/en/Client/File_formats. The target path is provided in the APIWikiPage structure, making redirection simple to handle.

    Performance

    Reduce Bindable allocations in hitobject classes via lazy initialisation (ppy/osu#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

    • Fix startup crash on Android verison before 8.0 Oreo (ppy/osu-framework#5315 by @Susko3)
    • Add mention of "compatibility mode" in windows version check error message (ppy/osu#19228 by @peppy)

    Reliability

    • Replace culture-sensitive humanizer methods with fixed local reimplementations (ppy/osu#19221 by @bdach)
    • Fix bad access to Waveform.GetPoints() if waveform changes during regeneration (ppy/osu-framework#5316 by @peppy)
    • Fix BeginPlayingInternal firing actual errors when beatmap not available online (ppy/osu#19227 by @peppy)
    • Fix unsafe value access in WaveformGraph async resampling logic (ppy/osu-framework#5318 by @frenzibyte)

    Results

    Add additional SFX to the results screen (ppy/osu#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?

    https://user-images.githubusercontent.com/272140/180435636-a9f11c11-3590-4ea5-9dcc-56b359d225de.mov

    Song Select

    Show update button in beatmap carousel when beatmaps have online changes (ppy/osu#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.

    https://user-images.githubusercontent.com/191335/179715519-78cab07f-1aed-4d20-b286-645c8bbc32e0.mp4

    Add ability to sort and filter by ranked date (ppy/osu#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

    • Fix sorting mode not filling up to usable area in filter control (ppy/osu#19295 by @frenzibyte)
      • https://user-images.githubusercontent.com/22781491/180377486-2a292ba4-60a5-45a9-9afe-7b5bed3f5a82.mp4

    Testing

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

    UI

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

    video pending

    Add game-side FPS counter (ppy/osu#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.

    https://user-images.githubusercontent.com/191335/180018974-5e2b2af3-daa0-4eed-893e-ec3231f186c8.mp4

    Smaller changes

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

    UX

    • Fix OverlayContainer no longer blocking mouse move events (ppy/osu-framework#5313 by @frenzibyte)
    • Fix floating mouse position not running correctly in single thread mode (ppy/osu#19240 by @peppy)
    • Add the ability to save in the skin editor using system save hotkey (ppy/osu#19293 by @peppy)

    Full Changelog: https://github.com/ppy/osu/compare/2022.719.0...2022.723.0

    Source code(tar.gz)
    Source code(zip)
    install.exe(141.20 MB)
    osu.app.Apple.Silicon.zip(144.01 MB)
    osu.app.Intel.zip(146.82 MB)
    osu.AppImage(135.68 MB)
    osu.AppImage.zsync(237.65 KB)
    osulazer-2022.709.1-delta.nupkg(368.70 KB)
    osulazer-2022.716.1-delta.nupkg(1.75 MB)
    osulazer-2022.719.0-delta.nupkg(769.03 KB)
    osulazer-2022.723.0-delta.nupkg(1.43 MB)
    osulazer-2022.723.0-full.nupkg(140.87 MB)
    RELEASES(409 bytes)
    sh.ppy.osulazer.apk(172.05 MB)
  • 2022.719.0(Jul 18, 2022)

    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

    • Make SoloScoreInfo.EndedAt non-null (ppy/osu#19210 by @peppy)
    • Replace Country class with enumeration (ppy/osu#19137 by @frenzibyte)
    • Remove countries.json map in tournament client and replace with Country enum (ppy/osu#19138 by @frenzibyte)

    Database

    Store user country for imported scores (ppy/osu#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 (ppy/osu#19175 by @frenzibyte)

    Smaller changes

    • Make "Autoplay" incompatible with "Adaptive Speed" (ppy/osu#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 (ppy/osu#19200 by @tsunyoku)
    • Fix "Cinema" mod not marking "Repel" as incompatible (ppy/osu#19201 by @tsunyoku)

    Online

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

    Regressed with the previous build.

    Smaller changes

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

    Reliability

    • Don't send ruleset configuration failures to sentry (ppy/osu#19196 by @peppy)
    • Fix Waveform generation failing when using "no sound" device (ppy/osu-framework#5310 by @peppy)
    • Fix zero width textbox throwing in updateImeWindowPosition() (ppy/osu-framework#5311 by @Susko3)
    • Fix potential crash when downloading beatmaps while in a multiplayer room (ppy/osu#19211 by @peppy)

    Results

    Change retry button icon to a more suiting icon (ppy/osu#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

    • Fix inconsistent casing of statistic names (ppy/osu#19209 by @3stantedja)

    Settings

    Add Touch input handler settings section (ppy/osu#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 (ppy/osu#19212 by @peppy)

    UX

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

    New Contributors

    • @NotGumballer91 made their first contribution in https://github.com/ppy/osu/pull/19195
    • @3stantedja made their first contribution in https://github.com/ppy/osu/pull/19209

    Full Changelog: https://github.com/ppy/osu/compare/2022.716.1...2022.719.0

    Source code(tar.gz)
    Source code(zip)
    install.exe(141.04 MB)
    osu.app.Apple.Silicon.zip(143.84 MB)
    osu.app.Intel.zip(146.65 MB)
    osu.AppImage(135.52 MB)
    osu.AppImage.zsync(237.35 KB)
    osulazer-2022.709.0-delta.nupkg(1.18 MB)
    osulazer-2022.709.1-delta.nupkg(368.70 KB)
    osulazer-2022.716.1-delta.nupkg(1.75 MB)
    osulazer-2022.719.0-delta.nupkg(769.03 KB)
    osulazer-2022.719.0-full.nupkg(140.72 MB)
    RELEASES(409 bytes)
    sh.ppy.osulazer.apk(171.85 MB)
  • 2022.716.1(Jul 16, 2022)

    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 (ppy/osu#19059 by @andy840119)
    • Add log output for custom storage usage (ppy/osu#19096 by @peppy)

    Database

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

    Editor

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

    Gameplay

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

    https://user-images.githubusercontent.com/191335/179367646-a108dec4-754a-45ed-b29c-3a57fe6b5516.mp4

    Gameplay (osu!)

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

    https://user-images.githubusercontent.com/47010459/172435116-6b09a48c-6fd6-4abb-9e5f-e96ab3565184.mp4

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

    Since https://github.com/ppy/osu/pull/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 (ppy/osu#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 (ppy/osu#19084 by @ggliv)
    • Fix potential crash in editor from transform time going below zero (ppy/osu#19132 by @peppy)
    • Change "single tap" mod acronym to not conflict with "strict tracking" (ppy/osu#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

    • Update translations (ppy/osu-resources#203 by @peppy)

    Online

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

    Show leaderboard scores from new data source (ppy/osu#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 (ppy/osu#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 (ppy/osu#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 (ppy/osu#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 (ppy/osu#19087 by @frenzibyte)
      • Noticed while reading notifications and looking at https://github.com/ppy/osu/pull/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 (ppy/osu#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 (ppy/osu#19079 by @peppy)
    • Fix drawable mutation from disposal thread (ppy/osu#19104 by @peppy)
    • Fix potential crash when exiting editor test mode (ppy/osu#19110 by @peppy)

    Settings

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

    Song Select

    Add "last played" sort mode to song select (ppy/osu#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.

    https://user-images.githubusercontent.com/191335/178679829-89f0a4ac-0488-45e9-975b-27b65b54c567.mp4

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

    https://user-images.githubusercontent.com/22781491/179146189-89c8053d-c4e0-4af5-bb16-aa269a993f94.mp4

    Smaller changes

    • Update mod icon colors (ppy/osu#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" (ppy/osu#19129 by @peppy)

    Testing

    • Fix running Bass tests causing deadlocks on Linux (ppy/osu-framework#5302 by @smoogipoo)
    • Free Bass device 0 on Linux (ppy/osu-framework#5303 by @smoogipoo)
    • Fix dialog overlay potentially pushing dialog while not loaded (ppy/osu#19114 by @frenzibyte)

    Tournament

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

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

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

    https://user-images.githubusercontent.com/191335/178691005-09681d0d-b509-4cca-a223-ac443566f86c.mp4

    Smaller changes

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

    UX

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

    https://user-images.githubusercontent.com/191335/178757418-cc5929dd-3716-4299-8ac0-fba184ea816a.mp4

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

    https://user-images.githubusercontent.com/22781491/179123652-440fa82e-7f4f-4d81-8a30-b1cc024de45a.mp4

    Smaller changes

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

    New Contributors

    • @Ludio235 made their first contribution in https://github.com/ppy/osu/pull/19065
    • @novialriptide made their first contribution in https://github.com/ppy/osu/pull/19038
    • @Cwazywierdo made their first contribution in https://github.com/ppy/osu/pull/19039
    • @tsunyoku made their first contribution in https://github.com/ppy/osu/pull/19089
    • @cdwcgt made their first contribution in https://github.com/ppy/osu/pull/18785

    Full Changelog: https://github.com/ppy/osu/compare/2022.709.1...2022.716.1

    Source code(tar.gz)
    Source code(zip)
    install.exe(141.04 MB)
    osu.app.Apple.Silicon.zip(143.84 MB)
    osu.app.Intel.zip(146.65 MB)
    osu.AppImage(135.51 MB)
    osu.AppImage.zsync(237.35 KB)
    osulazer-2022.704.0-delta.nupkg(1.42 MB)
    osulazer-2022.709.0-delta.nupkg(1.18 MB)
    osulazer-2022.709.1-delta.nupkg(368.70 KB)
    osulazer-2022.716.1-delta.nupkg(1.75 MB)
    osulazer-2022.716.1-full.nupkg(140.71 MB)
    RELEASES(410 bytes)
    sh.ppy.osulazer.apk(171.84 MB)
  • 2022.709.1(Jul 8, 2022)

    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 https://github.com/ppy/osu/pull/19050

    Full Changelog: https://github.com/ppy/osu/compare/2022.709.0...2022.709.1

    Source code(tar.gz)
    Source code(zip)
    install.exe(140.99 MB)
    osu.app.Apple.Silicon.zip(143.78 MB)
    osu.app.Intel.zip(146.59 MB)
    osu.AppImage(135.46 MB)
    osu.AppImage.zsync(237.26 KB)
    osulazer-2022.630.0-delta.nupkg(474.04 KB)
    osulazer-2022.704.0-delta.nupkg(1.42 MB)
    osulazer-2022.709.0-delta.nupkg(1.18 MB)
    osulazer-2022.709.1-delta.nupkg(368.70 KB)
    osulazer-2022.709.1-full.nupkg(140.66 MB)
    RELEASES(409 bytes)
    sh.ppy.osulazer.apk(171.75 MB)
  • 2022.709.0(Jul 8, 2022)

    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

    • Remove nullable disable annotation in the ruleset filter. (ppy/osu#18990 by @andy840119)
    • Full NRT pass on Android (ppy/osu-framework#5286 by @Susko3)
      • Includes everything except AndroidInputHandlers as those will be covered separately.
    • Set proper access modifier on ScheduledDelegate.State (ppy/osu-framework#5291 by @Susko3)
    • Remove the nullable disable annotation in the benchmark project (ppy/osu-framework#5292 by @andy840119)
    • Fix incorrect case in CatcherArea parameter (ppy/osu#19013 by @peppy)
    • Enable NRT and simplify LineBufferedReader (ppy/osu#19014 by @peppy)
    • Remove class constraint on AsNonNull() (ppy/osu-framework#5296 by @smoogipoo)
    • Change AsNonNull to NotNull return (ppy/osu-framework#5298 by @smoogipoo)
      • It seems this is better fit for this method for non-NRT contexts. Will resolve inspections such as https://github.com/ppy/osu/runs/7229529245?check_suite_focus=true. Also still seems to work with the new bindable NRT work in https://github.com/ppy/osu-framework/pull/5099.

    Database

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

    Smaller changes

    • Fix realm backup creation failing when run from RealmAccess constructor (ppy/osu#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 (ppy/osu#19006 by @peppy)
    • Add nested transaction handling to realm helper methods (ppy/osu#19027 by @peppy)

    Editor

    • Fix editor saving not updating BeatmapSetInfo's hash (ppy/osu#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

    • Expose async track Start/Stop/Play/Restart methods (ppy/osu-framework#5294 by @peppy)
    • Add support for showing hidden items in DirectorySelectors (ppy/osu-framework#5251 by @ggliv)
      • Will be implemented osu!-side soon.

    Gameplay

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

    Gameplay (osu!)

    • Fix default spinner's accent colur not resetting after rewind (ppy/osu#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 (ppy/osu#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 (ppy/osu#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 (ppy/osu#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 (ppy/osu#19026 by @peppy)

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

    Fix background loading excessively on startup (ppy/osu#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 (ppy/osu#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 (ppy/osu#18993 by @Joehuu)
    • Fix song select placeholder not showing convert hint for custom rulesets (ppy/osu#19023 by @peppy)

    Testing

    • Change test GC to not force run by default (ppy/osu-framework#5289 by @peppy)
    • Improve asserts in TestSeekPerformsInGameplayTime to be more descriptive (ppy/osu#19020 by @frenzibyte)
    • Fix flaky tests not running at all with environment variable set (ppy/osu#19021 by @frenzibyte)
    • Fix intermittent MusicController tests (ppy/osu#19041 by @smoogipoo)

    Tooling

    • Add statistics display for MemoryCachingComponents (ppy/osu#19018 by @peppy)
    • Fix DrawVisualiser blocking positional input while not searching (ppy/osu-framework#5297 by @frenzibyte)

    UX

    • Allow searching for "skins" to find current skin setting (ppy/osu#19028 by @peppy)
    • Allow MIDI and joysticks to trigger the osu! cookie on the initial screen (ppy/osu#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 (ppy/osu#19010 by @peppy)
    • Add local handling of cases where a beatmap's file cannot be found on disk (ppy/osu#19022 by @peppy)
      • Better error messaging.

    Full Changelog: https://github.com/ppy/osu/compare/2022.704.0...2022.709.0

    Source code(tar.gz)
    Source code(zip)
    install.exe(140.99 MB)
    osu.app.Apple.Silicon.zip(143.78 MB)
    osu.app.Intel.zip(146.59 MB)
    osu.AppImage(135.46 MB)
    osu.AppImage.zsync(237.26 KB)
    osulazer-2022.628.0-delta.nupkg(1.40 MB)
    osulazer-2022.630.0-delta.nupkg(474.04 KB)
    osulazer-2022.704.0-delta.nupkg(1.42 MB)
    osulazer-2022.709.0-delta.nupkg(1.18 MB)
    osulazer-2022.709.0-full.nupkg(140.66 MB)
    RELEASES(410 bytes)
    sh.ppy.osulazer.apk(171.75 MB)
  • 2022.704.0(Jul 3, 2022)

    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 (ppy/osu#18970 by @nekodex)

    Code Quality

    • Move joystick-axis-to-button simulation out of JoystickHandler (ppy/osu-framework#5278 by @Susko3)
    • Remove nullable disable annotation in the utils namespace (ppy/osu#18957 by @andy840119)
    • Remove nullable disable annotation in the extension namespace (ppy/osu#18958 by @andy840119)
    • Separate slider ball and followcircle skinnables into default/legacy classes (ppy/osu#18945 by @goodtrailer)
    • Remove nullable disable annotation in the utils namespace (ppy/osu-framework#5282 by @andy840119)
    • Remove nullable disable annotation in replays namespace (ppy/osu#18985 by @andy840119)

    Database

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

    Smaller changes

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

    Framework

    • Remove iOS build CI workaround (ppy/osu#18967 by @frenzibyte)
    • Add code autocomplete blacklist (ppy/osu-framework#5285 by @Susko3)
    • Fix some user-provided tournament resources not displaying (ppy/osu-framework#5287 by @frenzibyte)
      • Regressed in a recent release.

    Gameplay

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

    Send beatmap hash to server on solo score request (ppy/osu#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

    • Fix converting "inherited" mods to legacy mods (ppy/osu#18948 by @smoogipoo)

    Gameplay (osu!)

    • Imitate stable's slider ball fade in/out animation (ppy/osu#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 (ppy/osu#18803 by @Joehuu)

    Multiplayer

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

    Smaller changes

    • Fix slider bar drags not being relative to mouse down position (ppy/osu-framework#5277 by @peppy)

    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

    • Fix potential crash in BeatmapLeaderboard during rapid refresh operations (ppy/osu#18964 by @peppy)
    • Use null-forgiving operator for AsNonNull rather than assertion (ppy/osu-framework#5288 by @frenzibyte)

    Song Select

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

    Also now displays multiple suggestions at once.

    https://user-images.githubusercontent.com/191335/176837463-04dd2f55-6392-40e8-851f-b47916759d9f.mp4

    Move star difficulty filter to song select (ppy/osu#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.

    https://user-images.githubusercontent.com/191335/176836029-f860ff4c-8153-4737-8a59-b164fa635c67.mp4

    Testing

    • Fix crash on visual testing TestSceneChatOverlay due to null user (ppy/osu#18939 by @peppy)
    • Fix flaky song select placeholder test by changing ruleset post-display (ppy/osu#18941 by @peppy)
    • Attempt to fix editor navigation test failures again (ppy/osu#18944 by @bdach)
    • Attempt to fix flaky TestSceneAutoplay test (ppy/osu#18947 by @smoogipoo)
    • Ensure PlaylistItem's beatmap is not null (ppy/osu#18949 by @smoogipoo)
    • Fix directory cleanup occurring too early during realm tests (ppy/osu#18953 by @peppy)
    • Fix various multiplayer test failures due to not waiting for ongoing operation (ppy/osu#18955 by @peppy)
    • Fix test sometimes referencing old ModSelect object (ppy/osu#18966 by @smoogipoo)
    • Fix cross-pollution of server- and client-side multiplayer objects in tests (ppy/osu#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 (ppy/osu#18982 by @peppy)
    • Fix BeatmapInfoWedge test potentially failing due to quick initial load (ppy/osu#18981 by @peppy)
    • Mark, document and silence remaining flaky tests on standard CI runs (ppy/osu#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 (ppy/osu#18986 by @peppy)

    Full Changelog: https://github.com/ppy/osu/compare/2022.630.0...2022.704.0

    Source code(tar.gz)
    Source code(zip)
    install.exe(140.98 MB)
    osu.app.Apple.Silicon.zip(143.77 MB)
    osu.app.Intel.zip(146.58 MB)
    osu.AppImage(135.45 MB)
    osu.AppImage.zsync(237.24 KB)
    osulazer-2022.621.0-delta.nupkg(2.20 MB)
    osulazer-2022.628.0-delta.nupkg(1.40 MB)
    osulazer-2022.630.0-delta.nupkg(474.04 KB)
    osulazer-2022.704.0-delta.nupkg(1.42 MB)
    osulazer-2022.704.0-full.nupkg(140.66 MB)
    RELEASES(410 bytes)
    sh.ppy.osulazer.apk(171.75 MB)
Owner
ppy
osu! and everything osu!
ppy
A little arcade game that uses SwiftUI as a game engine.

SwiftUI Game A little arcade game that uses SwiftUI as a game engine :) Just copy the code into the Blank playgroundbook in Swift Playgrounds app on i

Roman Gaditskiy 10 Sep 30, 2022
The one and only open source 4X MMO mid-core strategy game for iOS. Similar to Game of War and Mobile Strike

4X MMO Strategy Game for iOS I have spent 4 years of my life and a significant amount of money into completing this game and I hope you enjoy it. For

shankqr 69 Nov 16, 2022
🦁 🃏 📱 An animal matching puzzle card game– built with turn-based game engine boardgame.io and React-Native + React-Native-Web

Matchimals.fun an animal matching puzzle card game ?? ?? ?? Download for iOS from the App Store ?? Download for Android from the Google Play Store ??

iGravity Studios 137 Nov 24, 2022
Switshot is a game media manager helps you transfer your game media from Nintendo Switch to your phone, and manage your media just few taps.

Switshot is a game media manager helps you transfer your game media from Nintendo Switch to your phone, and manage your media just few taps.

Astrian Zheng 55 Jun 28, 2022
Gravity Switch - A dynamic game that integrates swiping and tapping to create a fun interactive game

GravitySwitch Gravity Switch is a dynamic game that integrates swiping and tappi

null 3 Nov 19, 2022
IOS Spin Game - A simple spin game using SwiftUI

IOS_Spin_Game A simple spin game using Swift UI.

Md. Masum Musfique 4 Mar 23, 2022
FlagGuess-Game - A game to collect points by guessing flags

Flag Guess Game A game to collect points by guessing flags! Wrong Choice

Ahmet Onur Sahin 3 Apr 18, 2022
CardGameEngine - Prototyping a game engine for the Bang card game

CardGameEngine Prototyping a game engine for the Bang card game. Features Engine is open source Powerful scripting language using JSON Card design is

stephtelolahy 5 Nov 22, 2022
Imagine Engine - a fast, high performance Swift 2D game engine for Apple's platforms

Welcome to Imagine Engine, an ongoing project that aims to create a fast, high performance Swift 2D game engine for Apple's platforms that is also a j

John Sundell 1.8k Jan 3, 2023
🖐 Memory game with hand gesture recognition that will keep your brain in a good shape!

Hands I have always been interested in how I can improve my memory in addition to reading books, and once I came across an interesting technique relat

Tamerlan Satualdypov 35 Dec 19, 2022
Lambton College, 2nd Semester Final IOS Project (Star Wars) game

The game we developed for our project of the course advanced iOS application is based on a functioning of a real time shooting game, in which initiall

Suraj Devgan 6 Aug 18, 2022
Tic Tac Toe game developed in SwiftUI

TicTacToe Tic Tac Toe game developed in SwiftUI Requirements macOS 11.1 Big Sur Xcode 12.3 iOS 14 Getting Started Clone the Repository Royalty free au

Adesanya Segun 9 Sep 14, 2022
A game engine built with SDL and Swift.

Lark A game engine made with Swift and SDL. This is a pre-alpha work-in-progress. Don't try to use this unless you really know what you're doing. I ba

June Bash 41 Mar 11, 2022
The purpose of the color game is to find the right color without getting distracted. It is as difficult as it is fun.

Color Game The purpose of the color game is to find the right color without getting distracted. It is as difficult as it is fun. Getting Started Insta

MDS 7 Dec 13, 2022
The purpose of the color game is to find the right color without getting distracted. It is as difficult as it is fun.

Color Game The purpose of the color game is to find the right color without getting distracted. It is as difficult as it is fun. Getting Started Insta

null 7 Dec 13, 2022
iOS drop-in library presenting a 2048-style game

iOS-2048 iOS drop-in library presenting a clean-room Objective-C/Cocoa implementation of the game 2048. Screenshot Instructions The included sample ap

Austin Zheng 321 Dec 22, 2022
A 2048 game writing with SwiftUI.

2048 Game (SwiftUI app) This is a simple game to demonstrate the new SwiftUI framework. Note that the game algorithm may have issues, and this is stil

Cyandev 645 Jan 3, 2023
👻 Augmented reality game in a pixel/billboard style

ARbusters What's ARbusters? ARbusters is an augmented reality game in a pixel/billboard style. The gameplay is pretty simple, look around you and kill

Pedro Carrasco 94 Dec 1, 2022
iOS association game chatbot. AI based on neural word embedding language model. Image recognition with convolutional neural net.

AssociationBot ##iOS association game chatbot. UI based on JSQMessagesDemo. Association database created with the help of Word2Vec neural word embeddi

Alex Sosnovshchenko 16 Nov 24, 2022