How exactly would i handle effects and hitboxes?

so ive been thinking how exactly should i handle effects and stuff in my game?? people say handle the visuals on the client and handle the hitboxes on the server but how exactly do i do this???

for example i have a fireball in my game that shoots fowards and explodes on impact, the hitbox has a particle emitter in it so when the fireball is travelling it like creates a well travelling effect i have all of this just server sided because how am i suppose to make seperate the hitbox and the effect when the hitbox HAS to have the effect in it???

3 Likes

Do hitbox detection on the server while transferring visual effects to the client. Calculate the final position and time for the fireball on the server, then, the client animates the fireball, and the server performs hitbox calculations, wait the “time” you calculated and finish the hitbox calculations (kill the player).

Use this process:

  1. Client takes in input, plays animation for instant feedback while turning on the hitbox for the attack
  2. Server recieves event when the client claims that it “hit” something, does some sanity checks like is it through a wall, was the animation that played the correct one, is it close enough to the player, or basically if the hit makes sense.
  3. If it does make sense it’ll handle damage on the server and fire to all clients if necessary to run certain effects
  4. Client recieves the command to run these effects and plays them so the server doesn’t have to replicate them and take the load off the server
2 Likes

why do this instead of just handling it all on the server? it kinds makes things way more simple and each script wont take 5 years to make(exaggerating lol), thats the main part im confused about, i know it like reduces load and lowers lag and stuff but ive never done this for any of my games and they all ran just fine

1 Like

If your current method suits your needs, then that’s fine. But for optimization or more significant effects like tweening or velocities, client-side optimization is better, especially in larger servers. Your current approach is ideal for a smaller server with fewer replications to multiple users.

1 Like

The advantages of applying effects on the client side are primarily that each player can manage the effects, potentially optimizing them based on graphics settings and even improving performance on less powerful devices. Additionally, using the TweenService on the client side can result in a
:sparkles: smoother :sparkles: visual experience.

2 Likes

yea but the thing is it would be so much code for my simple little fireball particle that wont cause much if any load anyways so is it like u have to do ALL visuals client sided or only big ones, because if i have a small little snowflake that appears on the ground(0.2,0.2,0.2 in size) would i have to really go through the trouble in making it client sided??

im talking about particles btw not tweening or anything else just particles

1 Like

I made my hitboxes for magma balls to be just blocks controlled by the server, sizing, moving physics, etc. The server sends every block with a GUID assigned as an attribute in a table.

The client has a table with all effect parts inside it, with GUID’s as the index.

When the client receives the blocks, it checks if it has a index with the GUID equivalent, if it does, it changes the equivalents size and position to the blocks. If it doesnt find the equivalent, it creates a new efffect ball and assigns the GUID of its reference block.

1 Like

I send the current state of the fireball to the client in real time instead because im lazy.

It’s worth starting to work on the client so that when heavier effects come up, you already have a foundation. Moreover, it would improve organization to some extent by keeping all the effects in modules on the client.

Here’s a place with an excellent replication system that’s simple to use.

TestPlace.rbxl (55.0 KB)

1 Like

yea i attempted this been trying for about 2 days cant figure out how to make it work(well i made it work but like if multiple players use the attack at the same time it just breaks the script and doesnt destroy effects) is making client sided effects a MUST DO like my game is just going to be completely unplayable if i dont make the effects client sided, or can i just do it the simple normal way and play effects on the server my game isnt big its a rng game where u spin for elements and pvp(basscially elemental battle grounds but with more content)

Why not do client side hit detection, then in the server we verify the hit of the the attacker, so it’ll be more responsive?