When you are playing a game on PC (especially local multiplayer) many developers want to change how input devices are "mapped" to different players. For example, a single player game might want the keyboard and gamepad to apply input to the same ULocalPlayer, while a split screen game may want the keyboard to control player 1, and the gamepad for player 2.
Right now there is literally no way to define this behavior in the engine without writing some custom slate input mappings or overriding the game viewport client.
API's like XInput do not have the ability to check for "unique" input devices in the same capacity as game input does. It would be awesome to have some overridable UObject/UClass for a "Schema" which devs could override and specify how they want to handle input devices being mapped in their game.
On Consoles, this mapping is handled for us by the OS (user sign on/device picker) so really this is only needed on PC.
It would be even more helpful to change IInputDevice to have an overridable function to handle a mapping from int32 -> FInputDeviceId or something, or otherwise somehow force every IInputDevice module to keep a mapping from their internal "controller identifiier" type to the engine's FInputDeviceID. We can probably accomplish this by extending the IPlatformInputDeviceMapper.
Result: They both map to the same platform user
Expected: they map to each individual platform user that would be spawned.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-206727 in the post.
0 |
Component | UE - Gameplay - Input |
---|---|
Affects Versions | 5.4 |
Target Fix | 5.6 |
Fix Commit | 36448637 |
---|
Created | Feb 13, 2024 |
---|---|
Resolved | Sep 19, 2024 |
Updated | Nov 29, 2024 |