Describe the project you are working on
A game with controller support
Describe the problem or limitation you are having in your project
I want to support controllers in my game, but it's unneededly complicated because Godot considers these buttons the same button:
| Godot |
PlayStation |
XBox |
Nintendo |
| 0 |
Cross |
A |
B |
| 1 |
Circle |
B |
A |
| 2 |
Square |
X |
Y |
| 3 |
Triangle |
Y |
X |
On both the XBox and Nintendo controllers, the (A) button is normally used as the Accept button and (B) is used for going Back.
But since the buttons are swapped between each controller, the buttons will be correct only on Nintendo or XBox but swapped on the other brand.
This gets even worse with the PlayStation controller, where the button placement is the same worldwide but the buttons are used differently in Japan:
| PlayStation |
Japan |
America & Europa |
| Cross |
Back |
Accept |
| Circle |
Accept |
Back |
(this difference is cultural:
In America and Europe we have the saying 'X marks the spot', which made (Cross) into the Accept button.
But in Japan they use their own versions of our ✅Checkmark and ❎Cross symbols:
they have ⭕Circle instead of ✅Checkmark and ❌Cross instead of ❎Cross, which determined their use of these buttons).
With a big amount of time and effort you can make sure to correctly support all these variations, but most people are lazy like me so they'll just prioritise one controller and accept that the button mapping will be wrong on the other controllers.
Describe the feature / enhancement and how it helps to overcome the problem or limitation
To solve this problem, i propose a split between Physical and Logical Buttons in the Input Map, similar to how it is already done for Keyboard Keys.
Right now we only have Physical Buttons, which is problematic as described above, so we should add Logical Buttons:
This solves the problem of inconsistent menu navigation between controllers without locking out the possibility of using these face buttons like a second D-Pad for certain types of games.
Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams
In the Input Map's "Plus Button" dropdown, the option "Controller Button" should be renamed to "Physical Controller Button",
so that the new option could be named just "Controller Button".
This new option works as described in the previous section.
If this enhancement will not be used often, can it be worked around with a few lines of script?
This can be wored around with a Lot of lines of code
and buying all the controllers to be able to test that code.
I cannot do that even if i wanted since i have only Nintendo controllers in my household and buying the rest is too expensive right now.
Putting a feature this important in your game shouldn't be this complicated.
Is there a reason why this should be core and not an add-on in the asset library?
This feature is so impotrant for the players that it should be core.
This is basic accessibility which even normal players need.
Describe the project you are working on
A game with controller support
Describe the problem or limitation you are having in your project
I want to support controllers in my game, but it's unneededly complicated because Godot considers these buttons the same button:
On both the XBox and Nintendo controllers, the (A) button is normally used as the Accept button and (B) is used for going Back.
But since the buttons are swapped between each controller, the buttons will be correct only on Nintendo or XBox but swapped on the other brand.
This gets even worse with the PlayStation controller, where the button placement is the same worldwide but the buttons are used differently in Japan:
(this difference is cultural:
In America and Europe we have the saying 'X marks the spot', which made (Cross) into the Accept button.
But in Japan they use their own versions of our ✅Checkmark and ❎Cross symbols:
they have ⭕Circle instead of ✅Checkmark and ❌Cross instead of ❎Cross, which determined their use of these buttons).
With a big amount of time and effort you can make sure to correctly support all these variations, but most people are lazy like me so they'll just prioritise one controller and accept that the button mapping will be wrong on the other controllers.
Describe the feature / enhancement and how it helps to overcome the problem or limitation
To solve this problem, i propose a split between Physical and Logical Buttons in the Input Map, similar to how it is already done for Keyboard Keys.
Right now we only have Physical Buttons, which is problematic as described above, so we should add Logical Buttons:
This solves the problem of inconsistent menu navigation between controllers without locking out the possibility of using these face buttons like a second D-Pad for certain types of games.
Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams
In the Input Map's "Plus Button" dropdown, the option "Controller Button" should be renamed to "Physical Controller Button",
so that the new option could be named just "Controller Button".
This new option works as described in the previous section.
If this enhancement will not be used often, can it be worked around with a few lines of script?
This can be wored around with a Lot of lines of code
and buying all the controllers to be able to test that code.
I cannot do that even if i wanted since i have only Nintendo controllers in my household and buying the rest is too expensive right now.
Putting a feature this important in your game shouldn't be this complicated.
Is there a reason why this should be core and not an add-on in the asset library?
This feature is so impotrant for the players that it should be core.
This is basic accessibility which even normal players need.