Simple Local Multiplayer Fix for 5.6

Overview:
Folks, I’m sure many of us have experienced difficulties setting up local multiplayer with Unreal 5. It’s been broken, then fixed, then broken again, and now in 5.6 it appears to be broken again, but this time it is a different error popping up, tied directly to Enhanced Input Local Player Subsystem/Add Mapping Context.

Issue:
When adding a second local player in UE5.6, control of the second player is not possible and the following error is produced for each character controller:
Blueprint Runtime Error: “Accessed None trying to read (real) property CallFunc_GetLocalPlayerSubSystemFromPlayerController_ReturnValue in not an UClass”. Node: Add Mapping Context Graph: EventGraph Function: Execute Ubergraph BP Third Person Player Controller Blueprint: BP_ThirdPersonPlayerController

Many people, myself included, have typically assumed this was an error with ‘Skip Assigning Gamepad to Player 1’ but the error is actually unrelated.

Fix: (Tested in Third Person Template)
The issue is the input for the Enhanced Input Local Player Subsystem Node. The existing node(s) which assign the Mapping Context in the Player Controller works fine when there is only a single player, but when a second player is added, the Enhanced Input Local Player Subsystem needs a player controller input to adequately resolve without the error listed above.

My solution is to disconnect the Event Begin Play node in the BP_ThirdPersonController and thus disconnect the entire Initialize player input sequence, and instead to move this outside of the Controller.

On the BP_ThirdPersonCharacter, cast to the controller and assign the IMC, as shown in image 1.

This will function properly for Player 1, but fail for player 2

In the Level Blueprint, or Game Manager object if you prefer, create Local Player 2 via Event Begin Play or Controller button, and at the same time cast to the created player controller and also assign the desired IMC.

Make sure you are skipping assigning your gamepad to Player 1 if that is your intention, and if so, both players should now be controlled correctly and no errors will pop in your logs.

Video:

Images:

You just had to change the enhanced input local player subsystem to the one that has input and connect the self to it :roll_eyes: 1 min fix

Glad that is working for you. Would you like to post up how you have that working?

When I thought it was going to be that simple, I discovered that the controller had issues being referenced for the Enhanced Input Local Player Subsystem, still threw the error, and still failed to initialize the input for the second player.