Allow beatmap conversion from non-std rulesets #32535
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Supersedes #23875, fix #9263
Summary:
This gives rulesets full control which maps to show both with and without map conversion enabled.
For example a 2-player version ruleset of taiko could make taiko maps show without enabling converts, as well as control which ones to support only if conversions are enabled in the settings.
Design decisions:
There is a
CanConvert
function inBeatmapConverter
which I considered using as well. However this class wasn't accessible in the carousel and the implementation may be quite severe on performance impact, since they validate the full map, instead of going from metadata. Consider for example generally converted maps from mania to taiko might be able to usually convert well, but a quality control function inside CanConvert could make the conversion fail if it's unplayable, which will then be shown when trying to start the map.I did not change how the default rulesets behave, this is just for custom rulesets to be able to play more maps and start off with a larger pool of maps, which I think is an important part of custom ruleset adoption. I adjusted the scrolling example ruleset (pippidon) to include this as well.
During playtesting I personally found adding a ctb -> mania convertor quite fun, but I would not make that part of this PR since the scope would explode when touching the default rulesets. (scoring, pp, web, how to handle changes in a ranked converter, etc.)