Second gamepad/controller is not seen by the actual game, only by Scaleform

I can’t get any trace of the second controller visible in game as far as unrealscript, so that I could carry out any kind of player start/login/etc procedure, inputs never arrive to my PlayerInput class where they could be used for such a purpose (standard is Fire on the 2nd controller spawns the second player)
Scaleform notices the 2nd controller and allows it to interact with menus etc, but even while interacting with a menu with the 2nd controller, the log window fails to register inputs from it, only inputs from the 1st inserted controller are logged.
Help?

note: I have an Xbox Wired and a Logitech, and I can swap them around to make sure that neither is broken, the first inserted controller always works

Solution:

  • make custom viewport class
  • use it to create a player with CreatePlayer, setting ControllerId to 1 (not 2)

then inputs will at least be picked up in the input class from the 2nd controller

And yet this is still a total disaster…

I can’t get it to just let go of the 2nd controller and allow the inputs to be picked up in uscript, unless I go through the whole CreatePlayer flow and actually allow it create a new player actor on its own terms rather than mine, and for some reason this bugs out the game duplicating the entire HUD of the game too despite me disabling splitscreen.
And even then there is some kind of interference not letting me use more than one controller to move characters (even though inputs are picked up in the logs from both controllers), presumably again due to some Viewport issues.

Why on earth was controller support coded like this? Why block access to the second controller by default and relinquish it only under extremely specific conditions? I’m already looking into some kind of DLL solution to bypass this blockage completely.

Just for curiosity. Does UDK support local multiplayer by using a 2nd joystick? Can we have split screen? How to do this? And how about the performance?

Okay, turns out you can get access to all controllers from the viewport class, just set the handle input delegate to your own function and you’re set for local multiplayer.

For info on splitscreen multiplayer look up the Dungeon Defenders stuff on UDN.