Problem with spawning Local Players in local co-op when opening or restarting a level

I am working on a local co-op game with two players and I am having an issue with Local Player spawning when changing or restarting levels.

When I start the game, everything works correctly and both local players are spawned as expected. However, when I open a new level using Open Level by Name, or restart the current level, the Local Players are created again, resulting in duplicate players.

For example:

  • Level 1 starts with Player 1 and Player 2 correctly.
  • I open Level 2 using Open Level by Name.
  • The new level creates the Local Players again, causing additional Player Controllers / characters to appear.
  • If I restart or change levels multiple times, the number of players can increase.

I am using Unreal Engine 5.6.1 and the game is a local co-op game.

My question is: What is the correct way to handle Local Players and Player Controllers when changing levels in a local multiplayer game?

Should the Local Players be created only once and preserved between levels, or is there a recommended way to prevent GameMode / BeginPlay from spawning duplicate Local Players after Open Level by Name?

Any advice on the correct architecture for handling local co-op players across level transitions would be greatly appreciated.