Countering Client Flaws

Hey!
A friend and I have been working a game that features many different challenges. One of these challenges is a spinner type challenge where players are organized in a circle and must jump over a spinning bar to survive (shown in the first video). This is not at all an original idea—I’ve seen plenty of similar minigames in other Roblox games—however, our approach is slightly different. From our experience with such games, we’ve discovered that the spinning bar is quite susceptible to lag when controlled on the server side, so our plan was to make the rotation of the bar occur completely on the local end. This method seems to deliver the intended result, though we have an obvious problem.

The YouTube video below demonstrates a client-sided flaw that allows players to “freeze” their characters in place for an extended period of time. Using this technique, I was able to avoid the spinning bar in our game by freezing in the air (also shown in the first video). Knowing that this technique does not work in other spinner bar games, I assume the reason this works in our game is because of the fact that we decided to handle part movement on the client (correct me if I am wrong about this). Is there any way we can avoid this problem from occurring?

Our game:
https://streamable.com/0u8o7v

Freeze glitch demonstration (YouTube):

Let me know if I did not clarify anything.

Thanks!

I don’t think this glitch is preventable, but you might consider having a mini anti-cheat that checks if the player hasn’t touched the ground in a while.

You could do this by shooting a Raycast towards the floor with a length slightly higher than their JumpHeight or by using Humanoid.FloorMaterial.

If the result is positive (the Raycast doesn’t hit anything) for a certain amount of time you could teleport them back down, and if they multiple positives you could eliminate them.

1 Like

Yeah, I thought about developing some sort of “anti-cheat”-type system similar to that, though I’m worried about potential client inconsistencies. I think all anti-cheats have some inherent design issues that don’t properly account for the vast amount of situations and states that the client can be in. Though, since the challenge is fairly limited in movement, I think an anti-cheat system like what you described is the best option here. Thanks!