tetrio / issues

Report issues and discuss improvements / feature requests around TETR.IO
https://tetr.io
387 stars 21 forks source link

Rotating a piece near a wall can stall the piece #1277

Open KonSola5 opened 3 months ago

KonSola5 commented 3 months ago

Checklist

OS and Version

Windows 10

Browser and version

Firefox 123.0.1

Describe the bug/issue

Rotating a piece near a wall at or above the spawnpoint of that piece anywhere on the wall can stall the piece, until the kick limit kicks in and pushes the piece downward.

Works in all modes, both singleplayer and multiplayer.

If the piece already fell down due to the kick limit, no more stalling can occur.

Reproducing

  1. DAS a piece to the side, and keep holding the direction key. The piece needs to be able to kick/rotate, so O pieces will only work in ASC.
  2. Start spamming any rotation key, while holding the direction key.
  3. Notice that the piece doesn't fall, until the kick limit is reached.

Expected behavior

The piece should be affected by gravity at all times, and rotations near a wall should not affect the piece falling.

Screenshots

This video was taken in Zen in Relaxing gravity.

https://github.com/tetrio/issues/assets/125081901/a777853c-bc2f-4a1f-86c5-24d357f05428

Console logs

Not needed.

Additional context

No response

ZaptorZap commented 3 months ago

This is 100% known to osk and I believe is an intentional quirk of the engine. Notice that you aren't out of lock resets once the piece hits the ground. Mechanics dictate that the number of lock resets are brought back up to 15 after the piece reaches a newest low row in the board.

The piece's gravity timer is reset because a kick occurred(one off the wall). After only so many of these resets, the anti-stall mechanic for no longer applying this reset kicks in, as demonstrated in your video. If this behavior were truly unintended, I'm sure that the aforementioned anti-stall would simply be in-effect at all times.

That said I'm not a developer, so I don't feel like I have the authority to close this as invalid.

github-actions[bot] commented 3 days ago

This bug report has not seen any activity in a while. If the issue is still relevant, please comment on it or the issue will be automatically closed. This way, the issue tracker can be kept clean. Thank you!

KonSola5 commented 3 days ago

Still relevant

KonSola5 commented 3 days ago

One thing I learned since that time: Spirit Drop behaves similarly, in terms of: if the piece kicks the wall, 1 rotation reset is used and the falling progress is reset. Although Spirit Drop's lock delay mechanics are a bit different than TETR.IO's. Spirit Drop has a hard cap on the amount of movement and rotation lock delay resets, which are not reset with the piece stepping down. TETR.IO behaves like a guideline game, having 15 move/rotation resets that reset with the piece stepping down, instantly locking the piece if resets are depleted.

Although why does kicking the piece off-the-wall stalls the piece, but stops working after the first time move/rotation resets are depleted?