HMD Data Replication Issue

We’re trying to achieve multiplayer gameplay in VR game. The first thing we want to do is to sync the rotation and positional tracking data across all server and clients.
First we use the HMD Orientation and Position to drive the IK on the character head and upper body. It works fine. Then we make the parameters replicated. That’s how we did it:

27943-hmd_01.png

Every tick, the owning client send HMD location and rotation to the server. Every HMD location and rotation of a certain client will be replicated to all server and clients. This is written in our own character blueprint, not in player controller.

27944-hmd_02.png

27945-hmd_03.png

Then the client animation blueprint will use the replicated HMD location and rotation of itself to drive the IK on head and upper body.

Test succeed, both server and clients will see each other’s movement on head and upper body. But on the clients, it sees obvious shaking on the whole body when MOVING. The shaking happens on client’s 1st person model, and on the 3rd person model of server. When not moving, everything is fine, both 1st person model and 3rd person, all synced and smooth.
When disabling the HMD parameter replication, the shaking disappears. Then of course, the movement on head and upper body is not synchronized anymore. This is why I think the way replication handles HMD data caused this issue.

Any comments will be welcome.

more clear screenshots

video capture:

Smooth on server: - YouTube

Shaking on client: - YouTube

Found this post since I have the exact same problem. The locomotion of the character is distrupted on the client when enabling replication of variables for hmd position and rotation, and then using those in the anim BP. I’ve tried everything, but cannot find a way around it.

So I found this was due to using Event Tick causing too much processing from the HMD and causing locomotion to be distrupted, and glitchy. My similar implimentation worked fine after I moved to using Event Begin Play and a Timer function to replicate the HMD location/rotation. In the function only replicate at 1/4 the rate as Event Tick and that got around the locomotion glitchiness for me. I know this thread is super old so you’ve probably already solved this, but posting for anyone else that might benefit.

Can you explain this a bit further, I am having the same issue. I am getting jittery movement on the client. And when I set a timer which calls the HMD location/rotation replaction event I even get shaky movement on the server.