When a controller becomes a compatibility nightmare

One of the features I’m particularly pleased with in Galactic Gladiators is controller support.

The game uses Microsoft’s XInput interface, with DS4Windows allowing PlayStation controllers to be recognised as compatible controllers.

This gives the game proper controller support, including vibration effects for explosions, collisions and other suitably dramatic moments.

Everything worked nicely on my development machine.

Then came the clean Windows 11 virtual machine.

It turns out that different versions of the XInput DLLs can cause compatibility problems. The version my code expected wasn’t necessarily the version available on another installation of Windows.

What followed was a rather entertaining investigation into DLL versions, controller compatibility and Windows dependencies.

At one point, experimenting with a controller utility caused so much trouble that the virtual machine became unusable.

Fortunately, I’d taken a snapshot.

One restore later, Windows was back in working order, although my confidence in random controller utilities had taken a bit of a knock.

The lesson was an important one: getting something working on your own computer is only half the battle. Getting it working on somebody else’s is where things become interesting.

And all this effort just so somebody can waggle a joystick and shoot aliens.

Modern software development is a wonderful thing.

Leave a comment