Actually your first post gave me the idea that Set View Target would only use active cameras. I thought I’d been replicating properly but I had accidentally attempted a multicast in the player controller, so all other players still thought the wrong camera was active. I moved the logic to the pawn and now it works.
The problem now is that the spectating player’s camera doesn’t rotate with the … uh … spectacle player. I suspect this is because I am having the spring arm rotate with the controller rotation … and for other players, they do not have access to the spectacle player’s controller. So I’m trying to work out how to deal with that part. I could update the rotation on tick or with a timer, using a rinterp to node but it feels clunky. Gonna do some googling to see how others have implemented first person spectating.