Add explicit menu item for exporting guest difficulties from editor#36101
Merged
peppy merged 1 commit intoppy:masterfrom Dec 23, 2025
Merged
Add explicit menu item for exporting guest difficulties from editor#36101peppy merged 1 commit intoppy:masterfrom
peppy merged 1 commit intoppy:masterfrom
Conversation
A few facts of life:
- Guest difficulties are at this point a staple of mapping.
- People are very much used to flinging `.osu`s around (because there's
no better alternative).
- Currently there are two ways to get an `.osu` out of lazer. You can:
- Export the beatmap as "compatibility" to an `.osz`, then
transmogrify the `.osz` to a `.zip`, then extract the `.zip`, then
pluck out the `.osu`. This is the "correct" way to make sure stable
works, but is also stupidly arcane.
- Use "edit externally" to mount the beatmap files to disk, then
copy-paste out the `.osu`. This is the *wrong* way to make sure
stable works, because the mounting process exposes the raw "for
editing" format with features stable doesn't support, but it the
actual easy one.
- Reports about guest difficulties exported from lazer "working wrong on
stable" are prevalent. Probably mostly because of the preceding point.
What this PR does is introduce a *third* method to export an `.osu`,
which is designed to be both the easiest one yet *and* correct. I am
hoping this will curb the complaints until support for direct submission
of guest difficulties is added - which I still hope to see, but it will
be a significant effort *client-side* (the server side has been ready
for years now).
And yes, you will notice that much of the code added in
`LegacyBeatmapExporter` related to manipulation of the path is
copy-pasted from `LegacyExporter`. I don't care enough to invent
protected / abstract / whatever else OOP faff for something that may not
survive review and is mostly a weird semi-temporary wart.
Member
|
Seems logical. A follow-up for this (which you may have already considered?) would be to support hosts being able to drag guest difficulties into the editor and have the editor support updating the current mapset with a new version. |
Collaborator
Author
Seems like a decent idea, but I'm not super sure on the UX of that. In particular you could have two cases of behaviour here, one being wherein the guest difficulty is added wholesale and one where an existing guest difficulty is updated. Probably something I'd wanna try separately. |
peppy
approved these changes
Dec 23, 2025
This was referenced Jan 1, 2026
This was referenced Jan 17, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
A few facts of life:
Guest difficulties are at this point a staple of mapping.
People are very much used to flinging
.osus around (because there's no better alternative).Currently there are two ways to get an
.osuout of lazer. You can:Export the beatmap as "compatibility" to an
.osz, then transmogrify the.oszto a.zip, then extract the.zip, then pluck out the.osu. This is the "correct" way to make sure stable works, but is also stupidly arcane.Use "edit externally" to mount the beatmap files to disk, then copy-paste out the
.osu. This is the wrong way to make sure stable works, because the mounting process exposes the raw "for editing" format with features stable doesn't support, but it is the actual easy one.Reports about guest difficulties exported from lazer "working wrong on stable" are prevalent. Probably mostly because of the preceding point.
What this PR does is introduce a third method to export an
.osu, which is designed to be both the easiest one yet and correct. I am hoping this will curb the complaints until support for direct submission of guest difficulties is added - which I still hope to see, but it will be a significant effort client-side (the server side has been ready for years now).And yes, you will notice that much of the code added in
LegacyBeatmapExporterrelated to manipulation of the path is copy-pasted fromLegacyExporter. I don't care enough to invent protected / abstract / whatever else OOP faff for something that may not survive review and is mostly a weird semi-temporary wart.