Maybe I am not understanding how this works.

Currently on my Extended FPS Template I am doing a special spawning system where spawn points become visible and you can select them in the world space to choose where you want to spawn.

Well it works fine with only one player connected. I try to set everything up in such a way where on begin play the spectator collects all spawn points in the map assign them to an array and then mark a component to be visible effective to all children. This is done with RPCs that are not set to replicate.

My understanding is that if I round up all of the spawn points in the level and place them into an array on the client then I should be able to make it so those spawn points only become visible to that client when that client needs them to be. But I am getting all kinds of weird results. If one player kills another player the spawn points become visible to both players. However applying the same logic for making the selection of said spawn points seems to work perfectly. So does telling a client to hide all spawn points once they actually spawn into the world.

Its probably something really silly but I actually got stuck on this last night. Maybe there is a better way to do it?

I did a quick test setup with 8 players on a Dedicated (and non Dedicated) server and i can get the desired effect to work correctly. My setup was quite basic though, I simply pushed a reference to an Actor from the level blueprint to all players and used an non replicating function to apply the SetActorHiddenInGame node.

Something else must be interfering.

I ended up fixing the problem. But it was due to some other weirdness where I needed to add a short delay after possession before telling the non replicating action to kick in.