How to make a tween smooth?

Hello!
I got a little problem
I’m making a 4 crystals is rotating around player
Well I make it but the tween are spamming and I don’t know how to prevent it
I tried do debaunce but when I did debaunce it was tweening everyone part slower
What I’m exactly doing is magic (yep)
Well I don’t know how to fix it
So I’m asking you if you can help me
There is needed resources you need to help me

Script

The script it server script!

game.Players.PlayerAdded:Connect(function(player)
	 wait(5)
	 for _,attch in pairs(game.ServerStorage.Attachments:GetChildren()) do
		local Cloned = attch:Clone()
		Cloned.Parent = player.Character.HumanoidRootPart
	  end
	  local CrystalFolder = Instance.new("Folder",player.Character)
	  local Cry1 = game.ServerStorage.Crystal:Clone()
	  local Cry2 = game.ServerStorage.Crystal:Clone()
	  local Cry3 = game.ServerStorage.Crystal:Clone()
	  local Cry4 = game.ServerStorage.Crystal:Clone()
	  CrystalFolder.Name = "Crystals"
	  Cry1.Parent = CrystalFolder
	  Cry2.Parent = CrystalFolder
	  Cry3.Parent = CrystalFolder
	  Cry4.Parent = CrystalFolder
	  local did = 1
	  for _,crystal in pairs(CrystalFolder:GetChildren()) do
		   crystal.Name = "Crystal"..did
		   crystal.Position = player.Character.HumanoidRootPart["Crystal"..did].WorldPosition
		   did = did + 1
	   end
	local IsAlreadyTweening = false
	 while wait(0.001) do
		if IsAlreadyTweening == false then
		IsAlreadyTweening = true
			local did = 1
	     for _,crystal in pairs(CrystalFolder:GetChildren()) do
			   crystal.Name = "Crystal"..did
				local Tween = game:GetService("TweenService"):Create(crystal,TweenInfo.new(0.3,Enum.EasingStyle.Sine,Enum.EasingDirection.In),{Position = player.Character.HumanoidRootPart["Crystal"..did].WorldPosition},false)
				did = did + 1
			    Tween:Play()
			      end
			IsAlreadyTweening = false
		end
	end
end)
Result of that script

As you can see the tween is not smooth and look terrible!
Dropbox - File Deleted - Simplify your life

Anyway thanks for reading and byee! <3

I think you can use BodyMovers to achieve this effect instead of tweening. Try using BodyPositions for moving the crystals and BodyGyros for rotating them.

About why it’s not so smooth, this is probably due to replication rate. The server has to replicate the tween to every client, which makes it look not so smooth.

I don’t really understand how this can help me can you explain it more ?
Thanks

You could maybe try making it so the tweening is performed by the client. (Maybe using set network owner?)

You should create the tween on the client, this will make it really smooth for them. But also other people won’t be able to see the tween (I think).

I got idea I think I will do remote event then when server will fire for all clients it will send TweenInfo changes etc. I will do it

Yes you could do that but think about how many times it will send the tween to all clients. If you do it to often your server may become laggy.

A good alternative would be to use the event RenderStepped + Lerp to change it very smoothly. To make it visible to everyone I recommend to use RemoteEvents and a ServerSkript. Before you ask me now, what is where who, I tell you already you should look for it instead of answering after 3 seconds.