Joystick sign conventions

Started by
5 comments, last by Sik_the_hedgehog 11 years, 2 months ago

Quick question--it's so hard to Google for answers like this one: Is the sign convention for PC joysticks or D-pads something I can generally rely on? It seems that the horizontal axis is positive right, and the vertical axis positive down, and the horizontal axis has the lower axis number. If that's true for all joysticks, then all I'd have to do to detect the correct axis mappings is to ask the user to move the joystick around the perimeter a few times. If this is inconsistent then I'd have to map the horizontal and vertical axes separately. Thanks.

Advertisement
Generally yes.

It is always possible that somebody is using an obscure joystick from the 1970s with bad drivers and the axis values are reversed, but that is not normal.

Some players like the option of reversing up/down and left/right. You might decide to include the options as a convenience, not because of a hardware issue.

Calibrations are typically done by the system, and they also generally include a dead zone so you don't need to. They are nice options to provide to your users if you'd like, but less necessary than they were two decades ago.

Under Windows, most gamepad interfaces (such as what DirectX and LWJGL expose) provide a way to query the names of each axis and sometimes button, so even if you're not sure about the numbering convention, you can check the human-readable string names for X+, Y-, et cetera.

This is particularly helpful if someone is using an XBox 360 controller. I discovered (quite to my consternation) that up until a year or so ago, it sometimes had the left joystick X/Y axis numbered 1/0, and the right joystick X/Y numbered 2/3. More recently, I've found it's consistently numbered the same as my other dual-stick gamepads (LX,LY,RX,RY numbered 0,1,2,3 in that order).

RIP GameDev.net: launched 2 unusably-broken forum engines in as many years, and now has ceased operating as a forum at all, happy to remain naught but an advertising platform with an attached social media presense, headed by a staff who by their own admission have no idea what their userbase wants or expects.Here's to the good times; shame they exist in the past.

It is always possible that somebody is using an obscure joystick from the 1970s with bad drivers and the axis values are reversed, but that is not normal.

For those people I have my "Advanced Controls Setup" option; namely editing the control settings file with a text editor. :) Thanks for the advice.

Yeah, if you find a joystick that doesn't go by those conventions you can safely assume the user already knows and already had problem with the majority of games out there. Allowing remapping of axes is still a good idea (just like allowing remapping of buttons), but where needed you can pretty much assume that's the case for the first two axes.

The second set of two axes (right stick) is a different issue. So far I think pretty much about all controllers in use these days would map axes 2 and 3 to those, but not all controllers are designed to gimmick the 360 or PS3 ones. In particular, some controllers with different layouts are bound to lack the second stick (e.g. there are some controllers around that gimmick the Saturn controllers).

And the D-pad is usually mapped to the hat on controllers that have sticks. Take this into account too.

Don't pay much attention to "the hedgehog" in my nick, it's just because "Sik" was already taken =/ By the way, Sik is pronounced like seek, not like sick.

And the D-pad is usually mapped to the hat on controllers that have sticks. Take this into account too.

I actually just noticed this. The game is multiplatform, and the D-Pad is considered a joystick on Linux but a D-pad on Windows. Furthermore, the D-pad sign convention is positve up. Nice of them to keep things simple. Since the distinction is irrelevant to my game I'm going to make hats into honorary joysticks.

I think Linux doesn't understand the concept of hats at all which is why hats get converted to axes. At least if I recall correctly the joystick API only returned axes and buttons.

Don't pay much attention to "the hedgehog" in my nick, it's just because "Sik" was already taken =/ By the way, Sik is pronounced like seek, not like sick.

This topic is closed to new replies.

Advertisement