Rope attached piece in another player's tool moves choppily

I created a very simple game that I personally think has potential to become something greater if i can find a work around for one fundamental flaw. The idea of the game is that you have a deadly block on the end of the rope, and you can pull it around and attack people with it on a low friction surface.

The issue is that while the rope and block you have is buttery smooth, for opposing players it jitters around at a lower FPS that I think the average player would find unacceptable- don’t get me wrong, it’s still playable, but cosmetically it looks terrible.

The goal is to make it so that opposing player’s blocks both look smooth, yet still accurately portray where they are server side so that player can tell when they’re going to be hit and it doesn’t come out of nowhere, or have instances where an attacker thinks they should of hit someone but they go straight through it.

A video demonstrating this is linked here:


The tool itself is incredibly simple, it is two blocks, one is a handle, the other is a kill brick. There’s a rope between them.

Capture

As for what I’ve tried, we’ve workshopped a couple ideas, but judging by how roblox makes players seem so fluidly controlled, I’m hoping there’s some feature I can enable for these tools that will achieve a similar effect.

We could:
Have each player simulate the rope blocks client side, but this will result in either hits that don’t kill (if we track killing on the victim side) or deaths that look like you weren’t hit (if we track kills on the attacker’s side). Not to mention security concerns.

We could have a real block that’s invisible server side, and then simulate the block client side, but the two might end up in wildly different positions.

So far the best results have been from the current very simple set up.

Is there a rendering mode we could enable, or some script wizardry that would solve this?

Thanks for reading.

Unfortunately you cannot do much about this. Your best bet would have to be client-side rendering with server-side checking and interval syncing.

Could you explain what you mean by interval syncing? How would you check the block serverside if it’s rendered on the client?

It’s definitely a lot more complicated with physics-based stuff like this, and it will also depend on how you actually rotate the block.

It’s even more work trying to even simulate rope (and potentially BodyMovers/Constraints) physics, so I would probably recommend going with your method and creating the invisible block in the server and having the client render it.

You can send a ping from the server to all the clients of the actual position/properties every x amount of seconds and updating the block (physics).