Why is the floor or character not showing on a networked client?

I am using the default Blueprint First Person, and set Number of Players to 2 for Network Settings, created a blueprint of the floor after applying marble material, and turned on replication for the floor blueprint, I set to play in New Editor Window (active), and when I click Play it shows the 2 windows, but only 1 of them is playable, the other doesn’t show the floor, but it shows the sky moving, and doesn’t show the character and the input does nothing. Following the Third Person Networking Tutorials produces the same result.

Attachment List: Picture showing what is seen.

The reason is because: the client doesn’t have a controllable character and client some kind spectator right now for u (Go watch Blueprint Networking - YouTube ) and camera probably just right inside of that brush. So that’s why u cant see the floor and that’s why u cant control client character.

You have to make at least a 2nd PlayerStart and make sure the 2nd Pawn don’t spawn at the same location as the 1st Pawn.

I watched all those networking video’s and was thinking the same, but I have replication turned on for the floor and the character, which replication is supposed to send to the client as well, the floor has a thickness, so not sure how to solve this yet. The sky is animated and showing though on both client and server ends, dunno if that’s replicated though but it’s in sync.Following the Third Person Networking Tutorials produces the same result.

I have a second player start, they aren’t near eachother.

I have the exact same problem, following the Blueprint Networking tutorials.

Found a workaround on Youtube in the comments section, but how do I make it where I don’t need to Press Shift + F1 and click in Server window then move character then Press Shift + F1 and click back into Client window and Press ` to bring up Command Console and type the command StartFire and press Enter key on the client in order to properly spawn the character as a work around?

It’s quiet easy. You have a 2nd spawn, but you never tell him to spawn there :wink:

A super simple (not recommended for a real project, cause there are no catches for fails) to do it is the following:

your MyGameMode.h

UCLASS(minimalapi)
class AMyGameMode: public AGameMode
{
	GENERATED_UCLASS_BODY()

	int32 playerCount;

	/** select best spawn point for player */
	virtual AActor* ChoosePlayerStart(AController* Player) OVERRIDE;
};

And your .cpp

AMyGameMode::AMyGameMode(const class FPostConstructInitializeProperties& PCIP)
	: Super(PCIP)
{	
	playerCount = 0;

}

#pragma region Player Spawn

AActor* AMyGameMode::ChoosePlayerStart(AController* Player)
{
	APlayerStart* Start = PlayerStarts[playerCount];
	playerCount++;
	return Start;
}
#pragma endregion

If you are using BP you can create a BP Class with this class as a parent and then assign your stuff, like DefaultPawnClass, Hud, PlayerController…

With this code you have to make sure you have a spawn for every Player. It will spawn Player one at Start one, 2 at 2, 3 at 3 … If you want a random spawn, I recommend to look into the code of the Shooter sample. You can nearly copy&paste it out (maybe a lil bit of adjusment is needed).

Hope this helps,
Jack

Thanks :smiley: thats so useful, it’s working great.

I found a possible workaround when using just blueprints… (till it can be fixed properly by the staff at unreal)

goto defaults in MyCharacter blueprint, find CapsuleComponent in collision settings → choose custom > collision enabled > leave everything unchanged except pawn (change that to overlap)

check picture for details!

now when you test/play both spawn… (or more if you want more)

side effect is you can now run through each other

Unfortunately, I’m still not able to get it to work that way, it’s as if the second player start is being completely ignored and only places player at the original Player Start position. If I try and get the existing location, and set it manually in blueprint it doesn’t seem to set the location to what I set it too. I’m also trying to do this in blueprint and not via C++.

I appreciate this information, this does definitely spawn the player in this manner in all server and client windows, and does resemble some older game spawn pawn collision methods where player can walk through another player, so player to player collision in this pawn setup produces those older style funky visual see through results when standing in another players position. The problem that is exactly as you’ve said and it’s not the desired result for today’s game development, or atleast from a visual perspective on how to handle it. I’m hoping for a solution so that it is as is expected when following the networking tutorials, but for now this can be seen as another workaround and it works.

Ok think I figured out what’s happening, in the blueprint using the example information I’m trying too keep the blueprint operations separated as in the tutorial, the problem with this is, after watching the flow of the events, I notice that not all of the information is displayed in the blueprint debug, and not all of the blueprint is being executed. The remote portion of the code after something such as setting text is not. My blueprint data flow only shown data flowing along the authority side of things. However, I did not see the visual communications of the data flow for the remote side which does complete up to once text is set. I did a test by setting a Delay between connections so I could visually look at a countdown timer in the blueprint, the timer countdown would only become activated visually in the blueprint editor once the data flow reached the Delay object, after doing this it became clear that it only did this on the Authority side, but not the Remote side. After noticing several other problems, such as the position being reset automatically from PlayerStart 2 back to the original PlayerStart 1 position after 3 seconds shoving the second player back to the PlayerStart 1 position, I adjusted the blueprint accordingly to set using a delay object which seemed to have fixed the problem, ignoring the Remote end of things, and using Teleports, etc… Another thing was I also started with the collision setting as The Jakal described, so the collision problem isn’t fully fixed yet, but player 1 and 2 are placed exactly where I want them to be using the Player Starts so for now I’m happy with that.

Most of why this happens is probably due to design of the networking portion of the changing of things such as positions like this should be done on the server end, and the remote side being more visual on the lighter side of things, which is possibly the logic of it and might explain why it acts this way.

Below is the Blueprint I used:

The final result being this:

The Pawn Collision portion seems to have been partially fixed with Unreal Engine 4.1.0 for 2 or 3 windows, however, once it gets to a 4th window it does the same as before and it does still require a Delay Object for when I set the position. Using StartFire command on the 4th window makes the 4th window work normally. There’s also some slight camera clipping, but for the moment I’m happy and can work with it more now and not stuck on it, I’m thankful for that.

Attachment List: First photo shows the 4th window, the second photo shows it working after entering console window and typing the StartFire command.