A thread is probably the correct place as there will probably be a lot of text. No clue how much we are allowed to share as we have signed a few NDAs by now but we are not really getting anywhere with other sources and we were recommended to ask here. So here goes:
Normally when creating our players we use "Create Local Player" with spawn controller enabled. This works without any issues across all PC versions.
Now that we have moved to XBOX the create local player seems to no longer assign the input devices properly to the created controllers / pawns; player 0 has always worked without issues and so does player 1, but players 2-3 do not and they have control over player 1 regardless of the way they've been created or assigned.
What has been tried without progress on the XBOX:
Get player controller from input device -> Not Valid -> Set local player controller ID (ID from loop index),
Get User For Input Device -> Create Local Player For Platform User,
Using Internal_ChangeInputDeviceUserMapping to change old GetUserForInputDevice(DeviceID) to FPlatformUserId NewUser = IPlatformInputDeviceMapper::Get().AllocateNewUserId(),
Creating local players with manual IDs,
Adding delays to blueprint- and C++-functions,
Changing orders of execution for init related functions,
Tried toggling "Skip assigning gamepad to player 1"
On PC some of these work and successfully assign the input device to the controller/pawn which makes this even more annoying to figure out.