Cannot Control Local 2nd Player (UE5)

I am attempting to set up local multiplayer in an Unreal project, but no matter what I do, I am unable to control the 2nd player I create.

At the moment, I’m letting Unreal create one player by default, and creating a 2nd player using Create Local Player on Event BeginPlay in the level blueprint. I’ve tried using a Controller Id of 1 and -1 in Create Local Player, to no avail. I’ve tried enabling Skip Assigning Gamepad to Player 1 in project settings, to see if I can at least use keyboard for one and gamepad for the other, but nope, keyboard and gamepad still both control the same player.

I’m using the enhanced input system for detecting input, and as it turns out, the Enhanced Input Local Player Subsystem node is only returning a valid object reference for one player. When I check it using Is Valid, one player shows true, while the other shows false. This is causing an error when I try to do Add Mapping Context on one of the players.

Am I missing a step somewhere? I’ve tried looking this up, but I’ve found zero relevant information anywhere, be it official docs or elsewhere. And the only videos I can find talk about UE4, and don’t use enhanced input. Am I supposed to create both players myself in the level blueprint in this case? I have no idea how to even prevent Unreal spawning that first player in the first place.

I am currently using Unreal Engine 5.1.0.

1 Like

this is bugged currently for 5.1 at least, UE-173306 is the bug report i think, as the issue is similar

Any update on this? I’m currently on 5.3 and I’m having the same issue. It seems when the initial Player Controller is spawned that is the only one who has a valid ‘Enhanced Input Local Player Subsystem’. I have been pulling my hair out for a few days with this problem and finally found a shred of hope in this thread…

1 Like

I too am experiencing this frustration!

Greetings!
I found a way to make the local multiplayer work. I am on 5.3 and the problem persisted.
I followed this guide but still it would not work, the 2nd controller does not respond:

Now, what I did was the following:
In the thirdpersoncharacter blueprint, after the Event beginPlay
node, the next node I put is a Delay node of 0,1 second. And it worked.

I am not entirely sure why but I think what is happening is that the enhanced input local player subsytem is activating before the other players are created, and thus they receive no mapping context at the time of their creation. With a delay of 0,1 (or any other delay), I think the other players are created first and then given a mapping context.

1 Like

This is correct. But you should at a minimum be using loop polling vs adding a delay.

Basically call a function on begin play. Said function set references. If it cannot, then it calls a timer to recall the execution of the function.