5.1 local multiplayer not working

I’ve just noticed that the ‘Skip Assigning Gamepad to Player 1’ bug has broken our couch co-op game for multiple players. I spent about an hour debugging it, then found this thread. I guess it serves me right for not frequently testing with 2 controllers, but in my defence, we upgraded to 5.1 to avoid the near-constant crashes of 5.0 so I’m not sure what choice we had.

To confirm, despite bug UE-173306 showing a target fix of 5.2, it has not been fixed in 5.2. It has also been marked as a duplicate bug and closed, but as others have pointed out, I’m not sure where the other bug report is. I’ve searched and I can’t find it.

So right now, local multiplayer on PC (i.e. involving a keyboard) has been broken for about 7 months and Epic have incorrectly closed the one bug that reported it.

I’ll go through the motions of reporting it again, but given that Epic have sat on my last bug report where 5.1 repeatedly corrupts blueprints with no warning or reason, I won’t hold my breath.

Edit - I’ve submitted a bug report, for what it’s worth. I also took a look at the relevant source code and how the ‘Skip Assigning…’ setting actually works - it’s basically a hack that offsets the Controller ID if the input is coming from a gamepad and there is more than 1 local player in the world. The relevant function is UGameViewportClient::RemapControllerInput, and it’s used in the UGameViewportClient::InputKey function which processes input. Between 5.1 and 5.0 there were a bunch of changes in UGameViewportClient::InputKey related to deprecating ControllerIDs (which is what the setting offsets) and introducing Platform User IDs, which appear to be a more robust way to do it.

There are two topics here and here which discuss the issue, but neither of them appear to fix the fundamental issue of the keyboard and gamepad going to the same player controller.

But I’m fairly certain it’s this work - which, of course, is not documented - that has broken it.

2 Likes