DOWNLOAD
For the coders among you, you may like to check out the Github page.
What is it?
A program to make aiming with a joystick in MWO feasible.
Doesn't cl_joystick_absolute_inputs do that?
No, "Absolute" mode in MWO is broken as it has a big deadzone that you cannot remove, and it does not map the stick to the full scale.
Who cares? You can't be competitive aiming with a joystick!
Not necessarily true. Properly done, absolute aiming has the potential to be more competitive than mouse.
It doesn't work / Motion is jerky! etc
Please be sure that your joystick is of sufficient quality to use Absolute aiming.
In order to be good enough, you need to be able to accurately point to in excess of the number of pixels you run the game in (eg 1920 for 1080p) - ie about 10 or 12-bit accuracy or better is desirable.
Unless you have a Thrustmaster T16000M or an expensive stick, this is very unlikely to be the case.
Even with one of those sticks, you probably need an extended shaft (To give you more accuracy) and to remove the centering spring.
Also, be aware that at the moment MWO imposes both an upper and lower deadzone - in a low twist mech, you have a bigger upper deadzone. For example, in a stalker the "window" is only ~ 2000 x 800 joystick points (of a scale of 0 to 16384) - so you will not be seeing a ton of resolution until PGI fix this!
Quick Start:
Download and install vJoy.
Download the zip from the top of this post and extract. Run the EXE file, ignore .ahk files.
FOLLOW THE CALIBRATION PROCESS BELOW!
Full instructions repeated from the source code:
=================================================================
Quick Start:
Install vJoy virtual joystick driver from http://vjoystick.sourceforge.net
Use the EXE file in the zip
For coders:
Also Download:
AHK from http://ahkscript.org. !!! NOT autohotkey.com !!!
AHK-CvJoyInterface.ahk from here: https://github.com/e...-CvJoyInterface
ADHD from https://github.com/e...eys-for-Dummies
Then use the AHK version from the zip
MWO Setup:
One Time
========
1) Set cl_joystick_absolute_inputs=1 is required in ?user.cfg? - i need mine in system.cfg
2) In the CONTROLLER menu, the following sliders MUST be at thier DEFAULT values!
X-AXIS SENSITIVITY, Y-AXIS SENSITIVITY and DEADZONE
DO NOT attempt to set deadzone to 0! It goes mental!
3) Bind vJoy axis 1 to TORSO TWIST in MWO:
Start the script, go into the BINDINGS tab and bind a KEYBOARD KEY to "MWO Bind X" and "MWO Bind Y".
Double click TORSO TWIST in the JOYSTICK column
Hit the key you bound to "MWO Bind X"
This moves the virtual stick without you having to move the physical stick...
... so we can be sure MWO binds to the virtual stick.
Now repeat for the PITCH setting.
3) Configure inputs
In the script, select the ID and axis number of the stick you wish to use as input.
Per-Mech etc
============
Low Threshold (Deadzone) is probably the same for all mechs.
However, the High Threshold may well vary from mech to mech.
You can use the PROFIlES tab to add profiles if you need different setups for different situations.
Calibration process:
1) Make sure on the BINDINGS tab you bind something to CALIBRATION MODE, AXIS SELECT, TOGGLE LOW / HIGH and AXIS SET.
Make sure CALIBRATION MODE is not something you would normally use in-game, but when not calibrating, the others do nothing.
2) In-Game, at any point, you can hit CALIBRATION MODE to calibrate.
You will hear a voice telling you that you entered calibration mode, and what current setting you are setting.
eg "Calibrate: X, Low"
This means you are calibrating the Low Threshold of X.
3) You can hit AXIS SELECT or TOGGLE LOW / HIGH to switch between settings (eg X / Y and Low / High)
4) The stick controls the edge of the threshold - move it left to decrease X, up to increase Y etc.
You can only move X when editing X, and Y when editing Y, to avoid unintentional changing of an axis you dont want to.
5) When you find the edge of motion, hit AXIS SET to set that setting (eg X Low)
6) Unless you use AXIS SET for a given setting, no changes are saved when change setting or exit Calibration Mode.
7) If you know roughly where a threshold is, you can use the CALIB START LOW, CALIB START HIGH edit boxes to set values to start at.
This can GREATLY speed up fine-tuning
Good luck and REMEMBER you have PROFILES!
You can duplicate the current profile, so you can save known good settings and experiment in other profiles.
========================================================
Here comes the Science (Because you're worth it!)
OK, so I think I have figured out how to remove MWO's deadzone on absolute stick aiming.
By examining exact axis values that mwo sees (by feeding it input from a vjoy virtual stick that I set exact axis values for through code) and the resulting torso twist, I was able to establish that when on default settings for sensitivity and deadzone, the twist axis behaves in a 100% predictable manner (albeit with a deadzone).
axes are reported as values from 0->32768
To make it easier, we shall shift the scale to -16384 -> +16384 (ie zero is no deflection).
We can then consider each direction as a number between 0 and 16384 (negative - left, or positive - right)
For me, in a test jenner, when I move the axis from 0->~2460 I get no motion at all.
Then, suddenly, with the next pip of motion, we get an exactly proportionate motion.
This continues until part way up the scale (about 12300 in my tests) where it stops.
So from ~2460 to ~12314 I got motion.
I then do some maths to basically take that range of motion and remap it to your physical stick.
When you do nothing with your stick, the virtual stick sits at 0.
When you move your stick to 1%, it moves the virtual stick to 2460 + 1% of the movement range.
When you move your stick to 100%, it moves the virtual stick to 12300
This is a very basic proof-of-concept as of now.
No persistent settings, X axis only.
If it works for other people, then I can make it into a fully fledged tool.
Please try it and see if it works.
I am also interested in knowing:
What affects it?
FOV? Mech torso twist? Elited?
What exact values define your range? Is this the same for everyone with the same appropriate settings?
Discuss, enjoy.
Edited by evilC, 17 January 2015 - 06:22 AM.