ppy / osu-stable-issues

Report critical osu-stable issues here
59 stars 11 forks source link

BSS doesn't honor maps with complete BeatmapID and BeatmapSetID #1135

Open aryoadhi opened 1 year ago

aryoadhi commented 1 year ago

For some reason, BSS doesn't honor maps with complete BeatmapID and BeatmapSetID when uploading maps to osu!. This causes unintended behavior as happened to this map: https://osu.ppy.sh/beatmapsets/1998595/discussion/4154388/general#/3748411

Here's how to replicate it:

  1. Add another .osu file to the pending/WIP beatmap set
  2. Change the BeatmapID value of that new beatmap to be the same as existing maps
  3. Leave the value BeatmapSetID to either 0 or -1
  4. Update the map

The result of this bug causes the discussions happened to existing map to be transferred to another difficulty, which is unwanted and may causes issues on long run if that difficulty has many mods.

While this issue requires deliberation to replicate it, this may occur due to how osu! automatically retreives BeatmapID if the map is somehow uploaded by the mapper, and the guest previously owned the unuploaded copy and then creating new diff based on that map. In short, the guest may not know that their local copy already automatically modified by client so they can update the map to reflect the latest version.

I suggest to have osu! automatically check sanity of the map, which prioritizes complete metadata first, followed with BeatmapID and BeatmapSetID, and then anything else.

peppy commented 1 year ago

I don't get it. Why would you clear set ID but not beatmap ID.

aryoadhi commented 1 year ago

The only assumption I can think is the mapper directly edits the offline/unuploaded copy of the beatmap, without making their own difficulty copy (i.e simply editing difficulty name). As you can see from the .osu file I obtained before the GD is uploaded (in .txt file), the BeatmapID is already set to existing beatmap, however the BeatmapSetID is -1, which means it's the game automatically updating BeatmapID, but not BeatmapSetID because the update requires user interaction.

This was completely done without any manual/deliberate intervention. Abyssmare_-_I_AM_THE_BEST_Ryu_Sei_Insane_IS_THE_HARBY.txt

peppy commented 1 year ago

set id can't be null if beatmap id is populated. it's both or none.