Open mzhang28 opened 4 years ago
Yeah this would be a nice feature. I just copy the audio file from the song's folder and manually copy over all metadata and timing. Thats a lot of hassle though, and a lot to ask of new mappers to guess as well.
seeing how this is still a problem people are running into in the #mapping channel (and this forum post was the second-most referenced url in the #modhelp channel), maybe a hotfix could just be to do some cache invalidation on wherever the beatmap id and set are being stored in the database, or only checking that the creator name matches the current username on upload?
Where is this flow being advertised as the correct way to use the editor?
This is intended behaviour. Creating a new map should be done by dragging an mp3 into the cleaner.
It's not being advertised, but there is also no obvious method for creating a new mapset while preserving timing (uninherited), metadata, sometimes the background, and possibly hitsound samples. This is a workflow many mappers use to piggyback off an existing set.
The logical next step is to create a new difficulty, and then delete all of the existing maps which leads to this error. It's also possible to copy the timings and metadata manually, but it's a lot slower.
I guess the simple solution here is to forcefully clear all IDs from the .osu
file when the creator string is changed from the song setup dialog. Does that sound like it would resolve the user flow you are seeing happen?
uhhh is there somewhere else the beatmap ID and beatmapset ID are stored? I've tried resetting the IDs through changing the .osu file directly when the client is closed but if the file remains in the same place, it would reset the next time I save the file / try to upload.
If you need an example of a workflow to test, it would look something like (1) create new difficulty, (2) change creator name through the song setup panel, (3) delete other difficulties, (4) submit. If this works, it should cover the majority of what new mappers are trying to do and anyone running into this problem otherwise is just doing something weird
The IDs would be restored automatically on startup if the hashes of the files have no changed.
Bump, people are still having this problem on the daily and newer mappers are still being taught to perform this hack.
forcefully clear all IDs from the .osu file when the creator string is changed from the song setup dialog
This sounds like it'll clear only the .osu file which is what players are already doing. I think the problem has to do with other places the IDs may be cached, like maybe the osu!.db file.
IDs would be restored automatically on startup
Where are these IDs being restored from?
To confirm, this is still happening in cases where the user is copying .osu
files from another beatmap to their own by external means, correct?
That may happen, but I think the biggest use-case is:
- Open an already uploaded
- Create a new difficulty through the File menu.
- Change the creator name through the song setup (F4) menu.
- Delete the original difficulties from the main menu.
- Try uploading the mapset from the newly created difficulty.
so essentially "turning" an existing uploaded mapset into a new one they want to upload.
I'd also like to note that tournament organizers would like to reupload existing maps with tweaks for their particular tournament needs (eg. AR8 edit, CS5 edit, removing a particular difficulty spike, etc.) that the mapper would not like to apply to their original map, but I'm sure most of them are familiar with the workaround and are using it.
Continued from this Twitter thread.
For mappers trying to create new maps using audio and timing points from existing maps, the easiest thing to do is open the beatmap in the editor and hit File > Create new difficulty. This lets them create a map from scratch without extra effort. When they later try to create a mapset, they will invariably encounter the "The beatmap you're trying to submit isn't yours!" bug, unless they apply a well-known workaround.
The workaround comes in many forms but usually either involves some way of invalidating osu's knowledge of the old map and resetting BeatmapID and BeatmapsetID or duplicating the audio file elsewhere and dragging it back into osu and copying over the timing points. This requires messing with .osu files in ways that cause inconsistencies between the files and osu's internal map database.
Reproduction steps:
Suggestion: Could you add a button to the File menu of the editor, similar to the "Create new difficulty" button that creates a new mapset entirely? The button could bring up the same song setup (F4) dialog, ask the user for some details and then copy (or hardlink) the audio file and uninherited timing points to an entirely new mapset, and then updating osu's internal database to recognize the new mapset. Since this creates a fresh map and set, it should avoid the problem that the "The beatmap isn't yours!" dialog was meant to avoid, which I assume is people just changing the creator name and reuploading beatmaps. It will also save mappers from having to edit any .osu files in ways that osu isn't able to track.
I'm not sure how complex an addition like this could take, but many new mappers have run into this bizarre bug (until they learn of the workaround), so I'd appreciate if you could take some time and look into making this process easier.