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

Allow judging at most one swell tick per frame #25010

Merged
merged 4 commits into from Oct 5, 2023
Merged

Conversation

bdach
Copy link
Collaborator

@bdach bdach commented Oct 4, 2023

Addresses part of #24780.

This PR changes swell input handling such that only one swell tick can be judged in a given update frame. This is supposed to curtail cases wherein a user binds (either in-game, or via external tools) all four taiko actions to one key, to knock out four hits at a time with one key.

Note that this is supposed to be a starting point rather than a complete solution. As per #24780 (comment), this change is actually quite lenient in comparison to stable, in two respects:

  • In stable, if in one frame you hit a key that is not properly alternated and another key that is properly alternated, then the not-alternated press blocks the alternated press. In other words, the following sequence of hits:

    left rim
    left rim + right center
    

    will cause just one swell tick to be judged, even though the right center hit could have been considered valid. The implementation in this PR assumes good faith, and will count the right center hit as valid. The reason I did this is that I can see perfectly reasonable cases wherein you may e.g. have a chattering key that will cause an input to be repeated and as such unfairly eat a valid press with stable's implementation.

  • Also, as per the code snippet here - as long as score V2 is off - stable enforces a cooldown duration of 30ms between subsequent hits on a swell. I'm not sure what to do with that given it's dependent on score V2 for whatever reason, so I decided not to implement it for now.

If you wish to test stable, then SwellTest.zip contains a beatmap with one swell on it, as well as a replay on said map wherein all 4 keys are pressed in a single frame 7 times.

  • On lazer master this clears the swell;
  • with this PR, it gets the swell halfway to clear;
  • on stable, due to the pessimistic treatment of inputs, the replay registers just one hit. (The 30ms thing is largely irrelevant in this context.)

@bdach bdach self-assigned this Oct 4, 2023
@peppy peppy self-requested a review October 4, 2023 18:46
@peppy peppy added the next release Pull requests which are almost there. We'll aim to get them in the next release, but no guarantees! label Oct 5, 2023
@peppy peppy self-requested a review October 5, 2023 13:19
@peppy peppy enabled auto-merge October 5, 2023 14:08
@peppy peppy disabled auto-merge October 5, 2023 14:50
@peppy peppy merged commit d034a3c into ppy:master Oct 5, 2023
9 of 11 checks passed
@bdach bdach deleted the swell-cheesing branch October 5, 2023 16:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:gameplay next release Pull requests which are almost there. We'll aim to get them in the next release, but no guarantees! ruleset/osu!taiko size/M
Projects
No open projects
Development

Successfully merging this pull request may close these issues.

None yet

2 participants