NOTICE
The parent project, Hexolus, is discontinued as well as the anticheat itself. As for the rewrite I mentioned below, I currently have other stuff going on right now and I can’t make promises on anything.
This anticheat is getting replaced pretty soon by a very big rewrite I’m doing. The new anticheat version will go by the name Polygon
, its not really ready for use yet but it should offer much better performance for very large servers and will improve a lot of issues, especially organization.
Anticheat
NOTE: The anticheat itself is not called Hexolus, that’s the name of the game that it was originally created for, seems to be common that people confuse that. You should read the FAQ section on the GitHub page, you can get to it below.
Hello!
I’ve started to open source some of the bigger features in my ongoing project, Hexolus.
It will be quite a while before most things in the game become open source, and I likely won’t be open sourcing the whole game, but I will eventually open source most of the big fundamental pieces of code in the game.
These will include the game’s structure placer, which is partially available in its own repo, its entity management system, which isn’t available yet but will be as time goes on, the code sandboxing system the game will use, and likely much more.
Quickstart
- Go to the github releases
- Download the latest release or pre-release
- Insert it into your game somewhere under ServerScriptService, it doesn’t really matter where
- If it might impact your game, test potentially incompatible features, and disable or adjust incompatible checks/thresholds
The releases can be found here:
Features
The anticheat for the game includes several server sided checks for common movement exploits which act as a filtering enabled for physics, and it has been fine tuned based on my article on anticheat development.
I’ve been working on improving it for several months and continue to make frequent improvements to its stability, compatibility, and the range of exploits it protects against.
The anticheat has the following (stable) checks within it and more to come, without any client code, or any reliance on the client at all:
- Speed, vertical and horizontal separately
- Teleportation, vertical and horizontal separately
- Noclipping
- Tool deletion (Deleting tools on the client)
- Invalid tool dropping (Dropping non-CanBeDropped tools)
- FE Godmode (Humanoid deletion)
The anticheat will eventually fully support the following checks:
- Flight, anti-gravity, no gravity, high jump, etc
- Accessory dropping/deleting
- Humanoid state checking, and explicit compatibility with existing checks (Air climbing/air swimming, pseudo-invincibility, air jumping, ladder speed, etc)
- And much more
And, of course, an enormous thank you to @grilme99 below for their explanation of how Changed
events work for CFrame
/Position
. This allowed the anticheat to support server side teleportation, and scripted physics updates to velocity, which would have been impossible without their help.
How does it work, and how good is it at stopping exploits?
Every physics tick it uses simple physics prediction to make a “guess” at where the player should be based on physics information from the last physics tick. Then it makes measurements to decide if the player has violated the prediction enough to be a concern.
If the anticheat deems the player’s movement to be invalid, the anticheat will bring them back into a valid area, and will then try to do a simple prediction for the client’s next behavior to help account for rubberbanding. This results in a almost completely seamless experience for players, especially in games which don’t rely on complex physics.
To make things better, because this happens every physics tick, no lag back, stuttering, etc will appear for other players or your scripts when a player is trying to exploit. If they are noclipping, they will appear as if they are running in place against the wall, if they are speed hacking they will appear to be moving at their normal WalkSpeed.
Use in your games
Hexolus’ anticheat is designed to be a drop-in. Its purpose is to be easy to implement, smart enough to avoid compatibility issues, and, most importantly, should have as little negative impact on your players as possible while still stopping exploits.
The anticheat currently works best for simple games that don’t customize physics much, such as minigames, though, over time I am improving compatibility, and reducing its impact on players even in places where it would be considered minimal. It is also licensed under CC0, which means you have the ability to do anything with the code you like with no extra strings attached.
Github repositories
As I open source more code this post will be updated to reflect changes.
You can find the anticheat repository with the latest releases here:
I encourage you to create issues on the repository and otherwise contribute if you have any compatibility concerns with the anticheat.
Additionally, you can find the other components I open source in this “hub” repository, which will always contain the latest stable versions of each repository: