Switch local player viewport being displayed on the screen

Is there a way to set a local player to be displayed on the screen and handle the input?

Context

I’m making a chess game. I plan to support local and network multiplayer. In both cases I would create 2 players with their own Player Controller and Player State. For network multiplayer - there is no problem, each client has their own machine.

But local multiplayer is tricky because there is only one physical display. Splitscreen is not an option, since it’s just meaningless for chess gameplay. Also I don’t want to have multiple input devices. In my mind, one player makes a move and “gives place” to other player.

Theoretical scenario

  1. It’s Player 1 turn
  2. Player 1 viewport is rendered on the screen
  3. Input is handled by Player Controller 1
  4. Player 1 makes a move
  5. It’s Player 2 turn
  6. Player 2 viewport is rendered on the screen
  7. Input is handled by Player Controller 2
  8. Player 2 makes a move
  9. Repeat step one