dev changelog 20180324

published 26 Mar 2018

Back again, sorry it took so long! This post’s a long one (aka we’ve been busy!). I hope these posts are worth it, because the amount of time it takes to keep this up is pretty insane!

osu The osu!lazer project. The future of the osu! client. Download preview releases from here and follow along!

Add the ability to skin the gameplay cursor #2257 (peppy)

While custom trails are not supported, the basic pieces of the cursor are now free to be customised. This was one of the highest priority skinning requests.

Add the ability to take in-game screenshots #2199 (UselessToucan)

With a quick press of F12 you can permanently save your memories to disk.

As with stable, you can also choose the format if you prefer lossless output.

Restore old auto-popout notification overlay behaviour #2280 (peppy)

In recent builds, notifications don’t automatically pop-out. While this was less annoying, it also meant that notifications were basically invisible to the user (even when they were important).

For now we’ve restored the behaviour of having the notification overlay pop out every time. You can dismiss it by clicking anywhere on the screen now, so it’s not near as annoying. Eventually we will have toast notifications which will appear without the need for the full notification overlay, so consider this a stop-gap solution.

Make Beatmaps decodable as Skins #2253 (peppy)

Beatmaps with custom skinned components will now get similar treatment to user skins. Going forward they will benefit from improvements to legacy skin support. I’d love to make a video showing this off but.. it happened to regress in the latest release, so that will have to wait ^^;.

Note that for the time being, there is no toggle to disable this, so they will have priority over user skins. A toggle will be added soon.

Implement the editor’s beat snap divisor #2247 (smoogipoo)

One component at a time, the editor is approaching a state where it could be considered usable.

Implement an interface for moving hitobjects in the editor #2195 (smoogipoo)

In theory, this would mean that hitobjects are now draggable in the editor. In practice, this regressed and isn’t working in the latest release, so let’s jsut pretend that it works for the time being.

Add skin support for hit judgements #2181 (peppy)

While the animation is still missing, you can now customise your judgement explosions visually.

Implement mania star difficulty calculation #2124 (Poyo-SSB)

We now have accurate star difficulty calculations for three of four default game modes! All that remains is osu!catch (please someone help make it happen).

Match HP drain harshness closer to stable #2183 (peppy)

After many of you reached out about the HP drain being insanely high, we’ve decided to reduce its effect to 50% until we decide on a final algorithm.

Implement updated volume control overlay design #2165 (jorolf)

Mmm, glowy! Still plenty of usability tweaks that need to be applied to the volume overlay, but at least it matches the surroundings now.

Add recent section to user profile #2120 (naoey)

Gradually the user profile section is getting more complete. This time we add the “Recent Activity” display.

Allow previewing background adjustments at player loading screen #2045 (UselessToucan)

As you are already accustomed to, changes made on the visual settings panel are now conveyed in real-time.

Other Changes

  • Increase deploy delta keep #2301 (peppy)
  • Move binding to LoadComplete #2300 (peppy)
  • Fix beatmap background fade not being updated on retry #2296 (smoogipoo)
  • Fix volume glow being cut off #2294 (smoogipoo)
  • Fix API never stopping its thread #2293 (peppy)
  • Fix player not getting disposed in some scenarios #2292 (peppy)
  • Add perfect mod icon #2290 (Joehuu)
  • Fix BeatmapCarousel’s flush not correctly applying selection changes #2289 (peppy)
  • Fix mod button sounds playing when mod overlay is not visible #2255 (peppy)
  • Only allow settings or notifications to be visible at once #2279 (peppy)
  • Fix FocusedTextBox in line with framework changes #2278 (peppy)
  • Use cached VertexBuffer add delegate #2277 (smoogipoo)
  • Don’t hard-crash when an unknown section is encountered in a legacy file #2276 (peppy)
  • Fix osu! logo making hover beat sounds when not visible #2272 (peppy)
  • Fix retry not allowing continuing beyond PlayerLoader #2270 (peppy)
  • Fix DummyRuleset getting selected after non-matching filter #2262 (peppy)
  • Update nuspec to include humanizer localisations #2258 (peppy)
  • Add scale adjusts to bring legacy skins in-line with lazer sizing #2256 (peppy)
  • Add skin/beatmap lookup hierarchy #2254 (peppy)
  • Remove ComboColour from HitObjects #2252 (peppy)
  • Hard bail on attempting to import an invalid archive format #2246 (peppy)
  • Make import notifications fail when any imports fail #2245 (peppy)
  • Add skin.ini parsing #2244 (peppy)
  • Fix crash when attempting to select objects that don’t have masks #2243 (smoogipoo)
  • Fix juice stream droplets spawning in incorrect locations #2231 (peppy)
  • Rewrite the way clocks are handled in the Editor #2226 (smoogipoo)
  • Implement mousewheel time scrolling in the editor #2225 (smoogipoo)
  • Make DrawableHitObject a CompositeDrawable #2223 (peppy)
  • Improve mods description and adjust multipliers to match stable #2219 (Joehuu)
  • Consolidate API into its own component #2218 (peppy)
  • Fix beatmap combo colours not being applied #2215 (peppy)
  • Fixed exit from game saves username instead of email #2214 (VPeruS)
  • Update framework #2209 (peppy)
  • Fix autoplay button wrongly being active after a Ctrl-Enter play #2207 (FreezyLemon)
  • Create a base TestCaseEditor for rulesets to derive #2206 (smoogipoo)
  • Move test beatmap from TestCasePlayer into an instantiable class #2205 (smoogipoo)
  • Fix slider circle overlays moving with the endpoints #2204 (smoogipoo)
  • Fix check against LegacyID for non-default rulesets #2200 (HoLLy-HaCKeR)
  • Fix login failure for users with no country rank #2198 (peppy)
  • Update ISSUE_TEMPLATE #2197 (peppy)
  • Split out the slider head into a separate drawable hitobject #2194 (smoogipoo)
  • Fix major regression (framework revert) #2193 (peppy)
  • Rework decoders to be more flexible #2191 (peppy)
  • Update framework #2190 (peppy)
  • Interpolate ParallaxContainer’s scale #2189 (peppy)
  • Add Mirror Mod for Mania #2188 (tgi74)
  • Add drawable to display (and update) relative dates #2185 (peppy)
  • Remove judgements when deciding a new judgement for a HitObject #2182 (peppy)
  • Make gameplay cursor vs skip button feel nice again #2170 (peppy)
  • Make osu!mania conversions more in-line with osu!stable #2169 (smoogipoo)
  • Rewrite BreakOverlay to work with rewinding #2160 (peppy)
  • Make song select ensure current beatmap is always playable in the active ruleset #2159 (naoey)
  • Improve mouse-based load inhibition at player loading screen #2078 (UselessToucan)
  • Fix difficulty calculator regression when applying mods #2186 (peppy)
  • Removing “mouse wheel disabled” checkbox from visual settings in gameplay #2184 (pdrapoport)
  • SliderTick transform improvements #2178 (peppy)
  • Fix arbitrary API request errors getting identified as timeouts #2177 (peppy)
  • Make LegacyID nullable #2176 (peppy)
  • Update framework with FlowContainer changes #2175 (smoogipoo)
  • Fix left and right arrows keys in chat overlay not working #2174 (peppy)
  • Fix taiko drumrolls potentially getting incorrect judgements #2171 (smoogipoo)
  • Fix incorrect slider-to-drumroll conversions in taiko #2167 (smoogipoo)

osu-framework The game framework behind osu!lazer. Written from scratch with osu! in mind, but very extensible.

Expose the ability to disable background performance profiling #1482 (peppy)

We have automatic logging of stutter frames to log files for further analysis. Unfortunately, the overhead from this being done on four threads can result in more stutters in a cascading effect. For now, this performance analysis is disabled by default and can be optionally enabled by the user when required.

For what it’s worth, this same behaviour exists but only in CuttingEdge builds, to reduce the latency overhead for normal users.

Overhaul transform logic to fix many failing rewind/seek cases #1437 (peppy)

I undertook this complex task of ensuring frame-accurate rewind logic as the bugs surrounding transform rewindability were piling up. Things are in a very good state now, with the only remaining known issue being mostly unrelated to transforms themselves (approach circles get stuck on screen due to proxy drawables).

Refactor GameWindow to not extend OpenTK.GameWindow #1420 (swoolcock)

This is a step towards getting the iOS build projects into the main development stream. Allows for more abstract window types to be the backing for game display.

Fix memory leaks post game exit #1472 (peppy)

We’re still tackling a scenario where our unit tests get stuck in an endless loop state. This was another attempt to fix that. In the process, we managed to find a few memory leaks, although none of these will affect the end-user in any meaningful way as they only occur if you run multiple Game/GameHosts in a single execution.

Add method to retrieve a Bitmap of the current GL screen state #1454 (UselessToucan)

This is the framework prerequisite to get screenshot capture working at osu!’s end.

Other Changes

  • Add check for IsCancellationRequested in TcpIpcProvider #1480 (peppy)
  • Add a cached delegate for VertexBatch.Add() #1477 (smoogipoo)
  • Fix Incorrect Behaviour of ContainerExtensions.Wrap in Certain Cases #1476 (Tom94)
  • Fix performance of TakeScrenshotAsync #1475 (peppy)
  • TextBox should only handle keyboard input when focused #1471 (peppy)
  • Add wrap method to remove duplicate code in effects #1470 (default0)
  • Fix macOS platform modifiers not being properly loaded #1468 (smoogipoo)
  • Fix seekOffset being considered when seeking #1466 (smoogipoo)
  • Fix being able to seek TrackVirtual to negative time values #1464 (smoogipoo)
  • Avoid background saves after actual saves occur #1462 (peppy)
  • Add a base component class #1461 (peppy)
  • Make ChildID internal #1460 (peppy)
  • Fix TextSize changes not being correctly applied to unchanged characters #1459 (peppy)
  • Rename frameBufferX -> drawNodeX #1457 (smoogipoo)
  • Add logging of failed response processing to network log #1453 (peppy)
  • Reintroduce & fix gamewindow refactor #1452 (FreezyLemon)
  • Revert GameWindow changes #1451 (peppy)
  • Add method to add arbitrary drawables to TextFlowContainers #1450 (peppy)
  • Remove highly unnecessary log output #1449 (peppy)
  • Make TabControl’s tab flow overridable #1447 (smoogipoo)
  • Remove depth comparisons from FlowContainer ordering #1446 (smoogipoo)
  • Allow SampleManagers to cache failed lookups #1440 (peppy)
  • Recreate changes for explicit flow order from #1261 #1304 (default0)
  • Update licence year #1445 (jacksonisiah)
  • Move CursorContainer’s Add to BDL #1442 (peppy)

osu-web The new web front-end. Already live but hasn’t yet replaced the old site, pending feature parity.

Add site switcher orb to aid in navigation between old and new site. #2778 (nekodex)

As we move closer to deprecating the old site, I wanted to make it easier for users to get a taste of the new site (but also get back to the old site if they find any lingering issues).


As of today, the site will also remember your preference and ensure you remain on that version wherever possible.

Update ranking eta calculation to match new per-ruleset queues #2746 (nanaya)

To allow for fairer qualification queues, we now allow up to 8 beatmaps to enter ranked from qualified each day per game-mode rather than being in a single global queue. Estimates shown on the new modding system have been updated respectively.

Add link to to user post history #2711 (notbakaneko)

Due to popular demand, we prioritised getting post counts and user-specific post listings implemented sooner rather than later.

Mail notification toggle for forum topics #2693 (nanaya)

You can now choose whether you want to receive email notifications for your forum subscriptions.

You can change this setting from a forum thread as you’re viewing it, too. Check the button on the bottom-left toolbar.

Add beatmap status to beatmap panels and beatmap page #2688 (nekodex)

The ranking status of beatmaps are now displayed everywhere their panels are visible. Really neat UX improvement, in my opinion.

Include poster in forum search results #2656 (notbakaneko)

Previously it was not easy to know who was responsible for a post in the forum search results. Now a ba

Account standing section #2573 (LiquidPL)

You can now once again see what you did wrong if you’ve been a bad little Jimmy.

A final note

We are listening to your concerns on decreased usability in certain areas of the new design (regularly people saying stuff is “too big” or “too spaced out”). You’re welcome to continue to voice your concerns, but just know that we do have some huge design changes in the pipeline which dial things back and make the whole site a lot more usable.

Except to see these changes hit before the old site is completely removed from existence.

And don’t worry, we haven’t forgotten about profile badges (for tournament winners), the PM button or anything else that might feel missing at the moment. Bear with us for just a bit longer!

Here’s a preview of the direction we’re going. I’m going to get in trouble for sharing this. Sorry flyte!

Other Changes