Why do some games need a controller turned on before launching, but others don’t?

213 viewsOtherTechnology

I’ve noticed that for some games (PC), I have to turn my controller on *before* I launch the game, or else it just won’t work. But with other games, I can turn my controller on at any time and it connects just fine.

Why is that? Shouldn’t every game just be able to recognize the controller whenever I turn it on?

In: Technology

3 Answers

Anonymous 0 Comments

It’s hard to know, but one explanation is that the game is controller agile. It can work with many different brands of controllers, or perhaps just the keyboard. When the game starts up it tries to figure out what controller you are using, so it can load the code to work with that controller. No controller turned on means don’t load code to talk to the controller. When you turn the controller on later, the game doesn’t care.

A more savvy game might detect the controller powering on and load the code then, but I can see that being more complex and some game developers might do it the simple way.

Anonymous 0 Comments

Basically it comes down to how they’re programmed.

There are two different input schemes for controllers. The older one is called D-input, and the newer one is called X-input. I imagine there’s some poorly programmed games that do an early detection for which one and then never try it again. But realistically it could be anything.

Anonymous 0 Comments

It boils down to efficiency. While computers are definitely powerful enough to take the time every now and then to check if a controller is being used or not, it’s oftentimes just not worth it to run that call every so often. The game just makes an assumption that whatever is being used when the game is initialized is what’s going to be used until the user stops playing and that there won’t be any changes.

Some games work by either

A. Always running code to detect a controller input and having to deal with that fraction of a second worth of “wasted” time

or

B. Running code to detect if a new input device is connected and initializing it when that happens.