How do I get a viewport inside a Widget? or any other way?

Basically, I want a multiplayer game where one player is the “player” and the other is the “operator”. So operator has a Widget UI only. I want operator to be able to spectate player. Something like this concept I drew up. Is there any other way to accomplish this?

I realized this can be done using Render Targets

In player’s character BP, add a scene capture 2D component and place it right at the position of the player’s camera, making sure it’s inherited exactly the same as the camera so it moves just as the camera would move.

Then create a material and use a texture param 2d and plug it into base color, save and close.

Back in the player’s BP create a dynamic material instance of the newly created material, create a render target and apply the render target to the dynamic material instance.

Get a reference to the other player who will be spectating, (there’s many ways to do this, just use get all actors from class. very performance heavy tho)

Inside the spectating player’s BP, get a plane component and set it right in front of the camera.

Now in the player’s BP, drag off from the spectating player’s reference, get the plane and apply the material instance. This will begin streaming the rendered image of the render target on the spectator’s screen.

I hope this helps someone set up their basics.