Predictable
To syncronize Animations and all predictable movements, you can use Predictable static class.
A scene has a time reference used to synchronize players clock in seconds with 1 decimal.
The time reference is: (float) System.Math.Round(current - (System.Math.Truncate(current / 1000000d) * 1000000d), 4)
await Predictable.NetSince(this); // time since the first player entering the scene
await Predictable.NetSeek(this, loopDuration); // position in a loop for all players
Syncronize an Animation (basic)
async void Awake() {
var duration = Animator.GetStateDuration("Test");
var seek = await Predictable.NetSeek(this, duration);
Animator.Play("Test", -1, seek / duration);
}