Anti Tab Glitch (server-sided | original release)

The thing your trying to patch might not be an exploit, just a Roblox feature
Go to #feature-requests and make a post about server-sided player physics to prevent alt-tabbing

Again, i think you can fix this by just forcing the network owner of the player’s rootpart of the character to the server so it’s physics are handled by the server. Only issue, Roblox’s player scripts aren’t designed for that so your better approach would be just to do magnitude checks on the server and whether a player can access certain area, and if they can’t then teleport them back.

2 Likes

Some games may possibly moderate users for tab glitching, which is well within their rights to do so, but as far as tabbing is concerned, I do not think it’ll be something Roblox will likely change in the near future either; seeing as it’s been an issue for years, and said issue really isn’t causing major disruptions to the platform. Moreso, it isn’t a bannable offense to tab glitch as far as the ToS/CS is concerned.

1 Like

They could make it so non-forced network ownership (SetNetworkOwnerAuto) will default to server or another nearby client if the said owner client alt-tabbed.
Ofc forced network ownership (SetNetworkOwner) would still suffer from alt-tabs since i think script forced network owner should only be reset if a client owned it and that client left the game server (which would it default to server/automatic) and also because to not break certain scripts that rely on setting a part or NPC’s network owner to the server and have the engine suddenly reset it back to automatic, doesn’t sound good

1 Like

I do love (im obssessed) server sided physics but you pointing that out here seems disrespectful, I didn’t even suggest them as a fix here and nor do I think they are the solution here because this isn’t a problem directly related to it.

I just said that regardless the program will freeze and you can’t do anything about it, and when the client freezes your physics freeze.

The thing you suggested about switching network ownership honestly seems like the most appropriate here as we don’t care about responsiveness from the player’s perspective since they aren’t even on the controls while tabbed (i forgor that existed).

1 Like

Yeah i am very disrespectful like that.

Anyway, you could perhaps have the player character (actual character) to be invisible and have it’s network owner be owned by the server and render the visuals on the client while also smoothing out the character on the clientside because that’s the only thing i can think of or you use Chickynoid but tbh if you’re someone who only wants their own code in their game then Chickynoid is not an valid option.

2 Likes

Do not use chickynoid, you will go insane!

1 Like

Personally I feel like the kick should be replaced with just something that brings the player to the ground/unglitches them, or kills them, or something; I mean, holding the tab isn’t just used to do the glitch; what if someone wants to move their roblox tab? Like to another monitor, or if they just want to move it for whatever reason

2 Likes

Yeah and client having network owner of their OWN character isn’t that bad since they are only affecting their own character so the only way cheating could affect your game is when it’s a simple Obby or your game is a singleplayer game running on the client (for authentic purposes). A normal multiplayer game would use remotes to communicate with the server and client and have checks in place to let’s say prevent a player from teleporting somewhere when they shouldn’t, but you shouldn’t worry about client abusing physics that much and just try to prevent remote exploits like imagine you had a remote that allowed the client to change any variable on the server or deal infinite amounts of damage to any entities on the map. That sounds more problematic than a simple physics exploit.

really helpful script but does it also kick laggy players?

Couldn’t you write a local script that uses RunService.Heartbeat to check if the time since the last frame was extremely big and then kick the player.

Of course you could tune this and improve it to not have false positives, but i think it could work.

You could improve it using task.delay(5, function()