American Truck Simulator

American Truck Simulator

Voir les stats:
twin stick config
is there a way to configure twin stick shifting?
< >
Affichage des commentaires 16 à 30 sur 38
DoktorPete a écrit :
Editing the control.sii is the method I'm referring to. It doesn't really matter that you can't have one input selector affect another for the purposes of simulating the pattern, as you're simply telling the game what position both sticks (one acting as your splitter and range, one as your main gearbox) have to be in to equal a certain gear/ratio.

In the context of layout files, which is what I was specifically addressing with this, it absolutely does matter. It can't work any other way, at least not if you actually want it to *behave* the same as IRL. Splitter & Range functions are just (tri-state) booleans, you can't 'assign' them to gear selector slots, they filter gear ratio names per given gear selector slot. The other problem is that the game only implements a single selector input, no matter how many physical shifters you have connected. So depending on how it handles the multiple concurrent input case (I haven't tested this either) can make the above entirely moot anyway (as in, it just won't work).
--

As to the controls.sii file... I'm not really sure if this will work as intended either, but seems like it could - at least for a 4xN compound box. I'm not able to think off the top of my head why it wouldn't, anyway.
Fury6 a écrit :
In the context of layout files, which is what I was specifically addressing with this, it absolutely does matter. It can't work any other way, at least not if you actually want it to *behave* the same as IRL. Splitter & Range functions are just (tri-state) booleans, you can't 'assign' them to gear selector slots, they filter gear ratio names per given gear selector slot. The other problem is that the game only implements a single selector input, no matter how many physical shifters you have connected. So depending on how it handles the multiple concurrent input case (I haven't tested this either) can make the above entirely moot anyway (as in, it just won't work).
--

As to the controls.sii file... I'm not really sure if this will work as intended either, but seems like it could - at least for a 4xN compound box. I'm not able to think off the top of my head why it wouldn't, anyway.

Say you're playing with one of the SKRS shifter's, moving the splitter or range selector should equate to a button toggle, yes? If so, it would be the same principle and you could use button mapping software to register moving a stick into a position as a toggling of one or more of these buttons. You only need it to register 1 selector input as you're basically using button mapping to relocate the splitter/range selectors to what it thinks are 4 buttons on some auxiliary controller or button box but are in reality 4 positions on a second stick. Then you should be able to set your splitter and range booleans as required in the controls file to filter through the ratios for each position of your main shifter.
In the controls file, both the range & splitter each have three distinct functions representing three distinct input behaviours.

1. function toggle (gearsel[n]tgl).
2. function ON/active (gearsel[n]on).
3. function OFF/inactive (gearsel[n]off).

It might not be particularly straightforward, but again I think it could, in principle, be possible to map the gear selector inputs & range/splitter-on/off functions to give you the equivalent behaviour of a 4xN compound box.
--

Using layout files, you can achieve a 2xN compound behaviour using either the range or splitter as a selector input. That is precisely what I did for the Mack 10 & 12 speed TRTXL gearboxes ( https://steamcommunity.com/workshop/filedetails/discussion/1463066263/1738841319816761790/ )
Dernière modification de Fury6; 17 juin 2019 à 13h06
Fury6 a écrit :
In the controls file, both the range & splitter each have three distinct functions representing three distinct input behaviours.

1. function toggle (gearsel[n]tgl).
2. function ON/active (gearsel[n]on).
3. function OFF/inactive (gearsel[n]off).

It might not be particularly straightforward, but again I think it could, in principle, be possible to map the gear selector inputs & range/splitter-on/off functions to give you the equivalent behaviour of a 4xN compound box.
--

Using layout files, you can achieve a 2xN compound behaviour using either the range or splitter as a selector input. That is precisely what I did for the Mack 10 & 12 speed TRTXL gearboxes ( https://steamcommunity.com/workshop/filedetails/discussion/1463066263/1738841319816761790/ )
There is an electro-mechanical option that addresses all of this - force feedback joysticks. You can use the position of the joystick to both send and receive coordinates. I had a piece of software that would let you simulate a hard gated gearshift that existed only in software yet you could feel it as physical stops. You could also use the position of the joystick (by indicating any area of its motion in the software) to send an output of your choice to whatever a game (or an external software) could process. You can even get one joystick to move the other one if that's what you want.

So although not baked into the game, force feedback controllers (I buy used Microsoft Sidewinders) might be used to simulate any matrix of behaviors you desire.
Fury6 a écrit :
kraul59 a écrit :

That's what i meant with: "set the second shifter as a range switcher". Setting up Shifters each for Range and Splitter. Is not exactly like in video but more sticks. :steammocking:

[EDIT: Lot's of rewording]
Actually, it's exactly like in the video, his extra sticks do nothing more than just switch the range (two stick video) and splitter (three stick video) valves, that's it. You could do this in ATS as it is already.

If you mean as in the *first* video, then no that's not really possible and what you're suggesting won't actually work anything much at all like any kind of actual gearbox. Remember, you have two separate functions here, range and splitter, both independant with no way to tie the operation of one with dependence on the other (without some other mechanism external to the game).

You could easily make it work semi-realistically for a two speed auxilliary, but no way to make it work for more than that (unless you're happy with a very clunky and extremely unrealistic shifting method and gearbox operation for the auxilliary).
--

Rookie-31st a écrit :

Meaning 1950 Kenworth twin-stick with 4 ranges having 4 gears each is not possible in the game

Not really no. Not in any way that would work the same as those old boxes did.

Could you air shift the second box then use 4 buttons? Do a 4 x 4, 5 & 4, 6 & 4 with 4 Buttons? 18 Speed with a 4 speed brownie would be fun. Pete in Amarillo, Tx ordered one for a Heavy Hauler around 2017 389. 313 in W.B...

Around 1975 Fuller had a 4x4 air shift on one handel the second handel removed. The Knob had 4 selections with 4 air lines to the top shifting knob. Married Boxes not split Boxes in this set up. Single shaft boxes 205, 210, 305, 350 Cummins Fuller would not warrant the boxes behind a 350 Cummins. To much torque for a single shaft boxes.
Fury6 a écrit :
In the controls file, both the range & splitter each have three distinct functions representing three distinct input behaviours.

1. function toggle (gearsel[n]tgl).
2. function ON/active (gearsel[n]on).
3. function OFF/inactive (gearsel[n]off).

It might not be particularly straightforward, but again I think it could, in principle, be possible to map the gear selector inputs & range/splitter-on/off functions to give you the equivalent behaviour of a 4xN compound box.
--

Using layout files, you can achieve a 2xN compound behaviour using either the range or splitter as a selector input. That is precisely what I did for the Mack 10 & 12 speed TRTXL gearboxes ( https://steamcommunity.com/workshop/filedetails/discussion/1463066263/1738841319816761790/ )

Using gearsel on/off you should be able to set up a second stick through the controls.sii or software button mapping by figuring out the input identification for the different gates and then mapping the ID's of the gates you want to use to what state you want gearsel1 and 2 to be in.

Say gate 1 is left and up and its ID is "joy.b1"
Settings in controls.sii
"mix gearsel1off `joy.b1`"
"mix gearsel2off `joy.b1`"
Now gate 1 on that H-shifter turns your range and splitter both off, simulating Lo-Lo on your compound.

Via a layout you can then achieve the madness that is twin stick shifting for whatever transmission your heart desires. Keeping in mind that the stick behaviour might not equate 100% to IRL, as you have to pre-select your range and gear splits so I don't think you can move both sticks at the same time if you wanna make your shift.
Incase anyone is still curious, I finally managed to test out my theories. Using a G29 with the shifter add-on and a TH8A I was able to edit the controls file as previously mentioned and now have a twin stick setup going with my own Spicer 4x4 transmission mod. I don't have reverse setup exactly right and I've yet to test the behaviour with gearbox synchronization turned off but phase 1 is going quite according to plan.
DoktorPete a écrit :
Incase anyone is still curious, I finally managed to test out my theories. Using a G29 with the shifter add-on and a TH8A I was able to edit the controls file as previously mentioned and now have a twin stick setup going with my own Spicer 4x4 transmission mod. I don't have reverse setup exactly right and I've yet to test the behaviour with gearbox synchronization turned off but phase 1 is going quite according to plan.
Definitely keep us posted
Very sweet. I tried and failed to get twin sticks to work properly, so I am super interested in your solution.
I'm just on my way out for an hour or so, but if you wanna add me as a friend on steam I can walk you through it when I get back
Kimo 23 déc. 2019 à 15h01 
Hylton Trucking a écrit :
DoktorPete a écrit :
Incase anyone is still curious, I finally managed to test out my theories. Using a G29 with the shifter add-on and a TH8A I was able to edit the controls file as previously mentioned and now have a twin stick setup going with my own Spicer 4x4 transmission mod. I don't have reverse setup exactly right and I've yet to test the behaviour with gearbox synchronization turned off but phase 1 is going quite according to plan.
Definitely keep us posted
Yes please! :)
Alright guys, after fiddling with it a little more I have managed to get it working. I'm still new to the whole wheel setup and its really weird to not have any feeling transmitted through the clutch pedal, so for testing purposes I've been using a synchronized clutch.

It's time consuming to explain, but relatively easy once you know what you're looking for. There are actually a couple ways to do it, but the range/splitter way is not as true-to-life, so I'm gonna skip it. Keep in mind I have no coding or software writing knowledge and figured most of this out by googling things and messing with the files until i made it work. This is also setup for my particular Spicer 8401-A/8341-F combination which is a 4 speed main with a 4 speed auxiliary. If you're trying to modify the Eaton 10-13-18's to use twin sticks for range and splits, it is done a different way (though still quite doable).

You're gonna be doing most of your work in the controls.sii file in your profile. The main ones you need to find are:
config_lines[366]: "mix gearsel1on `joy.b19?0 | semantical.gearsel1on?0`"
config_lines[367]: "mix gearsel1off `! (joy.b19?0) | semantical.gearsel1off?0`"

gearsel 1 is your range selector
joy.b19?0 is a button (this is the button that corresponds to the reverse gate on my G29 shifter, the ?0 is a syntax thing that i don't fully understand)
the ! in front of the () in the 2nd line is the logical operator for "NOT".
the | is the logical operator for "OR", and is how you bind multiple buttons to do the same function.
not sure of the importance of the semantical.gearsel1on?0, so I leave it alone.

What line 1 tells the game is that "when button 19 on joystick 1 is pressed, turn the range selector on." The second line tells the game "if button 19 on joystick 1 is NOT being pressed, turn the range selector off." The game reads each gate as a corresponding continuous button press.

The only reason we need to do this is because the game can only recognize 16 impulses for gear selection and we need all of those for our forward gears so we have to find a way to tell the game how to find the reverse gears.

Next we're gonna edit our gear selector impulses. Yours probably stops at 6 and only has 1 button for each but this is roughly what it's gonna look like when you're done:

config_lines[372]: "mix gear1 `(joy.b13?0&joy2.b1?0) | semantical.gear1?0`"
config_lines[373]: "mix gear2 `(joy.b13?0&joy2.b2?0) | semantical.gear2?0`"
config_lines[374]: "mix gear3 `(joy.b13?0&joy2.b6?0) | semantical.gear3?0`"
config_lines[375]: "mix gear4 `(joy.b13?0&joy2.b5?0) | semantical.gear4?0`"
config_lines[376]: "mix gear5 `(joy.b14?0&joy2.b1?0) | semantical.gear5?0`"
config_lines[377]: "mix gear6 `(joy.b14?0&joy2.b2?0) | semantical.gear6?0`"
config_lines[378]: "mix gear7 `(joy.b14?0&joy2.b6?0) | semantical.gear7?0`"
config_lines[379]: "mix gear8 `(joy.b14?0&joy2.b5?0) | semantical.gear8?0`"
config_lines[380]: "mix gear9 `(joy.b15?0&joy2.b1?0) | semantical.gear9?0`"
config_lines[381]: "mix gear10 `(joy.b15?0&joy2.b2?0) | semantical.gear10?0`"
config_lines[382]: "mix gear11 `(joy.b15?0&joy2.b6?0) | semantical.gear11?0`"
config_lines[383]: "mix gear12 `(joy.b15?0&joy2.b5?0) | semantical.gear12?0`"
config_lines[384]: "mix gear13 `(joy.b16?0&joy2.b1?0) | (joy.b19?0&joy2.b1?0) | semantical.gear13?0`"
config_lines[385]: "mix gear14 `(joy.b16?0&joy2.b2?0) | (joy.b19?0&joy2.b2?0) | semantical.gear14?0`"
config_lines[386]: "mix gear15 `(joy.b16?0&joy2.b6?0) | (joy.b19?0&joy2.b6?0) | semantical.gear15?0`"
config_lines[387]: "mix gear16 `(joy.b16?0&joy2.b5?0) | (joy.b19?0&joy2.b5?0) | semantical.gear16?0`"

You'll notice there's a joy.b and a joy2.b. In my case joy. is the logitech shifter, and joy2. is the thrustmaster.

Each of those gear1-16 is read by your shifter layout as a gear_impulse_index. It's basically what button the game registers to each shifter gate in its original form. By combing 2 button presses with the "&" logical operator, we are able to tell the game that in order to directly select a gear we have to be pressing 2 buttons at the same time. In my case, to select my lowest gear, I need to have both my shifters in the 1st position. For 4th I have to have the Logitech in gate 1 and the Thrustmaster in gate 5. You'll notice 13-16 have 2 sets of numbers separated by the | operator. This is how we're getting our reverse. The game sees this as in order to select "impulse 13" you can press (b16 on joy 1 and b1 on joy 2) or you can press (b19 on joy1 and b1 on joy2). We'll come back to that shortly.

By setting it up this way, as soon as you take either stick out of its required position, you're in Neutral. This allows you to shift the sticks independently, but also requires you to shift them together when going from say an Overdrive to a Underdrive gear. This is key for this type of transmission as unloaded, you can probably skip 3-4 gears at a time until you hit 3U.

The layout is the other place you're gonna be messing with things, and each gear is represented in the layout by:

direct_gearbox_gear : neutral {
gear_impulse_index: 0
selector_1: -1
selector_2: -1
gear: 0
}

That one's pretty straightforward, how does the game find neutral? When all 3 of these conditions are met. gear_impulse_index: 0 means whenever your lever(s) aren't selecting any of your 16 impulses set up in the controlls.sii file. selector_1:-1 means ignore the state of selector 1 (range). selector_2: -1 means ignore the state of selector 2 (splitter).

alright, how about a reverse gear? (this is from my spicer layout)

direct_gearbox_gear: reverse.1 {
gear_impulse_index: 13
selector_1: 1
selector_2: -1
gear: -1
name: RL
}

This basically says in order to find the 1st reverse gear (named RL), the gear selector has to be on impulse 13, range must be on, and it doesn't matter what the splitter selector is doing.

what about 1st?

direct_gearbox_gear: forward.1 {
gear_impulse_index: 1
selector_1: -1
selector_2: -1
gear: 1
name: 1L
}

This is 1st forward gear (named 1L), for which impulse 1 must be selected, and it doesn't matter about either selector. Now hopefully when you see this last one you can figure out how it all comes together.

direct_gearbox_gear: forward.13 {
gear_impulse_index: 13
selector_1: 0
selector_2: -1
gear: 13
name: 4L
}

This one says in order to find the 13th forward gear (named 4L), the gear selector has to be on impulse 13, range selector must be off, and again the splitter selector is irrelevant.

Forward 13 and reverse 1 use the same impulse, but different range settings. The secret here is button 19 on joystick 1. Remember when we set impulse 13 to be activated by pressing either b16 OR b19 on joystick 1 as part of its combination? Well we also told it earlier that if b19 is being pressed on joystick 1, set the range to on and if it isn't to leave it off.

I probably skipped like a million steps so I'll eventually make a youtube tutorial about it at some point with how to make the transmission and layout files form scratch thrown in, but for now I'd consider proper twin sticks with RL functionality to be achieved.

Question/comments?
Thank you for sharing this solution. The "&" logic is exactly what I was missing. Will take some time and figure out how to apply to my configuration. I really appreciate your contribution to the community! :winter2019happyyul:
The & operator was a light bulb moment for sure, the only issue it doesn't address is being able to sit at a light with 1 stick engaged as that still registers as Neutral to the game, but its a small price to pay as far as I'm concerned.

I just managed to copy the necessary config settings from my test profile to my main profile and it's working as expected. I guess the next step is to extend my shift levers and get those suckers floor mounted.

Thanks! I'm just glad someone else out there wants to implement this, and if you need any help troubleshooting let me know!
I would love to see how that setup looks/works on video. Glad you got it mostly figured out. I've been waiting in anticipation.
< >
Affichage des commentaires 16 à 30 sur 38
Par page : 1530 50

Posté le 9 aout 2018 à 5h46
Messages : 38