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

Bad Hit Registration #109

Open
rcelyte opened this issue Jun 1, 2024 · 23 comments
Open

Bad Hit Registration #109

rcelyte opened this issue Jun 1, 2024 · 23 comments
Labels
mod: noodle extensions status: can't reproduce Unable to reproduce bug type: bug Something isn't working

Comments

@rcelyte
Copy link
Contributor

rcelyte commented Jun 1, 2024

Describe the bug
Simply having Noodle Extensions in the _requirements of a difficultly causes hit registration to become more strict / less reliable (not sure how to describe it, kind of feels like Pro Mode + Strict Angles), making some maps significantly more difficult if not impossible. This is observed regardless of whether or not the map makes use of Noodle features.

To Reproduce

  1. Choose any custom map
  2. Add Noodle Extensions as a requirement
  3. Observe flakey hitboxes

Expected behavior
Hit registration of normal notes should not be affected by Noodle.

Additional context
Comparison on a map without notemods (https://beatsaver.com/maps/3b8bd [Expert]); top has Noodle in Info.dat, bottom doesn't:

comparison.mp4

Sabers phasing through modchart notes (https://beatsaver.com/maps/133c5):

https://github.com/Aeroluna/Heck/assets/25163630/e8ed73cd-9858-4114-bf5b-5393a01b7989 Edit: outdated video; can no longer reproduce

Edit: Additional additional context
There is no difference in the logs between working vs broken hit registration (hi @Meivyn)

@Meivyn
Copy link
Contributor

Meivyn commented Jun 1, 2024

Difference or not logs are useful, can you not be stubborn and provide them after reproducing the issue? Thanks.

@Meivyn
Copy link
Contributor

Meivyn commented Jun 2, 2024

Not to mention that I tested and asked some others to test this map (https://beatsaver.com/maps/133c5), and it works fine. That issue looks specific to you. Send logs.

@rcelyte
Copy link
Contributor Author

rcelyte commented Jun 2, 2024

@Meivyn _latest.log

it works fine

The timing and accuracy are subtly stricter than they should be. Notice in the side-by-side comparison how the notes get closer to my saber before they actually slice, and how at 0:03 the blue notes in the bottom left fly past despite the saber clearly being within hitbox range.

https://beatsaver.com/maps/133c5

The sabers phasing through notes was probably a different issue which seems to have been fixed in the time since recording (late 2023); Apologies for not being more thorough. It still isn't fully correct though, I'm consistently missing more than with identical settings on 1.29.

I would strongly advise testing with lollope / hitbox abuse maps (i.e. https://beatsaver.com/maps/34845, https://beatsaver.com/maps/38a7c, https://beatsaver.com/maps/29895), as they are far more sensitive to differences in hit registration and in some cases are rendered quite literally impossible by this bug.

I'll be doing my own testing commenting out patches in NoodlePlayerInstaller.cs to narrow down what's actually causing the discrepancy and report back in a few hours.

@Meivyn
Copy link
Contributor

Meivyn commented Jun 2, 2024

Thanks for providing logs. Well, they would've been more useful for the other issue most likely, at least it shows that you got a minimal list of mods.

As for the other issue, I cannot tell if you are actually missing or if that's a bug. I rarely play Poodles maps (and honestly am very bad at it), but I saw someone else complaining about Poodles being "broken" on > 1.29.1. I find this kind of debatable and hard to prove, to me (as a very inexperienced Poodles player who struggles a lot on it) you are just missing notes, but that might be wrong.

It would probably be more clear with Naluluna's mod that shows hitboxes I guess. And on a single note.

@rcelyte
Copy link
Contributor Author

rcelyte commented Jun 2, 2024

I try to do at least 20 attempts before I make any definite conclusions. Playing a segment from 0:23 - 0:27 on https://beatsaver.com/maps/38a7c I fail ~10% of the time on vanilla and 95% of the time with "_requirements": ["Noodle Extensions"] added.

@Meivyn
Copy link
Contributor

Meivyn commented Jun 2, 2024

Isn't NE required to play Poodles maps?

@rcelyte
Copy link
Contributor Author

rcelyte commented Jun 2, 2024

It's normal pauls, not poodles.

@Meivyn
Copy link
Contributor

Meivyn commented Jun 2, 2024

Yeah I was asking for the map you played on the video.

Can you tell if that happens on 1.29.1? Just curious. I did notice that NE maps seem to make it harder to hit the notes, but I didn't make a case of it. Thought I was just bad. I am wondering how old this presumed bug is.

@Meivyn
Copy link
Contributor

Meivyn commented Jun 2, 2024

I'll be doing my own testing commenting out patches in NoodlePlayerInstaller.cs to narrow down what's actually causing the discrepancy and report back in a few hours.

Probably this one:

internal class SaberPlayerMovementFix : IAffinity, IDisposable

@rcelyte
Copy link
Contributor Author

rcelyte commented Jun 2, 2024

Can you tell if that happens on 1.29.1?

Having escaped DLL hell, I bring results! The issue is present on 1.29.1 using the latest BeatMods release (CustomJSONData 2.5.2, _Heck 1.5.0, Chroma 2.8.0, NoodleExtensions 1.6.0), however it is not present on an older build of Noodle for 1.29.1 (CustomJSONData 2.4.7 [Aeroluna/CustomJSONData@c0775be], _Heck 1.4.8 [2c0dc3d], Chroma 2.7.7, NoodleExtensions 1.5.8)

@rcelyte rcelyte changed the title [1.34.2+] Bad Hit Registration Bad Hit Registration Jun 2, 2024
@Meivyn
Copy link
Contributor

Meivyn commented Jun 2, 2024

There's a lot of versions between 1.6.0 and 1.5.8, 1.6.0 is basically the master branch. I'd like to help but I probably can't figure the difference between weird hitboxes and normal hitboxes.

@Meivyn
Copy link
Contributor

Meivyn commented Jun 21, 2024

Have you figured anything new since then?

@rcelyte
Copy link
Contributor Author

rcelyte commented Jun 22, 2024

I've been busy with work lately so I haven't found time to.

@Mawntee
Copy link
Collaborator

Mawntee commented Jul 31, 2024

@Aeroluna, Do you remember wayyy back when, I reported a bug about notes with any noodle properties being offset slightly (about half a note length) back or forward compared to a vanilla note? Like the origin point would get switched from the front face of the note, to the center of the note?

...how was the fix for that implemented?
Could that be what's happening here? Like the note visually is being offset closer, yet the hitbox is set forward or back about a half meter?

@rcelyte
Copy link
Contributor Author

rcelyte commented Jul 31, 2024

Is there a way to play with hitboxes visible? That could really help debug if this is the case.

@Meivyn
Copy link
Contributor

Meivyn commented Aug 1, 2024

There's this: https://youtu.be/IMziq-EIkIg

@rcelyte
Copy link
Contributor Author

rcelyte commented Aug 1, 2024

500 JPY

:(

@Meivyn
Copy link
Contributor

Meivyn commented Aug 1, 2024

It's indeed paywalled but that's for a whole collection of mods, and a lot of them are unique. It's cheap and definitely worth it. Plus that's the only existing solution anyway.

@UrkiMimi
Copy link

UrkiMimi commented Aug 2, 2024

Is there a way to play with hitboxes visible? That could really help debug if this is the case.

Custom notes maybe? I don't know of any that reflect the actual note hitboxes. (or i forgot)

@rcelyte
Copy link
Contributor Author

rcelyte commented Aug 2, 2024

Custom notes are aligned with the visual model, so they wouldn't show any potential desync between that and the physical collider.

@UrkiMimi
Copy link

UrkiMimi commented Aug 2, 2024

Oh for showing hitbox desync. I'm not sure what mod can display stuff like that but the only idea I have is RuntimeUnityEditor since that can display BoxColliders which is what the notes use.

@rcelyte
Copy link
Contributor Author

rcelyte commented Aug 2, 2024

I managed to draw hitboxes using some code copy+pasted from StackOverflow (pitch black since I couldn't figure out materials), and they look exactly the same in either case:

hitboxes.mp4

To help visualize my testing methodology (and how bad this issue is), here's a clip of me failing a pattern four times in a row with Noodle, then subsequently passing the same pattern five times in a row without Noodle:

red_haze.mp4

Id appreciate if someone could guide me on how to set up a wireframe material so the hitboxes don't make the game impossible to see 👍

@Meivyn
Copy link
Contributor

Meivyn commented Aug 4, 2024

I'll be doing my own testing commenting out patches in NoodlePlayerInstaller.cs to narrow down what's actually causing the discrepancy and report back in a few hours.

Probably this one:

internal class SaberPlayerMovementFix : IAffinity, IDisposable

Did you actually try without this patch or not?

@Aeroluna Aeroluna added type: bug Something isn't working status: can't reproduce Unable to reproduce bug labels Sep 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
mod: noodle extensions status: can't reproduce Unable to reproduce bug type: bug Something isn't working
Projects
None yet
Development

No branches or pull requests

5 participants