Which shows the connected client child object, it’s setup for sync ( set to sync rotation ), and Rotation values in the inspector.
I connected a second client w/ the Unity Editor to the same Simulator to be able to view/inspect the other connected clients.
The same connected client w/ no authority ( what other clients would see ):
Viewing the same child object, showing that it has rotation sync, but has no Rotation values.
Shouldn’t the values from the Simulator be synced to non-authority network objects as well? I found another answer post, and the suggestion was to turn off interpolation. I tried both default & none, but it was the same.
Before I go into the post (haven’t even read it fully), I want to clarify one thing. You don’t connect Clients to Simulators. You could imagine Simulator and Clients on the same conceptual level: they are all Unity builds connecting to the Replication Server (RS).
Just wanted to mention it in case it was unclear.
From the images I can’t tell much. But my hunch tells me that probably, on both instances of the editor you have the input script running, which is forcing that object to be rotated in a certain way. So even if in the second screenshot you should be using the rotation that is coming from the network (because the object is remote), you might be forcing it to a certain value every frame, so you never see it update.
To resolve this, make sure that the input for remote objects is not active. That your script(s) are not modifying values that they shouldn’t.
I was only mentioning the SECOND CLIENT in the Editor to illustrate that I would be able to inspect the values of the FIRST CLIENT connecting. This gives me the ability to view the network object in a non-authoritative state.
I have scoured the documentation, and I do have the projects downloaded to refer back to for runtime & code examples.
After some investigation, I spotted something in the project that might be the cause for issues. I want to post it too, in case.
While this setup is correct:
I found out that Marvin also syncs the enabled property of those scripts. This can lead to undesirable results.
What we usually want is that input-reading scripts work on the client that has authority. If the prefab is spawned on another client, we want that script to disable (which is what the Components tab does for you).
But if we sync the enabled property, the script will be turned back on because - hey the Client with authority has it enabled, so it needs to be enabled everywhere!
So turning the syncing of those properties off should be a first step to see if it solves the de-sync.