Game Modes, Controllers, Pawns, and Possession

I’m trying to build an asymmetrical game where different players will have different controllers that provide different functionality. In order to make testing the game from the different perspectives, I thought I would make a main menu map that lets me select which character I’m going to play as.

I have that all set up, but what I cannot figure out is how to spawn the controller, the pawn, and then have the controller possess the pawn and allow me to actually play.

I currently have no default pawn or player controller set in the Game Mode blueprint, which, based on. Is there any way to switch these at runtime (without exposing anything via C++, I’m trying to stick blueprint)? Failing that, can I have two Game Modes and switch between them in the Main Menu level before I load the next level?

Otherwise, any methods to get this to work would be great.

you cant switch Core Classes (GM,GS,PC) mid level but you dont need to.

for the core classes you can use branches/switches for simple code, or put all the different code in difference actor components and activate/deactivate them.

the controller can possess different pawns with different inputs if you want.

if you’re spawning manually it can be done on PostLogin on the GM