15
\$\begingroup\$

When I offer gamepad support, the simplest solution seems to be to assume XBox controllers and use a library that maps the most frequent gamepads to a similar layout.

Now if I want to minimize customer complaints, can I just use all the buttons (in a sensible way), or are there some I should avoid because they are missing on some common controllers?

The question is primarily about PCs (Linux/Windows/Mac), but does the answer change if we consider gamepads for mobile devices?


The one thing I know about is that we cannot use any input scheme that requires the user to press LT and RT at the same time, but that limitation affects XBox controllers as well.

\$\endgroup\$
  • 1
    \$\begingroup\$ I don't have a comprehensive list to offer in an answer, but if I recall correctly a lot of non-console gamepads lack the stick "click" buttons (ie. L3/R3 on the DualShock line). These controls have iffy usability anyway, so I'd recommend avoiding them for core verbs even when using gamepads that have them. ;) \$\endgroup\$ – DMGregory Nov 25 '16 at 14:06
  • 1
    \$\begingroup\$ @Krythic I can't find anything about gamepads there. \$\endgroup\$ – Philipp Nov 25 '16 at 15:47
  • 2
    \$\begingroup\$ If you allow key rebindings, players can sort a lot of this out for themselves \$\endgroup\$ – Mooing Duck Nov 26 '16 at 0:20
  • 1
    \$\begingroup\$ Don't make players set up custom mappings. Have defaults for common types and allow them to be modified. \$\endgroup\$ – David Nov 26 '16 at 7:26
  • 1
    \$\begingroup\$ Take in mind, that many controllers are based on the snes controllers, like many for android \$\endgroup\$ – Bálint Nov 26 '16 at 14:13
17
\$\begingroup\$

The standard which you will find on most platforms is:

  • Analog directional input left thumb
  • Digital directional input left thumb
  • Analog directional input right thumb
  • 4 buttons right thumb
  • 2 shoulder buttons left hand
  • 2 shoulder buttons right hand
  • 2 buttons in the center of the gamepad which are awkward to reach and should be used for special actions like pausing the game.

You find this at least on:

  • current and previous generation Xbox
  • current and previous generation Play Station
  • Wii U
  • Nintendo Switch (with both joy-cons attached or with external controller)
  • Nintendo 3DS series
  • most PC gamepads, including Steam Controller

These are some exceptions which are more limited which you might or might not consider relevant to support:

  • PlayStation Vita which has only one shoulder-button per hand
  • Nintendo Switch when using only one joy-con which is limited to:
    • Analog stick left thumb
    • 4 buttons right thumb
    • 1 shoulder button left hand
    • 1 shoulder button right hand
  • Nintendo Wii which is limited to:
    • Digital d-pad for left thumb
    • 2 buttons for right thumb
    • Gyroscope which might or might not be an adequate substitute for an analog directional input
    • (With Nunchuck Extension) analog stick for the right thumb

Also keep in mind that not all PC gamers own a gamepad. The standard controls for a PC are still keyboard and mouse. So you can expect to lose a considerable market segment if you do not provide proper support for this setup.

\$\endgroup\$
  • \$\begingroup\$ Thanks +1. I just saw the Nintendo switch, and noticed the inversed labels of the 4 diamond buttons... = headache. \$\endgroup\$ – Peter Nov 25 '16 at 16:07
  • \$\begingroup\$ As of writing this answer the Nintendo Switch is not yet on the market, so we need to see if the left-hand buttons work properly as d-pad or feel more like action-buttons for the left thumb. \$\endgroup\$ – Philipp Nov 25 '16 at 16:16
  • \$\begingroup\$ The latest-gen 3DS has a right-hand analog similar to the GC's "C" button, and two shoulder pads; it has the same number analog and digital inputs as a Wii U or XBox. The right-hand analog is that gray nub on the right side near the top. \$\endgroup\$ – phyrfox Nov 25 '16 at 17:41
  • \$\begingroup\$ @phyrfox Corrected. \$\endgroup\$ – Philipp Nov 26 '16 at 12:57
2
\$\begingroup\$

Tl;dr: There are about 4 categories. If you want to support many gamepads simply target the XBox layout. If you want to support all gamepads make sure your game can be controlled with the SNES layout (which is a subset of XBox), and allow the user to remap the controls, and also allow them to map any additional buttons and axes their gamepad may have. Of course this requires you to use one of the many libraries that correctly map a ton of gamepads based on their layout,.

XBox compatible - 2 shoulder buttons & 2 triggers. D-pad (direction), 2 thumbsticks that can be clicked. Front: 4 buttons in diamond shape, "back" and "start". If you support these, you support most gamepads out there.

enter image description hereenter image description hereenter image description hereenter image description here

Warning:

  • Users are sometimes unaware that thumb sticks can be clicked, so consider avoiding these buttons.
  • Left and Right Triggers are implemented as a single axis instead of 2 independent axes in some drivers, so never allow the player to press both at the same time.
  • None of the directional inputs (thumbsticks and D-Pad) may allow precise/fine control by the user, even tough thumbsticks are supposed to do that. Allow users to turn thumbstick half-left to turn at half speed, but don't assume the user has the ability to move a thumbstick half-left .
  • Some gamepads don't use A, B, X, Y labels for the diamond buttons. Consider using images instead of letters to let user know which button to press in tutorial and setup.
  • "back" and "start" aren't always labeled, are usually hard to reach, and "back" is sometimes labeled "select".

SNES compatible - 2 shoulder buttons. D-Pad (direction), 4 buttons in diamond shape, "select" and "start". If you support these you support pretty much all gamepads out there.

enter image description here enter image description here enter image description here enter image description here

Warning:

  • "select" vs "back" button label.
  • Uses same A, B, X, Y labels as XBox for 4 diamond buttons, but uses them in different order. Consider using images instead of letters to let user know which button to press in tutorial and setup.

XBox extended - They can do everything the XBox controller does and some more. They are mostly irrelevant for this question, except for the fact that is nice to allow players to use these extra buttons and touchpads. So best allow players to bind extra buttons to useful game functions. And please never disrupt gamepad input just because a gamepad's touchpad is accidentally touched.

enter image description here enter image description here enter image description here

SNES extended Some controllers fall in between SNES and XBox, by offering only some extra functionality. They may have quite unusual button arrangements so allowing users to customize the input scheme is important. Same advice applies as in XBox extended above. There is also a significant subset of these controllers that are essentially SNES compatible plus 2 thumbsticks, resp. XBox compatible minus both triggers.

enter image description here enter image description here

NES - Not in use anymore. Tell customer to buy a newer gamepad.

enter image description here

\$\endgroup\$
  • 1
    \$\begingroup\$ I feel this only segments options into categories, which seems counter intuitive towards the question. This does offer useful information, but nothing not already offered in the original answer. (Also, I can confirm NES controllers are still in use. They have PC mock controllers at one of my local PC stores.) \$\endgroup\$ – Gnemlock Nov 27 '16 at 20:54
  • \$\begingroup\$ @Gnemlock I'm unclear how "If you support these, you support most gamepads out there." and "If you support these you support pretty much all gamepads out there." seem counter intuitive towards the question. \$\endgroup\$ – Peter Nov 27 '16 at 21:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.