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 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