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.
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.
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.
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);
}
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.