Analog Stick Walk/Run when the game will only toggle

Post Reply
Kloreep
Xpadder Xpert
Posts: 99
Joined: 02 May 2010, 21:49
Contact:

Analog Stick Walk/Run when the game will only toggle

Post by Kloreep »

I'm trying to add walk/run sensitivity on the WASD keys, mapped to the left stick, for a game (Mass Effect 1) which only has a toggle key for movement speed - no hold key.

I'm thinking it's impossible to get it to work as I want. What I really need is a way to make Xpadder hit the toggle key whenever the stick passes through a certain point in the distance zone, and as I understand the advanced assignment options, I can only make it hit a key in response to the stick being at a certain range in the distance zone. Even if a true "pass-through" assignment was available, applying such a setting to all four directions might create its own problem: presumably, the different directions would end up warring with one another over the movement speed when moving in diagonal directions.

What would really be the ideal solution here is not only a way to do a "hit key on passing through this distance zone" for an existing Assignment, e.g. any one direction on a stick, but to have a way to assign such a keystroke to the radial distance zone of an entire stick - an assignment that doesn't exist in the stick settings right now, and that couldn't co-exist with directional assignments within Xpadder's current programming for analog stick.



Anyhow, is there some way I can combine tags that I'm missing? So far I've only been working with the forward key. What I did first is add Distance Zones to have Xpadder hit both the toggle button (Z) and the movement key W in the mid-range, while hitting only Z in the other ranges:

Code: Select all

Set1Stick1UpSlots=W,DISTANCE ZONE 43%,Z,W,DISTANCE ZONE 7%,W
However, there are two problems with this approach. First, if I move the stick through the middle zone really fast, it simply doesn't register; the toggle is never hit, and movement speed never changes. In other words, this is a "no tap" problem. "No tap" can be reduced by widening the range in which the middle range in which the toggle button is hit, but that worsens the other problem of double tap. If the stick stays in the middle zone long enough, Xpadder will hit the movement speed toggle key twice. Either a "no tap" or a "double tap" will not only produce the wrong movement speed in the moment, but will permanently reverse things so that a light touch on the stick produces running. ("Permanently" = until the next double tap/no tap, of course.)

The closest I've come to correcting the issue is by placing a hold zone in the middle distance zone, so that Xpadder will go back to hitting only W after .10 seconds, even when the stick is held steady in the middle region. Double tapping ceases to be an issue, and since it's no longer a concern, I can also basically fix the no tap issue as well by widening the middle distance zone:

Code: Select all

Set1Stick1UpSlots=W,DISTANCE ZONE 43%,Z,W,HOLD ZONE 0.10s,W,DISTANCE ZONE 27%,W
However, adding the hold zone creates a new problem: Xpadder will refuse to hit the Z toggle key again until the stick has been returned to the dead zone. In consequence, this Hold Zone/wide zone fix actually makes the behavior worse on the whole. Because while Xpadder will consistently hit the toggle key when the stick is pushed forward, it will now consistently fail to hit the toggle key when I ease the stick back down towards center.

Looking at the panel, I realized these tags weren't nesting as I thought (the hold zone was being counted as the first thing by which it was all structured), so I tried moving things to accomodate the Hold Zone as the top-level tag:

Code: Select all

Set1Stick1UpSlots=W,HOLD ZONE 0.10s,W,DISTANCE ZONE 43%,Z,W,DISTANCE ZONE 7%,W
I didn't have my head wrapped around the logic of that and still don't, but I can tell you is that this returns the behavior to that of the first example - sometimes it works as desired, but there are frequent no-taps and double-taps.

Ah-ha, but I should have it the other way around for the behavior I want! Right?

Code: Select all

Set1Stick1UpSlots=W,DISTANCE ZONE 43%,Z,W,DISTANCE ZONE 7%,W,HOLD ZONE 0.10s,W
Well, actually, I think this would also fail. If I understand Xpadder correctly, I believe this means that the distance zone section would be used to interpret any forward-press for the first .10 seconds (or whatever else I might set the hold zone to), then it would just switch to after the hold zone tag - to simply pressing W. So, I believe this is actually worse than any of the others - it would have the same double tap/no tap problem at first, then movement speed toggling would simply shut off once the hold zone triggered.
But this produced a core exception error, so I don't know whether I actually have a handle on what this assignment is supposed to produce. ;) I appear to have run in to the same bug with this last arrangement as in this thread.

Oke_Doke
Xpadder Xpert
Posts: 327
Joined: 21 Dec 2009, 16:17
Location: jupiter
Contact:

Re: Analog Stick Walk/Run when the game will only toggle

Post by Oke_Doke »

Heh i've been struggling with this same problem. Its the main reason I haven't posted my ME1 profile yet. Though my approach was different, I had the same reversing issue as you have. I eventually abandoned the idea and just toggle it manually (SUCKS!!) I'll take a 2nd look at the problem. but I don't have much hope for it. But maybe someone else here has sorted out a dead simple solution.

Primal Fear
Xpadder Xpert
Posts: 2437
Joined: 09 Feb 2010, 16:41
Location: Germany
Contact:

Re: Analog Stick Walk/Run when the game will only toggle

Post by Primal Fear »

Kloreep wrote: What would really be the ideal solution here is not only a way to do a "hit key on passing through this distance zone" for an existing Assignment, e.g. any one direction on a stick, but to have a way to assign such a keystroke to the radial distance zone of an entire stick - an assignment that doesn't exist in the stick settings right now, and that couldn't co-exist with directional assignments within Xpadder's current programming for analog stick.
I already mentioned, in the topic you linked, that I like to have a feature that can do this. So I thought about how to do this too, and came to the same ending like you. It would be the best solution.
But I don't know if Jonathan is happy with this, because it would make Xpadder more complex and wouldn't bring more than one usability.

I have also experimented with this, so I am pretty sure that this not possible with Xpadder at this time.
To your first assignment I have tot say, that Xpadder will not double (or more) tap Z if you are too long in this zone. It holds it all the time, so one press. This problem occurs when you move into this Switch Distance Zone, and then back in the Distance Zone you were before. For example Walk Distance Zone, Switch Distance Zone, Walk Distance Zone (and not Run Distance Zone).
For your second: It doesn't work, because the Hold Zone has precedence before the Distance Zones. That means it ignores, that it is placed in a Distance Zone.
Jonathan wrote:Before adding Distance slots I had to decide which would take precedence when converting the slot list.
I decided that it would be less complex if the assignment had a global hold time instead of hold times within each distance zone so I made Hold and Release Zones the parents with Distance Zones inside each. This is probably because I added Hold/Release zones first so adding something inside them was easier than wrapping them up in something. ...
You can read this in the topic you had linked

With such an feature, a working assignment would look like this,
"HOLD ZONE 0.01s,Z,HOLD ZONE 0.05s,W,RELEASE ZONE 0.01s,Z,THRESHOLD ZONE 43%,Z"
As I want to give it a name, that fits to the function, I came on this name "Threshold Zone". How does it sound, what do you think?

This "Threshold Zone" would have to trigger if the axis moves over this threshold and not just exactly at this threshold. To prevent this problem with moving the stick too fast, you already mentioned.

Edit: I currently noticed something, this is no problem in Mass Effect 2. So they changed it, right?

Kloreep
Xpadder Xpert
Posts: 99
Joined: 02 May 2010, 21:49
Contact:

Re: Analog Stick Walk/Run when the game will only toggle

Post by Kloreep »

Primal Fear wrote:For your second: It doesn't work, because the Hold Zone has precedence before the Distance Zones. That means it ignores, that it is placed in a Distance Zone.
Yeah, as I said in my explanation of the third try, I finally took a good look at the scheduling panel and realized I'd gotten the logic wrong.
Primal Fear wrote:As I want to give it a name, that fits to the function, I came on this name "Threshold Zone". How does it sound, what do you think?

This "Threshold Zone" would have to trigger if the axis moves over this threshold and not just exactly at this threshold. To prevent this problem with moving the stick too fast, you already mentioned.
Yeah, that's exactly what's needed. And good name, definitely better than "pass-through." :)
Primal Fear wrote:Edit: I currently noticed something, this is no problem in Mass Effect 2. So they changed it, right?
Yeah, the second one changed it to a hold instead of a toggle. Which actually seems to me to be inconvenient for keyboard players, but hey, at least it makes it work well with Xpadder. :D

Jonathan
Xpadder creator
Posts: 1616
Joined: 24 Aug 2009, 11:33
Location: England
Contact:

Re: Analog Stick Walk/Run when the game will only toggle

Post by Jonathan »

Hmm, another DistanceZone problem...
Possible solution in the Feature X forum :?:

Oke_Doke
Xpadder Xpert
Posts: 327
Joined: 21 Dec 2009, 16:17
Location: jupiter
Contact:

Re: Analog Stick Walk/Run when the game will only toggle

Post by Oke_Doke »

Wouldn't upgrading the core loop to 1000hz help solve this? Faster core loop thread
It would be better at detecting rapid change in distance through a 1% zone would it not?

Primal Fear
Xpadder Xpert
Posts: 2437
Joined: 09 Feb 2010, 16:41
Location: Germany
Contact:

Re: Analog Stick Walk/Run when the game will only toggle

Post by Primal Fear »

I think detection of exactly 1% of distance is only a hardware problem. If you move the stick too fast, it will not send this exact signal, so Xpadder wont get it.

Post Reply

Return to “Other questions”