Help with Shared Camera - Spawning and Referencing

Hi all, appreciate any tips here.

I have been creating a side-scrolling simple online multiplayer game, and have now started to make a shared camera. I prototyped it in BP using nasty quick methods such as find all players of class, and setting the viewport that way. Which worked. Now I’m trying to get it in C++, in a way that easily works for multiple maps.

What I have now:
I have a c++ class DynamicMapCamera, which contains a UCameraComponent. This class also has a whole bunch of logic for positioning and zooming, based off having a TArray which represents all players in the game. This class works in isolation.
I also have a GameMode that is sort of set up, I am already doing other behaviour on PostLogin, so I would have a reference to the PlayerController for the purpose of changing viewport after they join the server.

The main problem I have is the general structure for creating this camera and using it.
My first thought was to spawn it from the GameMode on BeginPlay. Then on each player PostLogin, their viewport can be set to the camera, and a pointer to their actor can be passed to the camera. But the UE4 editor crashes on run, this is on spawning the camera even without me trying to set a viewport.

I’m wondering if this is the wrong way round; should GameMode not spawn any world objects? If not, who should be responsible? Am I better off making the DynamicMapCamera to be a client-side actor with each client independantly running it? But if so, it will be slightly harder down the road to do custom views such as for slow replays, or simply just starting with the whole map in view.

Sorry for the wall of text, I do get like that!
TL;DR: I have my camera actor with custom behaviour, I’m having trouble making sure one is always spawned into each level and assigned to each playercontroller.

Thank you!