BoboFighter - Performant Server Sided Anti Exploit

NOTICE

BoboFighter has been discontinued and is replaced by a far more superior anti exploit:

76 Likes

The files in the repository seem to be deleted. Error?

4 Likes

Guilty, I was updating the files for performance tweeks and code refactor. Should be fixed now.

4 Likes

Silents has kept on sharing many progressions of his anti-exploit with me! He truly spent some efforts on it, and took care of many edge cases and problems a user might meet.

As he showed me, it’s super effective as well, with low amounts of overhead!

Very nice work, I recommend to at least take a look at it.

6 Likes

Great job! I can tell your goal was to make a better version of the Hexolus anticheat and you did a lot of work to do that, I’m glad!

My anticheat is quite messy in its current state and hasn’t received a major update for about a month. It’s a somewhat low priority for me and it is in need of some hefty refactoring.

Eventually I’m going to end up rewriting the Hexolus anticheat to use a modular check system so each check is stored in its own module and checks can easily be added. In doing so I’ll probably solve any performance issues, though, I believe it should be able to support about 50 players before it starts having any easily measurable impact on server Heartbeat.

If you want to try and get a head start on that you’d probably have a lot more luck with it since your code is way neater than mine is. (The way mine integrates with non Hexolus games is especially ugly and honestly is just a messy bandaid fix)

8 Likes

What exactly does this mean?
Would I get many false positives if I have a boat being physically simulated with multiple clients on it?
This can definitely help many people with developing their anti-cheat systems.

Thanks for opensourcing this!

1 Like

Nope, the anti cheat won’t detect you if you’re seated. Though, if you have an body velocity on the server with very high speed, the anti cheat will detect it.

2 Likes

Oh okay, so It would only detect very high speeds/accelerations?

What if the players are not seated, but standing on the boat that is being physically simulated.
The boat can rotate, turn and speed up (slowly).

Yes. The anti cheat may detect them if on very high speeds but for your case, it won’t as long as the boat’s speed isn’t faster than their walk speed. Though you can increase the leeways.

@Hexcede, I completely agree with your anti exploit needing a code refactor. Though performance wise, it has significantly bad performance. For each player, it is usually at .8 and peaks at 2 %, while for 8 players, it stays at 7% and peaks at 8%. If on 8 players, it stays at an average of 7%, which is extremely higher than what Roblox recommends, it won’t even be to handle 15 players considering if each player increases the activity by 1 percent, the script activity would peak at 15% average, and for 50 players, around 50% activity.

While mine remains at .7% and peaks at 1%

2 Likes

Yes i think its ok. I have right

Hmm interesting. I haven’t seen any effects from it in my game for some reason and I’ve had a good amount of people in at once.

Since my game is completely modular I have never been able to view the script activity for anything so what I do to measure performance is basically to use brute force and track what happens to the server heartbeat the more players I have and the more copies of something I am running at once. I also have my own profiler in the game (rather than using the microprofiler) in order to track performance for some of the more interesting pieces of code like terrain gen.

Afaik the anticheat isn’t well optimized but it also shouldn’t actually be contributing all that much to lag. I’m not really sure how Roblox measures performance/script activtiy and such but I’d assume that represents the percentage of time that’s being spent, so, if all the scripts in the game are taking 100ms 1ms would be 1% of the total time. I would think that 50% activity in a mostly empty game would at most be 50% of maybe 30 ms or so so I would think 50% in an empty baseplate in that case would correspond to about 15 ms total from my code.

But yeah I would certainly not expect it to be even remotely faster than your anticheat because relatively speaking its very poorly optimized its just not much time.

Your anticheat is easily much more viable for 100 player servers, mine would probably not do so well.

3 Likes

Good AV, but what kind of name is “BoboFighter” lol :laughing:

4 Likes

Bobo I’m having a problem with the Multi Tool anti-exploit
I have it disabled so it won’t scan for Multiple Tools being used at the same time, but it is causing issues

Everytime I unequip a tool it automatically equips back

Bobo Fighter Update v1.6 - Beta

  • Replaced time with os.clock since time is not reliable as its affected by physics simulation, and os.clock is far more accurate.

  • Fixed a bug where the module would error if the primary part of the player’s character was nil.

  • Fixed a bug where the tool a player would en-equip would be equipped back.

  • New detection InvalidHatDrop – invalidly dropping tools.

Update your module here:

4 Likes

The bug has been fixed. Also, the player can’t possibly equip more than 1 tool at the same time, so there is really no need to disable the MultiTool support, unless your game handles those tools in some specific way.

2 Likes

I think my addition of the InvalidDrop in my pull requests was kind of unnecessary as it seems Roblox already has patched this. But it’s still better to have it as you never known if Roblox disables their patch.

Edit: It also seems Roblox has patched invalid tool drop. But it’s better to have both as Roblox could disable their patches. Sometimes they do if their patches break something.

I tested in studio and it seems they have. I have to re-test this.

For me at least dropping tools when .CanBeDropped on the server is false doesn’t work suggesting Roblox has patched it. Correct me if I am wrong.

That isn’t how it works, a client can simply just delete the tool on the client and it will replicate.

Yes Roblox doesn’t prevent tool deletion however they do prevent invalid tool dropping.