Hey everyone, for the last month or two I’ve been trying to recreate Rocket League and I’m having some problems with the ball. At the moment I’m using the default Roblox physics system and to make the ball smoother I’m assigning its network property to the closest player.
But this causes multiple problems:
Sometimes when two players are very close to the ball, there is some latency for one of the players,
Since the ball belongs to a client and the goals are detected on the server, there is also some latency when the ball enters the goals,
Finally, it can be very easily exploited since it is the player who can code the ball.
So if anyone has a solution to these problems please let me know, I don’t know if writing my own physics system is realistic even though Rocket League doesn’t have things like air drag. Anyway, any help is appreciated, thanks and have a great day!
Well, unfortunately this will always be a problem, but the best solution I can think of is to have each client render the physics of their own ball.
on a safe client, they can hit the ball smoothlessly and send some data to the server so it can do some sanity checks. Considering the type of gameplay that rocket league has, the delay between the server and client is a huge problem and for that reason the server will almost never calculate the ball, just track it
On a unsafe client, they can completely manipulate the ball, but if their balls position doesn’t match with the server, don’t count the score. The server grabs positions off of safe clients to see if the ball really is where it was supposed to be
The servers job is to synchronize and track the balls and their velocities, most preferably whenever it bounces
problems:
If you must find a trustworthy client to give data to the server
And discrepancy’s between the physics engine can cause ball to appear in different positions
clients watching someone else hit the ball will appear to be laggy
If worst comes to work you will have to find a way to predict the position of each play and the ball to compensate for server delay. But these are just my ideas