Jump to content

Joystick Control Feedback - 1.3.306


71 replies to this topic

#21 evilC

    Member

  • PipPipPipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 1,298 posts
  • LocationLondon, UK

Posted 16 July 2014 - 05:01 AM

All those posting that they tried cl_joystick_absolute_inputs=1 and want to use joystick in left hand to control legs and mouse for aiming in right...

Why? The cl_joystick_absolute_inputs=1 setting is for joystick AIMING only!

View PostKmieciu, on 15 July 2014 - 11:47 PM, said:

Can you use absolute imputs with that? So that when you let go of the joystick your mech stops?

You have been able to do that for ages,

They only added Absolute AIMING.

#22 Kmieciu

    Member

  • PipPipPipPipPipPipPipPipPip
  • Urban Commando
  • Urban Commando
  • 3,437 posts
  • LocationPoland

Posted 16 July 2014 - 05:12 AM

View PostevilC, on 16 July 2014 - 05:01 AM, said:

You have been able to do that for ages,

They only added Absolute AIMING.


Now I remember. I tried it ages ago but could not use it with battle grid.

#23 Saedrin

    Rookie

  • The Grizzly
  • The Grizzly
  • 2 posts

Posted 16 July 2014 - 06:56 AM

either I'm using the wrong kind of controller or it's absolutely garbage. I can't even get it set up so I can walk around using my controller.

#24 evilC

    Member

  • PipPipPipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 1,298 posts
  • LocationLondon, UK

Posted 16 July 2014 - 07:24 AM

Please also bear in mind, that if my calculations are correct, Absolute Aiming will be unusable for everyone but those with the most expensive sticks.

It will certainly not be usable with any joypads - the throw is way too short and none that I know of have >8-bit accuracy.

#25 Matthew Craig

    Technical Director

  • 867 posts
  • LocationVancouver, BC

Posted 16 July 2014 - 07:55 AM

Thanks for the feedback everyone, sorry this first go at absolute inputs ended up so rough. I'll try and carve out some more time to fix the issues and get this in a more usable state as soon as I can.

#26 Old Bones

    Member

  • PipPip
  • Bridesmaid
  • 28 posts
  • LocationRocky Mtn Hi

Posted 16 July 2014 - 09:10 AM

I started a thread on the deadzone issue in Hardware & Accessories forum. Same problem, I now have a large deadzone I can't get rid of. My X-52 worked just fine before the patch.

#27 Foust

    Member

  • PipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 394 posts
  • LocationKentucky

Posted 16 July 2014 - 09:14 AM

I'm still trying to work out this thought, so this is going to be disorganized.

Each mech has variable values for:
  • twist range
  • twist rate
  • pitch range
  • pitch rate
  • arm range
  • arm rate
A joystick has variable axis values based on the precision of the sensor.

With this iteration, centered stick is half the maximum axis value. Exactly what we want. Centered stick = Centered Torso

What is wonky is full deflection. What I expect at full deflection is full torso traversal + full arm traversal, at the maximum traversal rate. Sensitivity adjustments should slow rate while still allowing full traversal. This is especially important on the Y axis as the maximums on Y are far smaller than X. The same scaling ends up making Y ultra touchy.

Was that thought clear at all?

#28 evilC

    Member

  • PipPipPipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 1,298 posts
  • LocationLondon, UK

Posted 16 July 2014 - 09:17 AM

Foust - they clearly got their sensitivity settings wrong.
At 0 sensitivity, you cannot even achieve full torso deflection.

Looks like they didn't do a curve for sensitivity, they just amplified the input.

#29 Foust

    Member

  • PipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 394 posts
  • LocationKentucky

Posted 16 July 2014 - 09:31 AM

It is a matter of what sensitivity is adjusting, and currently it is adjusting the wrong thing.

A curve wouldn't make any real difference here other than what value you need to set the sensitivity at per mech to achieve full traversal at full deflection.

When sensitivity adjusts rate to achieve full deflection, that is where you would want your option to adjust curve.

Edited by Foust, 16 July 2014 - 09:32 AM.


#30 evilC

    Member

  • PipPipPipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 1,298 posts
  • LocationLondon, UK

Posted 16 July 2014 - 09:40 AM

A curve is absolutely REQUIRED to adjust sensitivity.

Mathematically, there is no other way to do it and maintain a full range of motion.

To clarify:
Assume an axis goes from 0 (centered) to +1 (Full Right) or -1 (Full Left)

The ONLY way to adjust sensitivity is to ensure that all input values (-1...+1) map to a valid output value (-1...+1).

So to set sensitivity to 50%, just doing input value / 2 will not work - you would only ever achieve output values of -0.5...+0.5

What you need is an algorithm like this (where sensitivity is in the range 0...1, so 50% sensitivity is 0.5)

output = (sensitivity*input)+((1-sensitivity )*input**3)

Maybe by "curve" you were thinking multiple settings - as in seeing an actual curve?
You do not need to see a curve for one to exist - using this algorithm plus a single value of 0.5 for the sensitivity results in a curve.

Edited by evilC, 16 July 2014 - 09:44 AM.


#31 Foust

    Member

  • PipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 394 posts
  • LocationKentucky

Posted 16 July 2014 - 10:04 AM

Im not trying to argue with you EvilC, I'm just trying to provide feedback based on my experience. Perhaps I used the term curve incorrectly.

When I think curve, I'm thinking closer the the center of the axis travel is slower then at a threshold the same amount of stick movement translates to faster travel and tappers off back to a rate closer to center at the end. A "S" curve in most joystick configuration software.

You can also straighten out that curve, make it what I think of as linear. Where the stick movement generates the same travel throughout its full range.

What I was trying to get at was that until full stick deflection is equal to full torso traversal + full arm traversal, sensitivity adjustments are pointless. Well not pointless, just not behaving as I would expect. Sensitivity should adjust the rate of traversal up to the chassis maximum, and if you want a linear (0 curve) or a "S" curve would be a matter of preference. As long as full deflection equals full traversal in either case.

#32 evilC

    Member

  • PipPipPipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 1,298 posts
  • LocationLondon, UK

Posted 16 July 2014 - 10:09 AM

View PostFoust, on 16 July 2014 - 10:04 AM, said:

You can also straighten out that curve, make it what I think of as linear. Where the stick movement generates the same travel throughout its full range.

This is not possible, due to the reasons I outlined above, except of course if you are not adjusting sensitivity at all.

If it is less sensitive in one place, it has to be more sensitive somewhere else, otherwise the range of stick motion will not map 1:1 to the available axis range.

Edited by evilC, 16 July 2014 - 10:17 AM.


#33 Foust

    Member

  • PipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 394 posts
  • LocationKentucky

Posted 16 July 2014 - 10:27 AM

Sensitivity would adjust the rate of torso traversal, not the rate of position change. In absolute we are taking a stick position, not a rate of change.

So say I cut my sensitivity in half, and slam the stick to the right. The stick is reporting +1. The game then knows I want to be full right (the +1 reported position), knows how fast I want to get there (the Sensitivity of 50%), and moves to that position at that rate until it meets that position.

In the same scenerio where I slam the stick full right (+1) with 100% sensitivity, the game will move the torso at the maximum rate of travel for the torso per mech, until it meets that position.

#34 evilC

    Member

  • PipPipPipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 1,298 posts
  • LocationLondon, UK

Posted 16 July 2014 - 10:32 AM

Why on earth would you want to limit yourself to 50% twist speed ???

Besides, this would not change a thing with absolute input.

Stick position is directly proportional to twist amount.

All stick positions must map to a valid twist amount, and 100% stick deflection must mean 100% twist amount.

25% stick deflection can mean something other than 25% twist amount, but if it does, then the rest of the scale must also be adjusted accordingly. ie, in that case, 75% deflection could not mean 75% twist amount.

#35 Foust

    Member

  • PipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 394 posts
  • LocationKentucky

Posted 16 July 2014 - 10:46 AM

View PostevilC, on 16 July 2014 - 10:32 AM, said:


Stick position is directly proportional to twist amount.



I think that is where our disconnect is.

I am running on the idea that stick position maps to twist position, not twist rate. So position +1 on the stick maps to torso position (max right) + arm position (max right). That could mean 135 degrees for one mech, 165 for another, or maybe 90 for a different one.

Some mechs with the largest engine they can fit have really fast twist rates, lowering the sensitivity would lower the "twitch".

The 50% was your number. :D

#36 evilC

    Member

  • PipPipPipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 1,298 posts
  • LocationLondon, UK

Posted 16 July 2014 - 10:48 AM

by twist amount, I meant torso + arms.

What I mean is, it is technically impossible to have a linear sensitivity adjustment whilst still maintaining full range of possible motion when using absolute input.

#37 evilC

    Member

  • PipPipPipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 1,298 posts
  • LocationLondon, UK

Posted 16 July 2014 - 11:00 AM

Mathematical proof

No sens adjustment:
input +0.5 = output +0.5
input +1 = output +1

Linear sensitivity 50%:
Input +0.5 = output +0.25
input +1 = output +0.5
ergo it would be impossible to reach 100% twist

Linear Sensitivity 200%:
Input +0.5 = output +1.0
input +1.0 = output +2.0
ergo the top 50% of stick range does nothing - invalid output.

Curved sensitivity 50%:
input +0.5 = (0.5*0.5)+((1-0.5 )*0.5**3) = +0.31
input +1.0 = (0.5*1.0)+((1-0.5)*1.0**3) = +1.0

Curved sensitivity 200%
input +0.5 = (2.0*0.5)+((1-2 )*0.5**3) = +0.87
input +1.0 = (2.0*1.0)+((1-2)*1.0**3) = +1.0

Edited by evilC, 16 July 2014 - 11:07 AM.


#38 Foust

    Member

  • PipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 394 posts
  • LocationKentucky

Posted 16 July 2014 - 11:23 AM

Your saying that 100% deflection = 100% traversal. I get that. In that regard you are correct, you have to end at 100% usage.

What I'm saying is that this needs to be position based, not percentage based. So a 30 degree twist has a value that maps to an axis position, not to a percentage of available deflection. In that case you can use sensitivity values to solve for rate of traversal.

#39 evilC

    Member

  • PipPipPipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 1,298 posts
  • LocationLondon, UK

Posted 16 July 2014 - 11:33 AM

View PostFoust, on 16 July 2014 - 11:23 AM, said:

What I'm saying is that this needs to be position based, not percentage based. So a 30 degree twist has a value that maps to an axis position, not to a percentage of available deflection. In that case you can use sensitivity values to solve for rate of traversal.

I really do not understand what you are saying, and I suspect you are not understanding the mechanism at hand.
What you are describing sounds like relative input.

If you can illustrate your issue with numbers, then maybe I would understand what you would like.

#40 evilC

    Member

  • PipPipPipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 1,298 posts
  • LocationLondon, UK

Posted 16 July 2014 - 11:46 AM

View PostFoust, on 16 July 2014 - 11:23 AM, said:

So a 30 degree twist has a value that maps to an axis position, not to a percentage of available deflection.

axis position is effectively a percentage of available deflection. They are one and the same.





2 user(s) are reading this topic

0 members, 2 guests, 0 anonymous users