07 Mar 2018
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.
You can now see outlines surrounding the selected objects. Another step forward for the editor!
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.
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.
- 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.
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.
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.
- 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.
Adding back missing profile pieces. Graph design is going to be updated to feel a bit better, consider this temporary!
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)
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.
- Remove one “this” word in russian translation #2626 (VPeruS)
- Update the Polish translation #2614 (TPGPL)
- Add fallback locale in path-based search for redirect #2611 (nanaya)
- Add new size/aspect ratio beatmapset covers #2610 (nekodex)
- Format user profile post count #2606 (notbakaneko)
- Reorder the main nav menu a bit #2596 (nekodex)
- Refactor beatmapset cover generation #2591 (nekodex)
- Fix bottom page detection function #2582 (nanaya)
- Text wrap for history page #2579 (nanaya)
- Enforce word break on nomination box #2577 (nanaya)
- Avatar positioning #2570 (nanaya)
- Show keys for osu!mania maps #2569 (nanaya)
- Remove redundant attribute #2568 (nanaya)
- Ensure space between score and accuracy column #2563 (nanaya)
- Trigger react state change when inserting bbcode #2562 (nanaya)
- Unify call for html entity decode function #2560 (nanaya)
- Usercard loading variable name #2559 (nanaya)
- Reduce mp header text size on mobile #2558 (nanaya)
- Proper delete validation #2557 (nanaya)
- Expose user recent activity API endpoint #2554 (naoey)
- Fix softDelete of beatmapset discussion post #2541 (nanaya)
- Add usercard to profile historical listing #2530 (nanaya)
- Add Spotlights January 2018 medal assets #2529 (Ephemeralis)
- Full width show more link #2528 (nanaya)
- Remove footer links on landing page #2527 (nanaya)
- Add Mappers Guild Pack I web badge assets #2526 (Ephemeralis)
- Reduce database queries in beatmap discussion fetches #2525 (nanaya)
- Fix model_pluck #2524 (nanaya)
- Allow hype/feedback button to wrap text to fit localised strings #2512 (naoey)