Hi guys. Back at you with updates since the last post, split into respective projects:

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

A whole lot of work has been done, focusing on beatmap conversion, compatibility, performance and bug fixes. A lot more maps should now play correctly and performance should be 2-10x higher than what it was. Also, basic skin support is in!

Until now, we were relying on a global replay frame across all rulesets, to allow for importing replays from existing .osr files. While this had its place, we definitely want a more generic replay frame structure going forward. This change separated out the legacy frames from a newer frame format which can be designated by the ruleset itself.

Implement hitobject selection overlays in the editor #2095 (smoogipoo)

You can now see outlines surrounding the selected objects. Another step forward for the editor!

Reduce parallax effect during gameplay #2134 (peppy)

We heard your feedback and have reduced the parallax effect on gameplay screens. This should mean you can still enjoy distraction-free gameplay without completely disabling parallax.

Implement skin support for (most) hitsounds and (osu!) hitcircles #2105 (peppy)

After getting a lot of framework in place, we can finally import skins! Drag-and-drop an .osk into the window and you should now see your skin under the new dropdown. Note that this is not the final method of selecting skins.

For now only a few skinned elements are implemented as a trial of the implementation. Going forward we will gradually be adding further elements. Parsing of skin.ini is the next priority.

Other Changes

Fix taiko drumrolls potentially getting incorrect judgements #2171 (smoogipoo)

Add legacy timing offsets #2166 (peppy)

Fix skin file path lookup performance #2164 (peppy)

Fix hard crash due to spinner spin requirement being zero #2163 (peppy)

Add rewind support for storyboards #2162 (peppy)

Fix parallax container during rewinds #2161 (peppy)

Fix linear perfect curves not using the linear curve approximator #2155 (smoogipoo)

Only use osu.Desktop to determine test assemblies #2154 (smoogipoo)

Implement an interface for beatmap conversion tests #2153 (smoogipoo)

Fix HR not properly applying to sliders #2146 (smoogipoo)

Fix FastRandom using uint instead of int for NextDouble() #2144 (smoogipoo)

Don’t use BufferedContainer for OsuLogo #2143 (peppy)

Fix legacy catch replay input not being scaled to the playfield’s width #2142 (smoogipoo)

Fix importing some (broken) beatmaps looping infinitely #2136 (peppy)

Improve clock handling logic for gameplay #2126 (peppy)

Fix slider heads fading out too late #2138 (peppy)

Fix depth of already-visible panels not being updated after a sorting change #2135 (peppy)

Ensure selection is finalised before exiting song select #2132 (peppy)

Fix incorrect exit block conditional #2131 (peppy)

Fix bindings not being unbound on ModSelect #2129 (peppy)

Fix song select iteration when all panels are filtered #2127 (peppy)

Improve vector conditional #2123 (peppy)

Remove null channels from SkinnableSound playable channels #2118 (peppy)

Rely less on every-frame transform helpers #2117 (peppy)

Fix sliders never getting a correct lifetime set #2116 (peppy)

Give DrawableSlider an accurate position and size #2107 (smoogipoo)

Reset mouse confine mode on input setting reset hotkey #2099 (peppy)

Fix legacy Taiko replays having reversed inputs #2098 (tgi74)

Use Multicore JIT #1966 (UselessToucan)

Fix migration file case #2112 (VPeruS)

Implement skin import, database and storage #2103 (peppy)

Update framework #2101 (peppy)

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

Set display colour depth to correct value when switching to fullscreen #1428 (LastExceed)

Quite a few users were reporting full screen mode switching their display colours to 256 colour (definitely less than how many we need!). Should now be resolved.

Improve performance of SetGlobalProperty #1414 (peppy)

Tackling performance at the lowest level, I made some changes to the way shader properties were assigned to reduce overhead. 5-10% improvement in the best cases.

Fix transforms on RemoveCompletedTransforms drawables applying forever #1413 (peppy)

There was a regression when rewind support was added causing old (already-completed) transforms to continue updating indefinitely. This saw performance degrade over the length of a beatmap. Now resolved.

Buffered containers are our method of drawing to textures. We use them regularly to cache complex drawable structures and reduce overhead. Until this change, the caching was only improving performance in very minimal ways (mostly fill rate). Now, the cached state stops all child updates and expensive draw thread updates.

Other Changes

Move CursorContainer’s Add to BDL #1442 (peppy)

Load log entries asynchoronously #1436 (peppy)

Allow graceful failure when dynamic compile fails in TestCase constructor #1435 (peppy)

Avoid including directories with many files in dynamic compile watch list #1434 (peppy)

Fix null ref regression #1430 (peppy)

Inline out variables #1425 (UselessToucan)

Cleanups to clock handling #1423 (peppy)

Fix transforms of same type/time not being removed correctly #1427 (peppy)

Don’t unnecessarily update depth if depth is already set correctly #1426 (peppy)

Ensure bindings unbind in both directions when explicit UnbindBindings is called #1424 (peppy)

Catch exceptions thrown during dynamic compilation runtime #1422 (peppy)

Use same argument order in all transformable conditionals #1421 (peppy)

Add logging when threads fail to join in time #1419 (peppy)

Fix VisualTests crashing on first startup due to incorrect configuration #1415 (peppy)

Don’t track all used objects #1412 (peppy)

Reduce dependence on zero-duration transforms #1411 (peppy)

Always confine cursor when left mouse button is pressed #1408 (UselessToucan)

Add a LoadAsyncComplete method #1410 (peppy)

Allow resource managers to accept and return null #1405 (peppy)

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

User monthly plays and replays watched charts #2608 (nanaya)

Adding back missing profile pieces. Graph design is going to be updated to feel a bit better, consider this temporary!

Add dedicated search box for mobile layout #2597 (nekodex)

It was noted that finding the search option on small screens was near impossible. We’ve adding an always-visible search box to solve this one.

Show post count on user profile page #2578 (notbakaneko)

Improved page title #2531 (nanaya)

Page content-related descriptive text is now prioritised at the start of page titles, so you can more easily find tabs.

Threaded forum search #2332 (notbakaneko)

Forum search have received some upgrades. Go test it out here.

Other Changes