Joystick Ramping

Is there a variable to set to remove joystick ramping?
While it makes sense to ramp keyboard turning, it's terrible for joystick turning.

When I immediately twist from full right to full left (or vice versa) the turning will at first be slow, then fast a few hundred milliseconds later.

This is with 1.8.6. Perhaps later versions already disable joystick ramping?

Thanks for your consideration, and the awesome engine!

Comments

  • Looking through the source code of 1.9.0 beta 6.9 I now see that this behavior is hard-coded. I kindly request that SLOWTURNTICS be made to be user settable, all the way down to zero. This will make joystick turning much more smooth. By its nature joysticks don't require ramping like keyboard does, as you can select turn speed by how far you push it.

    I found the ramping code in file: g_controls.c function: G_UpdateCmdControls right under this comment line:

    // Use two stage accelerative turning on the keyboard and joystick.
  • They are not hard coded at all. The deadzones scales and stages are all configurable on a per axis basis, some using control bindings and others using console variables.

    To bind a joystick axis without staged turning do not add the "-staged" modifier to the binding e.g.:
    bindcontrol turn joy-x+modifier-1-up
    
    Each axis also has the following cvars:
    input-joy-<axisname>-scale
    input-joy-<axisname>-flags
    input-joy-<axisname>-deadzone
    
    The code you found is the old code that 1.8.6 used for joysticks which is now mostly dead. We are in the process of transitioning the player input to the new system.
  • Thanks for the quick response and information! I plan to try those variables.

    Quick question, where does the new beta versions look for user config files?

    In 1.8.6 it was Doomsday\Run\jDoom for Doom.

    Thanks!

    Nevermind, just found it at C:\Users\%USERNAME%\Documents\Doomsday Frontend\runtime\
  • I could bind to joy-x joy-y joy-z
    However I couldn't find a joy-rx joy-ry joy-rz
    Are they labeled differently in the beta?

    Thanks
  • Correct, axes beyond the standard X|Y|Z are not given a name and instead are referred to by their numerical id. You'll have to experiment to determine which id your device reports for each physical axis.
  • DaniJ wrote:
    Correct, axes beyond the standard X|Y|Z are not given a name and instead are referred to by their numerical id. You'll have to experiment to determine which id your device reports for each physical axis.
    Did they change recently? I could've sworn that there were the other axes, joy-u, joy-v, and joy-w!

    EDIT: Whoops! I made a mistake... It was joys X - Z where I found that, on my controller, W and Z were the right stick axes and X and Y were for the left stick!
  • Typing in input-joy then pressing tab to autocomplete I noticed there seems to be 32 axis.
    I forgot to try auto-complete earlier, or I wasn't paying attention.

    I assume w, x, y, z correspond to axis01, axis02, axis03, axis04
    Then the rest are axis05 to axis 32.

    Is this using the DIJOYSTATE2 structure? That's alot of axis!
    http://msdn.microsoft.com/en-us/library ... 85%29.aspx

    I assume that 1.8.6 used the DIJOYSTATE structure for 8 axis?
    http://msdn.microsoft.com/en-us/library ... 85%29.aspx

    Thanks for the info, time for me to start experimenting with the axis.

    From experimenting I've discovered the following mapping:

    joy-x <-> X
    joy-y <-> Y
    joy-z <-> Z
    joy-w <-> Rx
    axis05 <-> Ry
    axis06 <-> Rz

    Thanks again for the assistance!
  • I noticed there are both a ctl-turn-speed and a ctl-look-speed , however, they don't seem to do anything.
    How can you adjust it so you can turn fast with joystick, like you can with the mouse?

    I already did ctl-run 1, but I need faster turning speed with joystick.
    Scale adjust sensitivity but not speed.

    There are joysticks out there that have very short throws (millimeters) which can easily handle fast turning.

    One more thing:
    input-joy-x-scale seems to be bugged
    if I set it to 0.0000000000001 I still get alot of movement
    if I set input-joy-y-scale to that value I don't get any noticable movement.


    Thanks again for the help!
  • As I said we are in the process of transitioning the input code to the new system and not everything is yet wired up. ctl-turn-speed, ctl-look-speed and various others are completely ignored at present.
    input-joy-x-scale seems to be bugged
    if I set it to 0.0000000000001 I still get alot of movement
    if I set input-joy-y-scale to that value I don't get any noticable movement.
    A scale of near-zero would not increase your range of movement, it would decrease it. You need to set a larger than default scale to do that. Attempting to set the scale to such a small value will result in it being clamped to zero, thus when its multiplied with your axis delta you'll get no movement at all.
  • Ok, sorry, I don't mean to rush or anything. I didn't realize what is and what isn't in place yet.

    About the scale thing:
    What I meant was that for example you set all axis scales to 0.0000000000001
    You shouldn't get much movement if any at all.
    This is true for all axis, except joy-x for some reason.
    It seems that input-joy-x-scale is ignored. Stuck at some value.
    Since it's first on the list, perhaps its because of a loop starting at 1 instead of starting at 0?
Sign In or Register to comment.