Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unsnapped barline not being detected? #23

Open
hongaaronc opened this issue Nov 10, 2023 · 7 comments · Fixed by #25 · May be fixed by #31
Open

Unsnapped barline not being detected? #23

hongaaronc opened this issue Nov 10, 2023 · 7 comments · Fixed by #25 · May be fixed by #31
Labels
bug Something isn't working

Comments

@hongaaronc
Copy link
Collaborator

hongaaronc commented Nov 10, 2023

Honestly I'm not sure why this unsnapped barline is happening in this beatmap. It looks like the green line is on the bar line. Offsetting the barline early fixes the issue. Perhaps it could be due to some hidden decimal values? It's not being detected by MV.

Map Link - Unsnapped barline is seen on top diff @ 03:12:368

Curious if anyone knows why this is happening, and if something like this can be made detectable by an MV check?

@hongaaronc hongaaronc added the bug Something isn't working label Nov 10, 2023
@hongaaronc
Copy link
Collaborator Author

Perhaps implementing #22 may work to detect this?

@Hiviexd
Copy link
Owner

Hiviexd commented Nov 10, 2023

the native check sometimes doesn't work it seems. thoughts on making our own "ensure this makes sense" check for all unsnapped barlines? should be pretty helpful when checking for unintentional unsnaps, while also making intentional ones ignorable

@hongaaronc
Copy link
Collaborator Author

Investigating this more....

it seems this is caused when the barline is unsnapped (either early or late) by an extremely small amount. It seems that barlines in osu engine use a lower level of precision than hit objects do?

In MV we use double for all timing-related offsets. However, it's possible that osu uses double for hitobjects and some lower precision datatype for barlines?

For instance, try this in the map I posted:

  • Add a 5.00x SV at 03:00:368 - only the note gets affected strangely enough
  • Add a 5.00x SV at 03:12:368 - same thing...

this is utterly bizzarre.... anyway I think we could detect it by finding an appropriate epsilon to catch this.

@hongaaronc
Copy link
Collaborator Author

hongaaronc commented Nov 18, 2023

Oddly enough...

...these timestamps aren't affected in the same way despite the unsnap being much less. Wtf is happening

It's worth noting though that the affected timestamps are the later ones in the map... I wonder if the barlines accumulate rounding error over the course of the map - like if they are generated relative to the previous ones offset or something? If this is the case we may need a different method of calculating where the barlines are that isn't using modulo (%).

@hongaaronc
Copy link
Collaborator Author

Fwiw.... tested this stuff in Lazer and the issue isn't reproducible there o.O

@hongaaronc hongaaronc linked a pull request May 6, 2024 that will close this issue
@hongaaronc
Copy link
Collaborator Author

I don't think we meant to close this issue. But #31 will fix it - we can close it after that PR is merged

@hongaaronc hongaaronc reopened this May 6, 2024
@hongaaronc
Copy link
Collaborator Author

I found another case of this on this map @ 02:40:363

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
2 participants