[VR Multiplayer] Host can't see Client movements

As my title says, I am having trouble with multiplayer. I am trying to make a VR multiplayer game. I followed Unreal’s Multiplayer tutorial videos to setup a LAN session and was successful in doing so. Both players are spawned in the map, the client can see when the host (listen-server) moves the controllers and headset. The problem is the host cannot see the client move.

Connection flow is as follow:

  1. Both players start in the “Lobby” map (basically an empty map)
  2. Player A (Host) hosts a LAN session by pressing on a controller button
  3. Player B (Client) searches for LAN sessions by pressing on a different controller button
  4. When LAN sessions are found, Client joins the first one (there should be only one since we are on a LAN)
  5. When OnPostLogin fires, Server spawns a pawn and allows the new player controller to posess it
  6. Host moves, replicated pawn in Client’s world moves too
  7. Client moves, replicated pawn in Host’s world does not

I made sure Replicates, ReplicateMovement and NetLoadOnClient was ticked on my pawn blueprint. I have ticked Component Replicates for all of my pawn’s component.

My hardware setup:

  • 2 computers connected through Ethernet cable (LAN)
  • 2 Vive headsets
  • 2 pairs of Vive controllers
  • 1 pair of base stations

I have read a lot about how replication works in the past few days in order to try to understand how to solve my problem. I have trouble pinpointing where my problem is. I have a feeling it has to do with how VR movement is done, like the client’s aren’t actually sending their movement to the server and simply doing it locally. Could that be the case? To be honest, I am not quite sure how VR movement is done. There are two MotionControllerComponents and a CameraComponent that are magically taken control of by my controllers and HMD but are those being replicated from client to server?

P.S. I know Host and Join logic should not be directly in my pawn’s blueprint. I am just trying to keep it as simple as possible for now to avoid unnecessary bugs.


Did you ever figure this out? I am having the same issue.


Did you solve the problem?