Constantly moving and rotating the map background

Hello devforum.
I come to you in a time of need.
Recently, I came across this map from the game Team Fortress 2.
The thing I’m trying to recreate is its background: while playing the round, the background of the map (a railway) constantly moves forward, it also rotates in some places.
How would I recreate this effect within the Roblox engine?

TweenSerivce on repeat or RunService, by using the change in time (Delta time which I’ll refer to as dt).

For TweenService the start and end of the map have to look alike, the path should be set Linear.
For RunService you’ll use the change in time to calculate the distance (which I’ll refer to as x) you’ll have a certain speed the trains will have (v). Now to calculate the distance we will use the equation
x = v * dt, only one problem with this is that they refer to dt here as in the total change in time. So we will need to add the x-values.

local x, v = 0, 10
-- On frame update
x += v * dt`

Now both of these should be handled client-sidedly, if it’s handled server-sidedly it’ll look laggy. You can duplicate LocalScripts to the Player so that the background will work.

I’m pretty sure that this method is very ineffective, perhaps there is a way using viewportframes?
I’m not sure if this should be either on the client side or the server side though

In what way do you assume it is ineffective. It literally is the only way to constantly move the map’s background without moving the map itself.

Every frame on the client you just move the map, if you would not do it every frame it would look laggy. This is just a basic script which can be made with using knowledge of physics.

Using viewportframes would not work, because then the background would be on top everywhere, this is even more ineffective, as you would put it. This is due to the viewportframe having it’s own physics and such.

Also an addition to my previously already perfect solution.
Instead of using

if x >= 100 then -- end of the map, when you want to repeat it.
   x -= 100 
end

Just use

x = x % 100