Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Joystick camera logic isn't correct #731

Open
rkfg opened this issue Oct 26, 2023 · 0 comments
Open

Joystick camera logic isn't correct #731

rkfg opened this issue Oct 26, 2023 · 0 comments

Comments

@rkfg
Copy link

rkfg commented Oct 26, 2023

Either I do something wrong or it's an implementation detail that makes it very hard to use on Steam Controller. The big difference with Steam is that in Steam the right pad works like a laptop touchpad and this driver treats it like a stick but with an arbitrary origin point.

How it works in Steam when the right pad is set to "Joystick camera":

  • touch the right pad
  • swipe in any direction
  • the camera moves at the same speed and in the same direction
  • then the camera stops even if you hold the finger on the pad
  • move it anywhere, the camera follows

How it works in sc-controller when the right pad is set to "Joystick camera":

  • touch the right pad
  • swipe in any direction
  • now the game interprets it as a regular stick pulled in that direction!
  • if you keep the finger on the pad the camera keeps turning in that direction and with that speed even though you don't move the finger at all
  • you need to lift the finger to prevent it

The movement in this case is much, much less precise, because when you move your finger you accelerate the camera rotation (as if you moved a regular stick, the farther it is from the neutral point, the faster the camera moves). Instead what is expected (and how Steam driver works), this movement should be translated to the instant and well timed stick position and hidden from the user so it feels like a touchpad.

If I quickly move my finger by 1 cm to the left, the driver should emulate it as pushing the virtual stick to the left fully and then returning it back to neutral after enough time for the camera to rotate, all sensitivities considered. If I do the same but slower, it should be emulated as a less extreme push, and as soon as my finger stops (even if not lifted!) the stick should return to the neutral position, and the camera should stop immediately. So effectively the behavior should be exactly like mouse in FPS games, except the game receives stick movements and not mouse. It's almost impossible to use this emulated mouse, because it breaks many games that can only work with either controller or KBM but not both at the same time, and everything starts flickering (the button hints on the screen and controls in general as the game switches between the controller and KBM rapidly).

Hopefully this makes sense. I couldn't find a combination of settings that makes the right pad to work exactly like this, and this behavior is critical for FPS and TPS because Steam Controller doesn't have a right stick, and the right pad working like stick is painful for camera control.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant