TerryCavanagh/VVVVVV

Issues with new official controller layout settings on Steam

Daaaav opened this issue ยท 16 comments

There now seems to be some changes to the default controller setup for VVVVVV on Steam, which causes several issues in the 2.4 beta:

  • Steam is now clearly telling me my PlayStation controller is not supported, and that Steam Input is translating buttons for me (I don't really remember having Steam Input enabled? Oh well)
  • There's now also a new official controller layout, called "localization", which maps to keyboard keys like space and enter, instead of controller buttons
  • When launching the game with Steam Input enabled (both with and without the "localization" layout applied), Steam Deck button glyphs are displayed, instead of PlayStation ones
  • The "localization" layout wasn't applied by default for me, I still got Steam Deck glyphs in-game but it worked as a controller. After applying "localization", the game does indeed see keyboard keys, which means it keeps switching between displaying keyboard strings and controller glyphs, because the d-pad and joystick are still controller buttons.

Believe it or not, 100% of this is by-design on the Steam client's part. I think they're rolling back the aggressive messaging of the 1st bullet in the beta channel but the rest is completely and entirely intended by someone at Valve.

The fix on our end involves multiple parts:

  • I've added a system to SDL that allows the Steam Virtual Gamepad to communicate what the glyphs actually are behind the virtual device: libsdl-org/SDL@757c984 However, this requires that Valve append that type to their bindings system. If they never do this, all we'll ever know is that it's a Valve product/vendor ID, so Deck is the best we can do without disabling Steam Input on the user's end.
  • SDL_ActionSet will allow integration of Valve's proprietary Steam Input APIs without locking ourselves into their platform, so when I finish that (2024, I hope...) we'll be able to bypass all virtual gamepads and refer directly to the device type.
  • In screwing around with both PlayStation UX and new layouts they aren't actually changing anything on the application side, so this is why that message is constantly popping up even for games where the device is actually supported. This is why the new layout isn't applied; we'll be updating the official layouts when 2.4 releases.

I'm on year ~8 of trying to fix Valve's mess, so don't get your hopes up on this getting any better until SDL_ActionSet's done.

So wait, is this normal:

2023-12-09_19-41-35.mp4

As in, can we only map to keyboard keys and not controller buttons?

It should still be possible to go into Steam's per-game controller settings and override it to use the gamepad-only layout.

So do I understand correctly, out of the box it would look like that, until users change their Steam settings manually?

Not when 2.4 launches - we'll be using the developer control panel to change it to use the gamepad layout by default:

https://partner.steamgames.com/doc/features/steam_controller/getting_started_for_devs#23

Ah okay - I thought the half-keyboard one was going to become the default ๐Ÿ˜„

Out of curiosity then, since I'm guessing there are good reasons for it - would it not be possible (as a developer) to opt the game out of Steam Input altogether? Like the Deck's controls requiring it to be enabled or something?

God, I wish. The most you can do is say that it's not supported and that's about it, I'd have been nuking it from orbit this whole time if I could :(

Not when 2.4 launches - we'll be using the developer control panel to change it to use the gamepad layout by default:

https://partner.steamgames.com/doc/features/steam_controller/getting_started_for_devs#23

Hey, just to check, is this something where I need to make a change on the steam backend, or is it all under control?

(also, should I delete the old "Official" button mapping referred to here, or would just cause more problems? #875 )

It'll be taken care of, I can update the settings on my end at the same time as the depot updates. Everything should transition to the pure gamepad layout at the same time.

Ok, good to know! Is this something we can test out before it launches, though, or does it require a new build?

The best way to test locally is with the config menu within Steam - when configuring a device it should give the option to look at templates, I'll just be selecting the stock Gamepad template.

With the latest Steam client beta, the latest SDL2 Git revision, and the latest VVV Git revision, Sony devices should now show up properly. Will do a rebuild in the morning but devs should be able to test right away!

This fix is now live on Steam for Linux, as long as the Gamepad template is in use this should now be fixed. We'll likely flip the switch for the template on release day, but depending on what the Deck Verified cert comes back with we may have to do it slightly earlier than that, we'll see.

Can confirm my PS controller now works properly on the Steam client beta!

Filing this for when I get back: Need to force disable button labels like FNA does when Steamworks is enabled, Switch controller behavior is double swapped so I need to get SDL to not swap internally to keep it from undoing our work...

Last-minute change to fix Nintendo devices not using Steam Input b619f38

The rest of the Steam template stuff is going live today, so we're good to go!