Change Skeletal mesh over the network

Good day,

I would like to know how to change the skeletal mesh of a blueprint so that it changes only the controlling players mesh.

Currently I am able to change the mesh, however everyone in the game will only see the mesh that THEY chose on all the players.

i.e. If I have 3 meshes, lets call them Jack, Jill, Pail. If player 1 selects Jack as their mesh, all players in his game will look like Jack. Whereas if player 2 chose Jill, all players in their game would look like Jill.

I currently have a enum in the game instance listing the different skins, and a section of the main menu lets you select it, it stores this into the enum and when the player joins or creates a game it applies the selected skin from this enum.

The problem seems to be that because the enum is part of the game instance. So when a player joins or creates a game, even though they only own one character they still have to, on their side, create all the character actors. It is at this stage that when creating these actors it applies this games instance’s enum and instead of only applying to the owned character it applies to all of them.

Where can I store this enum variable so that it only changes the owned characters skin, as well as replicates to other players across the network?

If this is not possible, is it possible to choose what blueprint or class to spawn at runtime without running into the same issue?

I know that having the skin selection screen in the main game would solve the problem, but I want players to be able to choose the skin in the main menu.