Advertisement

XInput, Gamepads & Modern Console Ports - The Horror

Started by November 13, 2009 07:21 PM
24 comments, last by maximAL 14 years, 11 months ago
Haven't posted here in awhile, but what better place to get intelligent discussion on what I see as a horrible trend in the industry. Recently, there have been many console games ported to PC which use the XInput specification exclusively - consequently they support only the official Microsoft Xbox 360 Controller, rather a ridiculous situation wouldn't you think? Would it not be more logical when porting to PC, to include simple function calls from the tried and tested DirectInput library, which has worked fine for nigh on a decade? Why change a good thing? How could you possibly justify intentionally gimping your product? I've thought of a couple of reason why developers have suddenly wrought this crap upon us, including the irritating trend of not being able to re-bind keyboard keys, and will list a couple of them. 1.) Sheer laziness - After building the game for consoles, probably using a package similar to XNA, developers simply wish to do the absolute minimum amount of work to get it running on the PC. 2.) A cynical attempt by Microsoft to sell more hardware and/or homogenise the console/PC market together, using underarm tactics such as requiring exclusive XInput support to obtain Windows Live certification. In any case, I cannot see how anyone could defend the use of an input API which supports only a single device, especially when it replaces what was already a perfectly functional system. Input handling is game programming 101, and were talking about teams of professionals with multi-million dollar budgets who can't even get a simple thing like this right - it just boggles my mind.
Quote: Original post by asdzxc
Why change a good thing?
Good thing...DirectInput? Seriously?
Quote: requiring exclusive XInput support to obtain Windows Live certification.
Source?

I agree that XI is a poor replacement, but DI sucked.
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
Advertisement
>>Recently, there have been many console games ported to PC which use the XInput specification exclusively - consequently they support only the official Microsoft Xbox 360 Controller, rather a ridiculous situation wouldn't you think?<<

ridiculous?
unbelievable more like it, this cant be true, are you 100% sure?
You've never actually had a job producing software, have you?

Everyone seems to assume that there's this grand conspiracy of developer laziness that's responsible for every single piddling little detail that bothers them. The fact of the matter is, development of a title - even one with a major budget - is a difficult and very time-consuming process. Things slip through the cracks because, in the real world, developers never have time to polish absolutely everything to perfection. At some point you have to look at a game and say that it's good enough as-is, so you can start making money on it; and that's not a mercenary attitude - it's a simple fact of life that you have to get some cash back into your coffers once you've laid out millions of dollars for development. Money, sadly, does not grow on trees.


I have personally developed both joystick/joypad support based on DirectInput, and a full input binding system (rebinding more than just keys - you could even rebind your joystick axes if you felt like it). Both were fairly large projects, and in terms of development time, expensive ones. This is not a matter of "intentionally gimping" anything; this is basic Business 101: if you don't ship your product, you won't make money on it. No money, no more studio. So when the bank account starts looking a little scrawny and pressure's on to release, things have to be sacrificed.

Just be glad that we usually nix minor convenience features rather than, say, a massive swath of actual gameplay. Because god knows you don't derive entertainment from playing the game - only from messing around with the button settings.

Wielder of the Sacred Wands
[Work - ArenaNet] [Epoch Language] [Scribblings]

Quote: Original post by asdzxc
1.) Sheer laziness


You know what, I'm utterly SICK of this charge against game developers.

I mean, you can almost, almost expect it on a 'gamers' site where the average guy on the street doesn't really understand what goes into a game, but on a site for game developers you'd think there would be some more understanding.

The average developer is over worked and underpaid when compared to other IT industries and yet people STILL have the balls to say 'they are lazy'. If those making the games didn't enjoy them then guess what they would get out and you wouldn't have your games to play in the first place.

But please, do enlighten us as to how many AAA games you've completed under tight time and budget constraints brought on you from a 3rd party whos like or dislike of the game could be the difference between getting paid and your whole team being laid off because they wouldn't pay up...

Why would you use anything other than a 360 pad is the real question.
Advertisement
Quote: Original post by ApochPiQ
Just be glad that we usually nix minor convenience features rather than, say, a massive swath of actual gameplay. Because god knows you don't derive entertainment from playing the game - only from messing around with the button settings.


Wait... you worked on the X series right? The input was nice but shoot the guy who did the UI and hang him from a bridge for all to see.

Otherwise I agree with your post :)

I haven't really seen any games that JUST use XInput actually. Can you list some? A few are kind of lame, but use more than just XInput:

- Saints Row 2 only displays PC controls, so you can't use a gamepad with on-screen buttons showing up
- Assassins Creed, PoP, and Dead Space require a restart to switch between gamepad and keyboard icons
- RE5 is the only PC game I've seen that does it right. If you push a keyboard key, the on-screen changes to keyboard stuff. Press a controller button, on-screen changes to controller stuff.
Quote: Original post by curtmax_0
- RE5 is the only PC game I've seen that does it right. If you push a keyboard key, the on-screen changes to keyboard stuff. Press a controller button, on-screen changes to controller stuff.


A PC port I released I put a bit of effort into getting the on screen icons to work correctly. That is, have a 360 controller plugged in, it would show the 360 icons. Have any other gamepad, and it'd show generic buttons (1, 2, up, down, etc), and if neither was plugged in, it reverted to showing keys and mouse (albeit totally pointless). No configuration was required for different gamepads either, as I hard coded the layout of a load of the most popular game pads straight into it. Not a wise move there, but it was primarily XInput I supported.

I do think little effort is put into PC games these days, but honestly, PC development is a pain in the arse compared to console development. All those weird hardware setups to get your working on, no official TRC to go through (excluding Games for Windows I believe?) so the overall quality is a little lower than that of console titles, nor does each game consistently deal with platform problems in the same way (loss of net connection, missing input devices, out of space on HDD, etc). I believe most developers who have an in-house engine will have a PC version of that, although it could be solely for debugging on PC, or for artist builds. Our PC engine has became a bit of a mess over time, given that it needs to look as close to whatever platform we work on (for artists), and imitating Wii, PS3 and 360 means the render pipeline is a total mess to do so, well, has become a mess over time but is soon to be broken up. It ends up just working out more expensive to do a PC title as far as I know, assuming you already have the console dev hardware. If it works on that shiny dev kit beside you, it's pretty much guarenteed to work on everyone with a shiny retail version of that kit. PC is a different story.
Adventures of a Pro & Hobby Games Programmer - http://neilo-gd.blogspot.com/Twitter - http://twitter.com/neilogd
Quote: Original post by ApochPiQ...

Excuse me, i don't know XInput and it's been a few years since i last did something with direct input. But what exactly is the problem with supporting both? The interface for a controller is no voodoo, i'd expect a small low-level wrapper around it anyways (console ports ftw).
Yes, there is never enough time for development, but there really are better reasons to fuck up a game than poor controller support.
I, for one, won't dump my logitech controller and buy a new one, especially not for such laughable reasons.

------------------------------------------------------------Jawohl, Herr Oberst!
It's much the same as supporting both OpenGL and DirectX from the same graphics engine: while it is technically possible and even somewhat feasible, it takes a monumental amount of effort to actually pull it off. If supporting OpenGL takes X amount of effort, and supporting DirectX requires Y amount, the effort of doing both will be significantly more than just X+Y. Lots of API-specific improvements have to be avoided, or, worse, you basically just code two different low-level graphics engines and try to write an abstraction layer on top that makes sense regardless of the underlying API. It's harder than it sounds.

Game controllers are notorious for defining weird button mappings and axis mappings within DirectInput. Worse, you get even more differences if you throw in XInput. What maps correctly on one API will look totally different on the other. Even different controllers by the same manufacturer will use different sets of mappings.

At one point I literally went out and bought five or six of the more popular controllers on the market at the time, and tested all of them with my DirectInput and mapping layer. Every single one had a slightly different set of quirks. Anyone who wanted to use a joystick or joypad controller had to pop open the mappings screen and spend several minutes tweaking things so they worked; even still, there were some cases where things just didn't map nicely and that particular controller model was useless without hardcoded support (which, obviously, wasn't going to happen).

There's a command line switch in X3 and X3:TC that exists solely for the purpose of fixing a stupid implementation of switch-type buttons on a particular Saitek joystick. Even doing that much hard-coding required many hours of testing and bug-hunting. Doing such careful support for every major controller was out of the question; and doing so for two entirely different APIs was even more of an absurd proposal.


XInput is crap, but DirectInput was a hundred times worse. I'm all for the transition, although like any other API transition it'll be a rough time for a few years while things switch over and start taking root. IMHO that's just part of the cost of being a PC gamer.

Wielder of the Sacred Wands
[Work - ArenaNet] [Epoch Language] [Scribblings]

This topic is closed to new replies.

Advertisement