[BUG] Splitscreen with 3 players doesn't work

Version: 4.7.6

Platform: Win & Mac

Description:

When you launch a game with 3 players in split screen, it will show a black screen. 1, 2, or 4 works fine.

Repro Steps:

  • Open this repro project
  • It should open Start map, but if not open it
  • Hit play, notice how it loads a game with 4 players
  • Stop it, and open the Start level blueprint
  • Change the numPlayers variable to 3, compile
  • Hit play, notice how it loads a black screen
  • Stop, and change the number of players to 2 or 4 and it will work normally, only 3 is broken.

You can’t really notice there, but when launching the game in 3 player split screen only the UMG widgets will show up, the game is running in the background, just nothing is being shown.

Regards,

Nuno Afonso

I have the same problem. Kinda strange that nobody else is reporting this because there even is a “Three Player Splitscreen Layout” option in the project preferences.

Hi Nafonso,

This has already been reported and a ticket has been submitted for this with UE-9825. I’ve added your post here to the ticket.

Once there is an update we will post any updates.

Thank you!

Tim

Apparently I was wrong.

Is there an update on this issue? I noticed that when this black screen happened I could, running in standalone, re-size the window and for some sizes the window would render properly. More specifically, I tested re-sizing the screen width and height independently and found that re-sizing the width would effect the rendering while re-sizing the height did not. I thought maybe this information would help isolate the problem.

That issue is still backlogged. Unfortunately, there is no time frame for when this will be addressed. I have added your interest in seeing this resolved to the ticket.

Thank you!

Tim

I found a work-around in GameViewportClient.cpp that avoids the blackscreen problem.
This is not a proper fix of course, but I think it should help Epic in identifying
and fixing the real problem.

It appears that when the screen goes black, the calculated value for TotalArea is never
equal to (MaxX-MinX)(MaxY-MinY). When the screen does render properly then TotalArea
is always equal to (MaxX-MinX)
(MaxY-MinY). This is around line 1191 in the 4.10 engine source.

When I took out the condition from the “if” statement below, then the window would
always render properly (no more black screen) regardless of the resolution used.

I’m guessing there is a problem with rounding or truncation during the calculation
of TotalArea which only shows for some resolutions.

Here is my change (around line 1191 of GameViewportClient.cpp):

// If the views don't cover the entire bounding rectangle, clear the entire buffer.
//if ( ViewFamily.Views.Num() == 0 || TotalArea != (MaxX-MinX)*(MaxY-MinY) || bDisableWorldRendering )
if (ViewFamily.Views.Num() == 0 || bDisableWorldRendering)
{
	SceneCanvas->DrawTile(0,0,InViewport->GetSizeXY().X,InViewport->GetSizeXY().Y,0.0f,0.0f,1.0f,1.f,FLinearColor::Black,NULL,false);
}

I hope this information proves useful.

Your awesome wjhcc!

You should make a pull request.

ran across this bug in 4.10.4, however works ok when game is played in new window. when a 3 player local game is played in selected viewport, the bug described above persists. i didn’t try recompiling the source, as my engine download is from the launcher, so not sure if that code change fixes things.

Hopefully this helps anyone, 3 player splitscreen is black in PIE, but works fine when the game is built in my version.

I can’t run with 3 player,but I delected the ReflectPlane,it’s ok.Any bug with local multiplayer and ReflectPlane?