Hey there!
I’ve been attempting to create an anti-cheat around Roblox’s humanoid for a while now. I’ve made multiple server-sided anti-cheats over the past year, and have gained a lot of experience. I mainly made them out of fun and love the “cyber security” aspect (if you want to call it that). With each iteration I’d make, I would try to come closer and closer to a 1:1 movement validation system. An anti-cheat which would theoretically determine that a player is moving in a way that isn’t possible within Roblox’s physics, and effectively stop any movement exploit. However, this is where I hit a bottleneck.
Now, before I go on further, I already know about server authoritative movement and Chickynoid. However, my little pea brain can’t really scratch my head or have the time to make one, nor does Roblox’s engine really allow for it properly. Another part of me also feels like there’s potentially a better (simpler) way to achieve something LIKE Chickynoid, which is why I’m making this post!
Back onto my situation, I ended up making a fairly good anti-cheat - being able to detect only a 2 stud difference in velocity on an X, Z axis, which is completely lag compensated. As well as being able to detect pretty much all fly’s by calcuating a player’s max possible air time (I’m sure Y-Port fly’s would bypass?). The thing is, that’s only cool until you realise you need to account for Roblox’s weird humanoid quirks, and part velocity that changes the player’s velocity, and the player’s being able to boost off of random parts, or the fact that you realise you’re using something on your server-sided anti-cheat that an exploiter can spoof from their end, then you make a whole new function to determine something Roblox has already calculated for yourself since there’s a massive security flaw, and it all just gets so… inconsistent. You also end up creating a cluster of leniency where it just feels like you’re just patching bug, after bug, due to the inconsistencies of Roblox’s humanoid. (Oh and collision… It’s tough trying to lag compensate a no-clip check. Unless anyone has any ideas?)
So, what am I trying to propose, or ask for help here? Well… Is there a better way? Would it be better to make an anti-cheat using your own custom physics controller? With this physics controller, could you re-simulate this movement within the server instead of relying on client inputs and all this - “networking jazz”? Is there a simpler way to create server authoritive movement? I’d just like some advice from someone experienced in this field, and what worked for you. Where should I go from here?
At the end of the day, this is just a passion project, and I find it interesting. I’m not doing this for a game (as most people are), I’m just creating it out of the enjoyment I get - a sense of achievement. If anyone wants to spread any light in helping me create a 1:1 movement validation system of SOME sorts, or their own advice on where to go from here, please pop some advice below!
Thanks!
(apologies for the long post)