Preserve legacy Background event offsets in beatmap encode/decode#37467
Preserve legacy Background event offsets in beatmap encode/decode#37467Hiviexd wants to merge 3 commits intoppy:masterfrom
Conversation
| /// <summary> | ||
| /// Horizontal offset in pixels of the legacy Background event (fourth column in <c>[Events]</c>). | ||
| /// </summary> | ||
| public float BackgroundOffsetX { get; set; } | ||
|
|
||
| /// <summary> | ||
| /// Vertical offset in pixels of the legacy Background event (fifth column in <c>[Events]</c>). | ||
| /// </summary> | ||
| public float BackgroundOffsetY { get; set; } |
There was a problem hiding this comment.
This has no business being in BeatmapMetadata, or making its way into realm, or anything of the sort. The proper place for this is either Storyboard (ideal) or maybe Beatmap (less ideal).
Now, it's not trivial to put it there, and I don't have a concrete plan on how to do this, but it is going to be required anyways eventually, to support things like video adding, or eventually-eventually design mode support in editor. There likely need to be some hammers put to LegacyBeatmapDecoder and/or LegacyBeatmapEncoder because the way both entirely attempt to ignore the storyboard as hard as possible is going to stop working at some future point.
Something I'd likely need to try to have a go at myself. But I'm personally not okay with letting this into master only to need to migrate it out in a year.
The reason why this change matters is osu!taiko.
While this may be irrelevant in other modes, osu!taiko has been using these values since the dawn of time to control the background alignment to properly fit the playfield. We currently even have a ranking criteria rule, instructions, and a guideline dedicated to this parameter.
Its absence from lazer parsing causes issues with exports, and more critically with BSS where background offsets get lost on upload, leading to disqualifications like this. The only workaround is to rely on stable's BSS, which raises the question: why use lazer BSS at all for a taiko map’s final update? Updating through stable also wipes version history, effectively undermining that feature altogether.