2023.1218.0
Code Quality
- Make
CircularProgressDrawNode
and its properties protected (ppy/osu-framework#6060 by @EVAST9919) - Encapsulate common HP logic from osu and catch HP calculations (#25569 by @smoogipoo)
- Uncomment .NET 6 logging code (ppy/osu-framework#6064 by @Susko3)
- Bring inspections and dotsettings in line with osu project (ppy/osu-server-spectator#198 by @peppy)
- Fix overlapping chat links crashing the game (#25627 by @Susko3)
- Cleanup
DrawNode
drawing methods (ppy/osu-framework#6073 by @smoogipoo) - Uncomment net6.0 code and remove old code in
BeatmapListingOverlay
(#25671 by @Susko3) - Add
IsLegacyScore
toSoloScoreInfo
(#25746 by @smoogipoo) - Apply framework DrawNode cleanup changes (#25660 by @smoogipoo)
- Move object counts to BeatmapInfo (#25749 by @smoogipoo)
- Fix
GetRateAdjustedDisplayDifficulty()
(partially incorrectly) locally reimplementing difficulty range calculations (#25762 by @bdach) - Populate MaxCombo scoring attrib for non-osu rulesets (#25808 by @smoogipoo)
Editor
Show the filename of the current file in song setup (#25675 by @vegguid)
Change default slider velocity for new beatmaps to match osu!stable (#25688 by @peppy)
1.4x
is the default in osu!stable (ie. on creating a new beatmap in the editor) and plays better than 1.0x
, so let's match that on lazer.
Fix osu!taiko slider velocity being written incorrectly to .osu
file on export (#25689 by @peppy)
Add verify screen check for delayed hitsounds (#24648 by @ItsShamed)
Improve free-hand drawing of sliders to the editor (#25658 by @OliBomby)
Put simply, curves match your user input 100% better, and create smoother corners. Free-hand slider drawing has basically gone from "oh that's cool but i can make better because i am pro mapper" to "why would you ever not use this?"
Framework
- FFmpeg: Enable Microsoft MPEG-4 v1-3 decoders (ppy/osu-framework#6068 by @FreezyLemon)
- Request
READ_EXTERNAL_STORAGE
on older android versions (#25636 by @Susko3) - FFmpeg: Add VP6 and WMV2 video formats (ppy/osu-framework#6074 by @FreezyLemon)
- Add a session timestamp prefix to log files (and retain 7 days of logs) (ppy/osu-framework#6063 by @peppy)
- Add format provider argument to
IParseable.Parse()
(ppy/osu-framework#6065 by @Neuheit) - Add proper handling for
BindableList
collection changes in dropdown (ppy/osu-framework#6061 by @frenzibyte) - Add method to convert piecewise linear curves to spline control points (ppy/osu-framework#6056 by @OliBomby)
- Improve incremental B-spline builder via stochastic optimisation (ppy/osu-framework#6066 by @OliBomby)
- Implement dropdown searching (ppy/osu-framework#6072 by @frenzibyte)
Gameplay
Fix osu!taiko and osu!mania using the incorrect slider length when converting beatmaps (#25595 by @smoogipoo)
Fix hit error displays not clearing lines on seek (#25747 by @peppy)
Adjust some mod multipliers for initial leaderboard sanity (#25744 by @peppy)
Mod | Old | New |
---|---|---|
Half Time | 0.7x | 0.3x |
Classic | 1x | 0.5x |
Synesthesia | 1x | 0.8x |
There may be others we want to adjust. Note that these are basically placeholder safe values (lower is better) so we can allow these scores on the leaderboard without people complaining about unfairness... unless they are complaining the multiplier is too low (which is fine for now).
Show back button when spectating (#25770 by @peppy)
Avoids getting stuck at some screens. It's a bit ugly having the back button visible like this, but is the best approach we have for now.
Smaller changes
- Fix
ArgonHealthDisplay
sometimes behaving weirdly on miss judgements (#25672 by @frenzibyte) - Fix "IgnoreMiss" judgements not updating accuracy (#25740 by @smoogipoo)
- Fix
ArgonHealthDisplay
not displaying miss correctly during initial transition (#25673 by @frenzibyte)
Gameplay (osu!)
Implement Argon's spinner progress glow (#25562 by @EVAST9919)
Modify osu! standardised scoring to introduce a combo exponent (#24166 by @Zyfarok)
In osu! with ScoreV1 and ScoreV2, the cost of a miss was growing fast (quadratically) with the surrounding combos. This implied that a single miss could completely ruin the score of a play and cost up to 350k in ScoreV2.
To reduce this effect, a combo exponent of 0.5 was introduced. This effectively reduces the miss-penalty at high combos while keeping it high at low combos, in a similar spirit as how combo is capped in taiko or catch but without any hard-cap.
This combo exponent change is introduced together with a complete re-balance of the Combo/Accuracy split based on user feedback. Note that the new formula will imply higher scores overall and might require a bit of time getting used to. A table showing the effects of the new formula is available at here
Allow sliders to track if hit early (#25748 by @smoogipoo)
Smaller changes
- Add spinner glow resources (ppy/osu-resources#298 by @EVAST9919)
- Make osu! ruleset once again use the lazer default HP drain (#25797 by @smoogipoo)
- Playing around since the re-introduction of osu!stable's HP drain mechanics, I've become uncertain about using the osu!stable drain by default since it doesn't quite match the "feel" of osu!stable.
Most of my issues appear at higher HP drain rates, but with HR even on old maps the minimum is usually HP 8.4, which falls into the problematic region. I believe the difference is mostly where the judgements are placed - in osu!stable sliders have a big judgement at the end (300 + tick), whereas in lazer they have a medium-high judgement at the start (300) and a small judgement at the end (tick).
The raw HP drain rate seems to be quite similar, and if anything osu!stable should be harsher on the cases I've found.
I've also attempted to make lazer stable better, but I haven't been able to get it "just right".
There are others that have wanted the old algorithm back, which pretty much echo what I've said above: #25631
So... This PR moves the osu!stable algorithm to the classic mod.
Here's a replay demonstrating this: https://drive.google.com/file/d/1-AEIhaVF2YfXVR9GYc8UFAnV7zfFFHvA/view?usp=sharing
Note that osu!stable will play with V1 mechanics, but V1 and V2 feel about the same (just accuracy is slightly worse on V2).
- Allow sliders to track if hit late (#25776 by @smoogipoo)
- This allows slider heads to be hit late. In basic terms, this means that as long as your cursor is in the right position to hit ticks / repeats at the point of hitting the slider head late, they will now be hits instead of misses.
For those wishing to delve deeper into this change, please check the technical descriptions (and videos) in the pull request
25776.mp4
Gameplay (osu!catch)
Adjust catch score grade cutoffs (#25601 by @smoogipoo)
This is how things look across all modes:
grade | osu! / osu!taiko | osu!catch | osu!mania |
---|---|---|---|
SS | 100% | 100% | 100% |
S | ≥95%FC | ≥98% | ≥95% |
A | ≥90% | ≥94% | ≥90% |
B | ≥80% | ≥90% | ≥80% |
C | ≥70% | ≥85% | ≥70% |
Fix several issues with osu!catch beatmap conversion (#25685 by @smoogipoo)
This was originally intended to fix hyperdash generation around "pixeljumps", however it turned into much more general fixing of beatmap conversion because I couldn't provide beatmap conversion comparisons without fixing other issues.
Smaller changes
- Use stable sort for catch hyperdash generation (#22499 by @ekrctb)
- Fix catch applying positional clamping too early (#25726 by @smoogipoo)
Gameplay (osu!mania)
Change osu!mania HP drain to match stable (#25587 by @smoogipoo)
Fix osu!mania beatmap conversions sometimes having the wrong key count (#25712 by @smoogipoo)
Fix mania "autoplay" mod missing 0ms hold notes (#25727 by @PercyDan54)
Fix column sizing exceeding screen width on tablets (#25777 by @peppy)
The mobile stretching mode now applies to all skins, and adjusts to your device's aspect ratio. Note that this changes the width of special columns slightly – we'll be watching feedback as to whether this is throwing people off.
Smaller changes
- Fix precision issue when converting mania beatmaps (#25697 by @smoogipoo)
- Fix mania conversion following new discoveries (#25702 by @smoogipoo)
- Fix fallback column colors for legacy split stage mania skins (#25787 by @cl8n)
Mobile
- Fix file access not working on some older android devices (ppy/osu-framework#6071 by @Susko3)
Multiplayer
Add ability for the host to abort an in-progress match (#25637 by @smoogipoo)
The host can now click a handy abort button to end a match at any point!
Online
Disconnect existing client connections when another client instance for same user is detected (ppy/osu-server-spectator#196 by @bdach)
This avoids any shenanigans from multiple connections.
Display other users' online presence state in dashboard overlay (#25694 by @bdach)
Broadcast user online presence updates to other users (ppy/osu-server-spectator#202 by @bdach)
Track user counts per build (ppy/osu-server-spectator#203 by @bdach)
This will allow finally displaying lazer usage on the changelog page!
Smaller changes
- Implement flow allowing disconnection from online services when another client instance for same user is detected (#25522 by @bdach)
- Fix issues with concurrent connection filtering (ppy/osu-server-spectator#199 by @bdach)
- Simplify user presence structures for serialisability (#25693 by @bdach)
- Add support for aborting multiplayer matches (ppy/osu-server-spectator#201 by @smoogipoo)
- Fix user tracking database logic to match production reality (ppy/osu-server-spectator#204 by @bdach)
Performance
- Reduce some allocations in SongSelect in the mania ruleset (#25768 by @smoogipoo)
Results
Fix results screen not including slider end misses in tick count (#25602 by @peppy)
This brings us a step closer to sanity with slider end misses. Now you can at least see when you missed a slider end, as it will reduce the "slider ticks" count.
Settings
Add button to compress log files for bug submission (#25588 by @peppy)
Intended for use in conjunction with ppy/osu-framework#6063. Now that there are many log files, let's compress them on behalf of the user to make reporting bugs easier.
Allow new common cases when a user is locating a stable osu! install directory for import (#25775 by @peppy)
This allows:
- Selecting a
Songs
orSkins
folder directly (will automatically use the parent for imports) - Selecting an
osu!
folder without it containing aosu!.*.cfg
file (which is the case for some users that have only backed up theirSongs
orSkins
folders)
Skin Editor
Fix being able to change ruleset / beatmap when opening skin editor from main menu (#25687 by @peppy)
Smaller changes
- Fix several edge cases in skin editor gameplay scene opening flow (#25665 by @bdach)
- Fix skin editor crashing in some circumstances when opened in main menu (#25691 by @bdach)
Song Select
Improve song select search performance (#25679 by @peppy)
Reduces time taken to search beatmaps at song select by 88%.
Allow right clicking anywhere on a leaderboard score to get the "use mods" menu (#25683 by @POeticPotatoes)
It was hard to know that you had to click directly on mods previously to use this.
Display osu!mania key-count in song select carousel panels and details (#25711 by @smoogipoo)
https://drive.google.com/file/d/1bDb6ICbhaAimkQRDHhrQhOhW9QgsyAdu/view?usp=sharing
Note that this currently doesn't update with mod selection.
Show adjusted AR/OD values when applying DT/HT mods (#24642 by @Givikap120)
Change mod select to focus the search box without pressing tab (#25756 by @bdach)
This feels like a better default for most users. Now, the serach box is focused by default so that you can type immediately after the overlay pops in. But it is also toggleable so that users who are accustomed to hotkeys can continue using hotkeys. As such the "classic" default for the setting is to not focus the search box.
For existing lazer users that want to use classic hotkeys, please adjust the new setting Automatically focus search text box in mod select
.
Improve handling of beatmap collection changes in CollectionDropdown
(#25575 by @frenzibyte)
Smaller changes
- Fix searching at song select matching incorrect ruleset (#25686 by @peppy)
- Broke in the last release.
- Fix adjusted attributes tooltip not updating without mods (#25759 by @Givikap120)
- Fix
AdjustedAttributesTooltip
being broken by design (#25760 by @bdach) - Fix star rating display changing width depending on number displayed (#25774 by @peppy)
Testing
- Refactor dropdown test scene thoroughly (ppy/osu-framework#6058 by @frenzibyte)
- Include mod multipliers in scoring test scenes (#24933 by @bdach)
- Attempt to fix diffcalc script comment-based variable extraction once again (#25597 by @smoogipoo)
- Fix visual tests crashing when using
params
andTestCase
attribute (ppy/osu-framework#6069 by @Susko3) - Refactor multiplayer invite tests (ppy/osu-server-spectator#200 by @smoogipoo)
- Cleanup chat link tests (#25626 by @Susko3)
- Fix last tick handling in osu beatmap conversion tests (#25695 by @smoogipoo)
- Ensure that
SoloScoreInfo
serialisation result does not contain interface members (#25703 by @bdach) - Fix editor test not waiting for editor to load (#25741 by @smoogipoo)
Tournament
Add ban count option to round editor (#25598 by @rodrigopina360)
This idea came from this comment, which remembered me that indeed it's always assumed it's a single ban, even tho (even in OWC) having 2 bans per team further in the bracket is the norm. This change allows setting the ban count between 0 and 5, and also standardises the rotation order to what is used in most osu! tournaments.
UI
Add support for searching in dropdown menus (e.g. skins) (#25682 by @frenzibyte)
You can finally search for skins by name (and anything else in a dropdown)!
Smaller changes
- Fix chat overlay top bar icon being incorrect (#25618 by @Joehuu)
- Show search bar by default in language and collection dropdowns (#25757 by @peppy)
- Update localisations (ppy/osu-resources#299 by @peppy)
Full Changelog: 2023.1213.0...2023.1218.0