How to change Default Pawn before level loads?

in your project settings in maps and modes, change the player controller to the custom player controller to “use it”.

You’ll still spawn the characters as actors but do it inside the custom player controller and possess it from inside there as well.

I dont have time right now to simplify it but just try on your own.

  1. create custom player controller as a child of player controller
  2. set your game mode to use the custom one in the project settings
  3. in the custom player controller spawn the character actor and then possess it
  4. work on adding different characters later for now just get it to work with one

Each player will have their own version of the custom player controller. You only have to MAKE one. but they’ll each get a copy. hence you need to pipe an int variable into it when they join the game to tell their copy of the custom player controller what character number to spawn. In your char select widget you can have that cast to the custom game instance and set the character number there. Then from the custom player controller cast to the custom game instance and get the char selection int and use that to decide which character actor to spawn.