Hello i would like to introduce my anticheat that works by creating a copy of your character on server that replicates movement that the client sends to it. This system can have desyncs in difficult situations for roblox physics as of now because its in alpha and doesnt have any ping compensation (coming tmrw).
It also has action system to replicate your client sided stuff to server.
On the client:
local SyncClient = require(game.ReplicatedStorage.Sync.Client)
local ContextActionService = game:GetService("ContextActionService")
local bool = false
ContextActionService:BindAction("Sit", function()
bool = not bool
SyncClient.Actions.Send("Sit", bool)
game:GetService("Players").LocalPlayer.Character.Humanoid.Sit = bool
end, true, Enum.KeyCode.X)
On the Server:
local SyncServer = require(game.ReplicatedStorage.Sync.Server)
SyncServer.Actions.OnAction("Sit", function(player, bool)
local character = player.Character
character.Humanoid.Sit = bool
end)
It also has basic protection from exploiters by design. They cant require the module unless they know unc functions unlike some skids.
All of it is written in --!strict if you mind that…
Forgive me if I’m incorrect since I have not looked at the source code but does this have client-sided prediction? I can already see the input latency issues on high ping servers from a mile away.
I’d also recommend instead of sending direct values for moveDirection, jumping, etc you should just send the input they pressed and then the server and client handles it, if the server rejects the input request you can just interpolate the client back to its previous position that is saved around that timestamp.