godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
90.93k stars 21.15k forks source link

Nintendo Switch Pro Controller USB inputs are erratic w/ Steam #47874

Open ace24713 opened 3 years ago

ace24713 commented 3 years ago

Godot version: 3.3 rc8

OS/device including version: Windows 10

Issue description: Under specific configurations, godot interprets the controller as sending many random inputs.

I'm not pressing anything at all: pro_controller

From my basic googling of the issue, it seems that there's a problem with Steam's "Switch Pro Configuration Support" where the DirectInput freaks out when Steam enables gyro on a Pro Controller over USB. I don't have a great source for this, but this discussion has a post from a Valve employee that describes what I just said.

While this itself isn't Godot's fault, it seems the problem does not effect apps that use XInput to read controller inputs. I'm a bit out of the loop, but I did think Godot supports XInput, so I'm wondering why this is messing up?

For the record, from the discussion I linked above adding the project exe as a non-steam game is a workaround. Seems like steam forces the game to use XInput in some way, as the controller is no longer reported as a "Nintendo Switch Pro Controller" but instead as an "XInput Gamepad"

Additionally I've heard about similar problems with DS4 controllers and Steam's "PlayStation Configuration Support" option, but I don't own one of those so I can't try it.

Steps to reproduce: Steam must be running, with "Switch Pro Configuration Support" enabled in the Controller Settings menu. A Nintendo Switch Controller must be plugged in via USB. You should be able to move the mouse with the right thumbstick if it detected it. The problem is NOT reproducible when using Bluetooth.

Launch any godot game with joypad inputs the joypads demo project works well

(To my knowledge it is irrelevant if the controller is plugged in before or after steam is started. And steam must be closed AND the controller unplugged to reset it)

Minimal reproduction project: I've been using the joypads demo project to test

Samdal commented 3 years ago

As @Zireael07 mentioned in my issue #47892, these issues seem related. If that is the case your suspicion with the DS4 controller is correct. However i did not have steam running in the background (but i have used "PlayStation Configuration Support" on my computer in the past), and the problem persisted with Bluetooth on the DS4. And since XInput is windows proprietary software, and i am on Linux, that is not causing the issue in my case.

Evangeder commented 11 months ago

From what i am seeing: procontroller Buttons 1 to 8 flicker on and off in a binary pattern. It looks like it's looping from 0 to 255 constantly.

SentientDragon5 commented 3 months ago

I have the same issue. Here are my notes on where I have had that same issue:

gongbaoqi commented 2 months ago

I also encountered the same issue in Godot 4.3 stable version, but in some Unity games, the controller works correctly.