Hey all, I wanted to ask some advice about Replication to server on Tick for tracked Headset and Controllers.
I’m tracking the Head and Motion Controllers on Tick and update server variables for Location and Rotation that are set to replicate if the character is controlled by the local controller.
Remote characters just update from the replicated variable form the server.
This seems to replicate head and motion controller movements over the network for client and server.
For now, the torso &feet movements are calculated based on headset movement and replicated which will change.
So, 3 aspects: Head, Torso and Motion Controllers update on Tick in every character blueprint and work great visually.
Once I added this, the client’s movement component and rotation* doesn’t seem to replicate anymore but the Server’s movement component replicates fine. If I bypass just the the motion controller tracking on Tick, the client’s movement component seems to replicate again! I’m not sure what I need to do to resolve this.
Have I created a networking bottleneck doing all of these on Tick? If so, I would love to hear some alternatives so tracking is still very accurate! [alt text]
For the Hand Controller Mesh replication, Setting the Run on server event as “Non Reliable” fixed the issue.
I still think this is a bug of some sort within the engine. I may be proven wrong but I don’t see why setting the event to Reliable breaks Client Pawn movement on the server side.
EDIT: When the network overloads, the client connection is disconnected from the server. So, apparently this is desired functionality in UE4.
Most event are reliable, This means machine A sends a message to machine B, then B sends a “I got it” to A. If the “I got it” (ACK for Acknowledge) does not arrive in a bit of time, then A tries to send to B again.
Unreliable means A send to B and if B does not get it (it gets dropped) then it is no big deal.
Things like voice chat (VOIP for Voice Over Internet Protocol) is sent unreliable because if a 1/10th of a second of voice gets missed it is too late to resend it anyway and you get a gap in the voice. Also player hand position updates are similar. If you miss one update the next one will get the position anyway.
As you can imagine, Unreliable is very efficient and uses less network.
In the handcontrollerbypass.jpg above, what do the LMotion and RMotion Controller Bases represent? Are they references to the Scene Component of the respective motion controller components?
I was able to get Motion controllers for Vive and Oculus Quest replicating over the network so they can see each others movement.