Hello! I’m currently developing a fighting game using MonoGame as the base for my engine.
My question is simple: how can I support as many different types of joysticks as possible? Arcade sticks in particular have numerous amounts of boards you can use to create your stick, including the PS360+, which I use.
However, I notice I have to plug it in as 360 mode to get it to recognize. I also have an 8bitdo that I also have to plug in as XInput mode in order for it to recognize.
Is there some other library or class I should/can be using in order to have support for more devices, including Bluetooth controllers such as 8bitdo and PS4? I intend to support Windows 10, Linux, and macOS.
DirectX projects only support XInput gamepads. If you switch to DesktopGL (cross-platform desktop project) you’ll be able to support a lot more. Seeing as you want to target Linux and Mac you’ll need to use DesktopGL either way. The mappings used by MonoGame are available here. They’re a bit outdated, so I just set up a pull request to update the mapping to the latest. You can browse through to see what’s supported. The latest mappings support PS360+ and 8bitdo, so MG will too after my pull request is merged. I’ll post back here so you know when you can grab a develop version with the new mappings!
Thanks @Jjagg! I wonder why I have to be in XInput mode even on Linux for it to recognize my joysticks, then. But I am using MonoGame 3.6 if that makes any difference. Should I switch to 3.7 that’s in development? Will this also support Bluetooth controllers, or is it all USB? Loss of Bluetooth support isn’t a big deal if that is the case but I am still curious.
Thanks once again, and do let me know when your pull request is accepted!
Hey @Jjagg, just noticed the pull request was merged! However my PS360+ 1.66 still doesn’t work. I made sure to replace the SDL-related DLL’s in my project, and no dice.
@Jesuszilla Did you get a develop build from the downloads page? It might not have been updated yet when you did.
You can also check if the SDL2 Gamepad Tool recognizes your controller: http://www.generalarcade.com/gamepadtool/
If it does, MonoGame should support it too (considering we use the same mapping with my PR merged).
That should definitely have the changes. If you can confirm the version, I’m not sure what else might be the issue. Maybe @harry-cpp can think of something.
I asked for that so I would know if the device is being recognized at all, now the issue is pinned down to the mapping. Give me the information from Joystick.GetCapabilities().Identifier.
That is strange, considering when I plug it in to the gamepad utility, it shows as 03000000100000008200000000000000, just as we’d expect. Maybe MonoGame isn’t retrieving the correct identifier, or is interpreting it differently?