Well it’s your choice I can’t force you to do anything its your game after all. But I think most people would prefer if the texts stay in the same spot.
As in “client-side”, I meant that server clones the map and moves it into workspace at once.
On the client, it just preloads map’s parts, textures and etc. Since everyone have different computers, the time of loading would be different for everyone, hence the sync up issue.
Not really, mostly server. It just uses task.wait() because I don’t really know how to preload parts on server.
Though I could in theory use :WaitForChild() to yield so it’s pretty much “preloading” or waiting for all the parts of the map to appear.
Actually I think it might work I will try it someday.
It’s not really that hard to make actually.
The text moves in a circle, which can be done through math.cos and math.sin functions.
The background doesn’t move in a circle movement, but it still uses math.sin for a nice up and down movement.
If you don’t know how those work then I really recommend to read about the sin and cos functions.
For the script, I just have a variable which I increase in a loop, and then change the position/rotation according to the variable.
local value = 0
local textOrigin = textLabel.Position
local bgOrigin = background.Position
game:GetService("RunService").RenderStepped:Connect(function(dt)
value += dt
--for text:
textLabel.Rotation = math.cos(value) * 2
textLabel.Position = UDim2.fromScale(textOrigin.X.Scale + math.cos(value) / 100, textOrigin.Y.Scale + math.sin(value) / 100)
--for background image
background.Position = UDim2.fromScale(bgOrigin.X.Scale, bgOrigin.Y.Scale + math.sin(value) / -50)
end)