Skip to content

Preserve legacy Background event offsets in beatmap encode/decode#37467

Open
Hiviexd wants to merge 3 commits intoppy:masterfrom
Hiviexd:preserve-beatmap-background-offset
Open

Preserve legacy Background event offsets in beatmap encode/decode#37467
Hiviexd wants to merge 3 commits intoppy:masterfrom
Hiviexd:preserve-beatmap-background-offset

Conversation

@Hiviexd
Copy link
Copy Markdown
Member

@Hiviexd Hiviexd commented Apr 21, 2026

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.

@Hiviexd Hiviexd added the area:beatmap parsing .osu file format parsing label Apr 21, 2026
Comment on lines +64 to +72
/// <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; }
Copy link
Copy Markdown
Collaborator

@bdach bdach Apr 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:beatmap parsing .osu file format parsing size/M

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants