Host / Client replication problem

I have been setting up a network multiplayer project following advice from this video:

It’s an older version of UE4 so some things have been adapted.

I am able to connect the client to the host and see the two characters appear together, which is great!

I have some issues, though, which don’t appear to be addressed in the video or in a related search.

As a way of debugging I made it so that you can customse the colour of your character through changing a material instance before logging into the session.

So:

Host can see host colour change
Host can see client color change
Client cannot see either colour change
Host can move.
Client can see host movement
Client cannot move

Initially I thought that the client simply isn’t posessing the pawn, but if that were the case the client would still be able to see the host color change. it’s strange, because the client can see the host movement but not the host color change.

Overall, it’s odd to me.

I have set everything thing the player character to replicate (i.e. the actor itself, the mesh, movement component, etc.)

All variables are replicated and a server side process triggers a local (in player controller) update of things like materials.

It’s interesting that the host can see this happen on the client side by seeing the client’s character change color, but the client cannot even see their own character’s color change.

Any advice on how to continue troubleshooting this would be appreciated.

I solved this problem with the following:

I had been using the Top Down Template to start this project. I found that this template had some issues with replication (at least when a client is connecting to a listen server).

I imported the Third Person Template and replaced my Top Down Character with Third Person Character, and then simpy changed the camera angle and controls to convert the Third Person Character to a Top Down Character. I then removed all of the other Third Person Template assets from my project.

I also created a new player controller.

From then, I was able to succeed in loading settings (as a structure) using the new player controller from a save game, sending these to the server and then to each connected character. In the character BP this was received as setting a variable with RepNotify. In the RepNotify function for the variable I break the structure and use the structure pins to successfully change the character’s variables.

At that point both the host and each client were able to see every client’s unique appearance.