OpenGL MonoGame 3.8: Incorrectly detecting Playstation 4 controller as XInput when XBox controller connected

We have a game that can have up to 6 players. The main controllers we use when we have up to 4 are XBox 360, XBox One, or a combination of both. Normally, games that aren’t Windows Store apps are limited to 4 XInput controllers and that’s fine. Using the older MonoGame 3.7.1 build of the game, 4 XInput controllers and any combination of DirectInput controllers worked just fine for us.

Trying 6 players with MonoGame 3.8 no longer seems to work. Playstation 4 controllers on their own seem to work just fine, but once an XBox controller is connected, the Playstation 4 controller from then on shows as an XInput controller. This can be confirmed by investigating the Microsoft.Xna.Framework.Input.GamePadCapabilities variable. The DisplayName variable displays as “PS4 Controller” until an XBox controller is connected where it then shows as “XInput Controller”.

This causes two things to happen.

  1. The Playstation controller doesn’t work at all, thereby limiting us to four controllers (XInput)
  2. Pressing start on the XBox controller joins in two players that are controlled with one controller (the other we think also acting as the Playstation controller), and the Playstation controller is still unresponsive.

We’re currently investigating if this is still a problem in the latest development version of MonoGame (3.8.1). We can post our findings once our tests are complete.

Sounds similar to this post:

Updating SDL from 2.0.12 to 2.0.14 resolved the issue there.

Hope that helps.

1 Like