[Help] Multiplayer Client Can Not Posses Properly. Host Can.

I have spent nearly the last two months trying to find the answer online and by myself. I need help, badly.

This youtube video shows the problem I am having. When the Host travels to the new map it has no issues possessing its pawn. The non-host clients however are unable to possess their pawn properly; they have control of the PlayerController blueprint, the Pawn’s camera, and the spells available Pawn within the Pawn’s blueprint. Furthermore the non-host clients can not move the pawn in any direction; they are rooted in place. Only the camera can move on a horizontal plane unless they hold Right Click which then allows them to look in 360 until they let go of Right Click. The server player has zero of these issues.

When players initially join the server on the Lobby map they are able to move around as intended. Once travel is executed, the non-host clients are rooted in place.

:::::::::::GAME MODE::::::::::::

::::::PLAYER CONTROLLER:::::::::::::

:::::::::::::GAME MODE::::::::::::::::::::::

Game Build Log from Non-Host Client:

[2017.09.25-15.54.55:853][814]LogWorld: SeamlessTravel to: /Game/Maps/OCT18
[2017.09.25-15.54.55:858][814]LogScript:Warning: Attempted to access Dreadnought_FirstPersonCharacter_C_0 via property First Person Character, but Dreadnought_FirstPersonCharacter_C_0 is pending kill
HUD_C /Engine/Transient.GameEngine_0:GameInfoInstance_C_0.HUD_C_0
Function /Game/Player_Stuff/HUD.HUD_C:GetVisibility_0:001D

Update:

I discovered that my custom GameState was somehow causing the issue of clients being rooted at spawn. I changed the world game mode override to the default GameState class and now players are able to move around. The server is however not reporting to the clients which way it is pointing its gun (looking up/down/left/right) even though the clients are reporting gun pointing positions.

I do not understand why my custom GameState was hindering the non-host clients from moving around. My custom GameState was a child of Game State Base.

This morning I am out of time for further troubleshooting and exporting. I will create a new blueprint as a child of GameState, Not Game State Base, to see if it solves my problem.

Solved:

Use GameState as the parent of a multiplayer GameState blueprint. Do not use Game State Base as the parent.

YOU ARE A LIFE SAVOR. I’ve been stuck with a similar problem for days without a working solution and this worked like a charm. Thank you very much for posting this fix.

Thanks for sharing! How did you change this?

You need to create a New Blueprint class. Search for GameState in the New Blueprint menu and create it (do not select GameStateBase). If you already have been using GameStateBase you’ll need to copy all that you’ve done into the new GameState you just created.

Once you have your GameState you need to declare it in either your World Settings or the GameMode.

In the World Settings you will see a GameMode section with fields such as Player Controller, Player HUD, Player State. Put your new GameState into the GameState field.

Thanks for your reply. I just created a new GameState, assigned it on world and from settings but it is still the same.

What do you mean by `need to copy all that you’ve done into the new gamestate you just created’ ?

There is any existing gamestate file in the content menu, so I do not know if I changed it before.

I also tried to use engine’s existed GameState, but once I changed this from GameStateBase to GameState, menus for the game does not play once I click to play.

All the code, functions, variables, ect, you’ve made in your GameStateBase need to be recreated in your new GameState. Because you’ve set the new GameState into the GameState field for the World Settings’ GameMode, that World will now only use your new GameState. All the references and casting you’ve called in your other blueprints to GameStateBase need to be redirected to the new GameState you created (that’s probably why your game ceased to function; the old GameStateBase is not valid because the new GameState is what is loaded via the World GameMode settings.)

Every World you travel to will need the new GameState set into the GameMode settings.

Essentially you need to swap the old GameState with the new one everywhere it is referenced.

I recommend making a backup of your project before troubleshooting. It will save a lot of grief if after all the adjustments things are more broken than before and you’ve forgotten all that you’ve changed.