So here’s the thing. Recently we’ve added a new input mapping in our game, which overlaps with other input mappings but is used in completely different context. After upgrade is pushed some players who have changed their input bindings in game were not able to use newly added mappings.
I’ve done a bit investigation in a separate project and here’s my results.
I’ve created an actor which manages input and placed in the world
Input mappings are following:
I’ve played the game once and pressed space key. It rebound my test mapping to Right Mouse Button and saved config in Saved/Config/Windows/Input.ini
[/Script/Engine.InputSettings]
ActionMappings=(ActionName=“TestMapping1”,bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=RightMouseButton)
Backed up input.ini
Added a new mapping to the game:
Added a logic in my actor to print “Something else” when pressed.
At this point Saved/Config/Windows/Input.ini is empty.
So let’s assume I’m pushing this update to a player which already played the game and changed mappings. It means their Input.ini is not empty. I can’t wipe it, as it will break custom mappings set by user (which is bad).
To simulate it, I’ve closed the editor and copied input.ini from backup
When opening the game, I can’t see newly added mapping in input settings. And obviously pressing that key won’t do anything. As far as I understand, UE finds out changes done by user and do not load default input. Or otherwise it loads default and overrides it with user created one while wiping anything new. The issue is that it seems it does this based on the actual mapped key and not the action name, thus my newly added mapping never gets to end user.
Am I doing something wrong? Is there a way to overcome that issue other than creating a custom solution (or never adding a new mapping?). Any help is appreciated.