STEAM GROUP
Steam Client Beta SteamBeta
STEAM GROUP
Steam Client Beta SteamBeta
21,670
IN-GAME
96,282
ONLINE
Founded
8 January, 2013
All Discussions > Bug Reports > Topic Details
Puulis 28 Nov, 2024 @ 2:08pm
BUG: Steam Input: Stick Response Curve setting does not function correctly
ISSUE
The Stick Response Curve setting appears to be applying scaling to the X and Y axes independently, instead of correctly scaling the result vector. This leads to incorrect translated value scaling behavior on diagonal stick inputs.

With an aggressive response curve, the Translated Output Value reaches full extension too quickly on diagonal inputs.

With a relaxed/wide response curve, the Translated Output Value extends more slowly than it should on diagonal inputs, sometimes not even reaching full extension depending on the Response Curve value.

This behavior becomes extremely obvious ingame when significantly low values are selected, with very low values making the stick behave almost like a D-pad; however, any setting other than linear will cause some level of input inconsistency.

The issue is exaggerated when the Response Curve setting is paired with the Anti-Deadzone setting, and can present noticeable issues even with the Valve preset Response Curve options. Note the Anti-Deadzone does not appear to suffer from this issue on its own, but this combination of settings should also be tested.

OS
Windows 11

CONTROLLER
Xbox One S (Model 1708) but likely affects all controllers with circularized analog sticks.

NOTE:
Result 1 and 2 use unreasonable values for the sake of demonstrating the bug clearly.
Result 3 uses a 'reasonable'/preset value in combination with Anti-Deadzone to demonstrate a real-world scenario, based on this controller config:
steam://controllerconfig/1888160/3373185302
Test written with a Circular type deadzone with a range of 0 to 88.

STEPS

Open the Controller Settings menu on any supported game
-I've been using Armored Core 6, as it uses Steam Input as its only controller API.
Select 'Edit Layout'
Select 'Joysticks'
Select 'Right Joystick Behavior' Settings (gear)
-Issue affects both sticks; testing only w/Right to prevent accidental menu input
Set 'Deadzone Source' to 'Custom'.
Set 'Stick Response Curve' to 'Custom Curve'.
Set an abnormally high 'Custom Response Curve' value (320).
Exit and re-enter 'Right Joystick Behavior' settings menu, to ensure changes apply.
Scroll down to and select 'Start Test'.
Slowly push the right stick to a 45° angle until Translated Output Value just reaches 100%
-Note the Physical Output Value percentage as 'fast diagonal'
Slowly push the right stick to a 0° angle until Translated Output Value just reaches 100%
-Note the Physical Output Value percentage as 'fast pure axis'
See result 1

Set an abnormally low 'Custom Response Curve' value (40).
Exit and re-enter 'Right Joystick Behavior' settings menu, to ensure changes apply.
Scroll down to and select 'Start Test'.
Slowly rotate the right stick in a circle around the outer edge of the housing.
See result 2

Set 'Stick Response Curve' to 'Wide'.
Scroll down & enable 'Show Advanced Deadzone Options'
Set an 'Anti-Deadzone' of 7750.
Exit and re-enter 'Right Joystick Behavior' settings menu, to ensure changes apply.
Scroll down to and select 'Start Test'.
Slowly rotate the right stick in a circle around the outer edge of the housing.
See result 3

-----

RESULTS
Result 1:
'fast diagonal' is significantly less than 'fast pure axis.' (my values were 30% and 50% respectively.)

Result 2:
Severe angle snapping behavior is evident in the Translated Output Value vector, reaching full extension at 0°, 90°, 180°, and 270°, and very low extension at 45°, 135°, 225°, and 315°.

Result 3:
With a 'reasonable' preset Response Curve value paired with anti-deadzone, a more mild version of the same angle snapping behavior demonstrated in Result 2 remains evident; reaching full extension at 0°, 90°, 180°, and 270°, and not doing so 45°, 135°, 225°, and 315°.

-----

EXPECTED
Result 1:
'fast diagonal' and 'fast pure axis' should be the same, and the scaling behavior of Translated Value relative to Physical Value should remain the same no matter which direction the stick is pushed, or how far it is pushed towards the housing edge. EG. 20% Physical Output Value should always result in the same Translated Output value (whatever it happens to be after the Response Curve is applied) regardless of what angle the stick is pushed.

Result 2:
Translated Output Value should reach full extension at every angle, and the scaling behavior of Translated Value relative to Physical Value should remain the same no matter which direction the stick is pushed, or how far it is pushed towards the housing edge.

Result 3:
Translated Output Value should reach full extension at every angle, and the scaling behavior of Translated Value relative to Physical Value should remain the same no matter which direction the stick is pushed, or how far it is pushed towards the housing edge.
Last edited by Puulis; 28 Nov, 2024 @ 2:58pm
< >
Showing 1-1 of 1 comments
No idea if it's still true in the Beta client, but it is still true in the stable client. Found this thread via google search
< >
Showing 1-1 of 1 comments
Per page: 1530 50

All Discussions > Bug Reports > Topic Details