Introduction
ClientCast is a performant solution to melee hitboxes, allowing you to provide a smooth and lagless combat experience for your players. Why? Because ClientCast was designed with User Experience (UX) in mind - by calculating the hitbox on the client, not only is there no visual delay for when the player hits someone, but the player won’t miss the hitting targets due to a player’s ping! Not only is it easy for the client to have a smooth combat experience, but it’s also made extremely easy for the developer to implement! To keep maximum customizability in mind, ClientCast does not restrict you in any way - this means ClientCast does not have its own debounces and ignore lists so that you can customize it just the way you want.
Why this module?
ClientCast has been designed with easy client-server communication in mind - something no other module has done, as all of them are server-based. Not only that, but ClientCast has been designed with ease-of-use in mind in general - want to detect when a hitbox hits a humanoid? Simply connect to the Caster.HumanoidCollided
event!
This module is very easy to use, and costs you nothing - your benefits? smooth combat and happy players!
How to Use
General tips if you set the ClientCaster’s owner to a client:
-
Validate whether the actual instance that was hit is close enough / accurate, as exploiters could spoof this value whenever it’s being sent over to the server. There is no one reliable way to verify this, and as such, you should program your own solutions depending on the context.
-
Validate whether or not the hit position is too far away to prevent exploits. ClientCast does not do this for you.
Example:
Caster.Collided:Connect(function(Data)
if (Data.Position - Caster.Object.Position).Magnitude > 5 then
return print("very likely an exploiter")
end
end)
If you would like to take into account for the player’s ping, you can easily get their ping through Player:GetNetworkPing()
.
Links
Latest release (Release.rbxm is the module): Releases · Pyseph/ClientCast · GitHub
ClientCast Wiki: ClientCast
Script-injection behavior
The ClientCast module has a Settings
table at the top of the script, which you can edit to suit your needs.
ClientCast automatically sets everything up for you so long you require ClientCast
at least once, meaning it creates a RemoteEvent
, parents localscripts to all clients and so on. If you wish to disable this behavior and manually edit the setup, set AutoSetup
in the Settings
table to false
.
Please note that neither Collided
nor HumanoidCollided
have limits on how many times they can hit an object that is already hit, so make sure to implement your own debounces and checks.
Example Usage
hitboxes for our game’s weapons rely on a modified version of ClientCast:
Example usage along with a sample video can be found here: ClientCast