Download

Multiplayer - Actor Hidden In Game but needs to show in a Scene Component 2d

Two players (connected to a dedicated server), neither of them can see eachother (clientside, I have used “Set Actor Hidden In Game” for the other player).

However, I am implementing a mechanic where the players can hold up an object (with a Render Target material from a Scene Capture 2d) to “reveal” the other player. BUT just because the player is visible through the object does not mean they are visible through the player’s camera.

So far this has been almost 10 hours of sifting through old posts and trial/error and I have gotten almost nowhere. Most of the people who seem to have gotten this to work were able to do so by setting their player controller to be the owner of the “other object” and using “Owner No See” which only makes it invisible for the player’s camera, not the Scene Capture 2d. I don’t think I can make this work in a multiplayer environment. I’ve tried to have each client claim ownership over every other player’s pawn and while it seems to work at the actor level, the individual components are still owned by the original player … and you can’t “Set Owner” on a component.

Another tactic I was trying was modifying the player’s material’s opacity, thinking maybe I could get the Scene Capture 2d to ignore translucency (it’s one of the flags). But unchecking translucency didn’t make the player suddenly opaque.

Most of the posts I saw on this subject were ~2015 so I’m hoping there’s been some developments in the engine that might make this more possible. I’m willing to try any number of approaches to get this to work.

Edit: one kind of annoying note about this is when doing PIE, it works perfectly for Client 1. For some reason using the Scene Capture 2d for Client 1 will render the player for Client 2 great while still hiding them normally. But if I try it as a standalone game it no longer works. So I suspect it’s just some weird fluke that makes it work in PIE.

Scene capture components have options for only showing or hiding specific actors/component, but I don’t think that overrides the overall hidden flag.
You’d probably have to modify the engine to make it do that.
Thought about a material based solution?
There is a cheap marketplace asset that does this: Portal - Another Reality.

Interesting sounding problem… If portals don’t work out, then maybe assign a translucent material to the enemy player and then use a different post-process custom-depth when aiming to view the player. Given that its a well tried solution that also lets you see if they’re hiding behind walls.