RunTweenService is a TweenService module that uses RunService instead of tweens, mainly using the :GetValue() function for calculations. This was mainly made for optimization & the ability to sync up with already playing tweens like loops. This is also my first public module.
It does not have any extra usable features, but it does have benefits when using it such as:
Client replication (To reduce network latency)
Sync up with already playing tweens (Especially loops)
Unfortunately, this can eventually go off-sync over time compared to a real tween especially both playing in a loop, so I recommend using this for optimization instead. This might be fixed once I find a method that stops or reduces this issue.
How to use
Server: Simply require the module and use it as you normally would with TweenService. Client: There is no reason to use this module on the client, so all you have to do is just require it and it should replicate any tweens created by the server.
When inserting the module, place it in game.ReplicatedStorage or anywhere that can be replicated to the client.
Comparison
Here is a small clip of several tweens playing at once. Green parts are normal server tweens, Blue parts are “tweens” done from the client.
I can’t load it on google, although what if a users FPS is very high or very low, would that affect the fake tween since renderstepped runs on users FPS?
Yeah can’t seem to get the video to work. The FPS should be fine since I’ve clamped the “TotalTime” of a tween so it doesn’t go over the goal.
It replicates to all clients when :Play(), :Pause() or :Cancel() functions are called. This also does the same method TweenService V2 does whenever a tween has finished and applies the new properties on the server.