Client ball and server ball system laggy

but I don’t think it’s a noticable problem.

So how would I tween the client ball? The server ball is delayed so making the client ball copy the server ball wouldn’t do anything

Could I also just use custom physics? Like a physics module?

How would they implement tween service?

Perhaps not tween service, but a heartbeat loop updating the CFrame using suvat.

I.e.

s = ut + 1/2at^2 (a = gravity, u = initial velocity, t = 0 += deltaTime)

I don’t know what your education level is, but this is sometime around final years of GCSE?

Or in freedom terms:
Sometime around calculus in highschool… probably.

No, I haven’t learned calculus yet. Could I just use bezier curves?

It’s not calculus - I’m just saying you learn it sometime around then.

Bezier curves, sure.

Ok, so I’ve tried making the player who hit the ball hit it on their clients, but for some reason, there is delay on the client. Keep in mind that each client gets their own ball, they arent sharing one so there are no more network ownership problems. Here is a snippet of the bumping section:

	local con
			con =game:GetService("RunService").RenderStepped:Connect(function()
				if (balldetected == true and updated == true) or bumphb.Parent == nil then
					con:Disconnect()
				end
				for i,v in pairs(workspace:GetPartsInPart(bumphb, olp)) do
						
						
					if v.Name == 'ServerBall'  and v:GetAttribute("Active") then
						balldetected = true
							BumpInfo.DB = true
							v.GameBall:SetAttribute("Update",  false)
						
						ballmod.Bump(char, v.GameBall)
						packets.Bump.send({
							ball = v,
							pos = v:WaitForChild("GameBall").Position,
							vel = v:WaitForChild("GameBall").AssemblyLinearVelocity
						})
						repeat 
							task.wait()
						until v:GetAttribute("JustHit") == true
					
						local t = 0.1
						local tweeni = TweenInfo.new(t, Enum.EasingStyle.Linear, Enum.EasingDirection.In, 0, false)
						local goal = {Position = v.Position}
						local tween = ts:Create(v.GameBall, tweeni, goal)
					--	tween:Play()
						v:WaitForChild("GameBall"):SetAttribute("Update", true)
						updated = true
						
					end
				end
			end)
			

it may have something to do with using renderstepped but Im not sure

Wouldn’t it be this line? Is this line even needed?

I removed those lines but nothing changed

You’re using some custom networking module, right? Do any of those methods you used yield?

Yes, i’m using ByteNet, and what do you mean by yield?

For our case, ‘Yielding’ means the function will halt execution until it finishes.

I don’t think so but it shouldn’t matter since I’m sending the ball client sided before the info is sent to the server

I’m asking whether it yields here:

I just tested it and no it doesn’t yield

Could you show a clip of the ball delay?

I kind of tried to restart the physics system but it isn’t working

Nevermind I fixed the physics system but I’m gonna take a break for today