Axis translation parameters

From GIMX

Revision as of 12:10, 22 October 2012 by Matlo (talk | contribs) (Smoothing)

Jump to: navigation, search
Work in progress...
Give simple use cases such as: how to bind a joystick axis to an axis
A few things could be taken in this old forum tutorial: http://forum.gimx.fr/viewtopic.php?f=4&t=39#6

This page explains the purpose of each translation parameter.

Dead zone

The dead zone parameter allows to shift the stick positions away from the stick center.
This allows to skip all the stick positions around the stick center that do not generate in-game movement (these positions are called the dead zone of the stick).
If lowest input motion do not generate enough movement, increase the dead zone parameter.

Dead zone shape

The dead zone shape can be set to either rectangle or circle.
Other shapes will be added in a future version.

Sensitivity

The sensitivity parameter is nothing more than a multiplier: input motion is multiplied so as to scale to the output motion range.
Increase it if the movement is too slow and decrease it if the movement is too fast.
It can be a negative value, so as to reverse the motion direction.
Remember that the output motion range is limited (the stick has a max position).

To map a joystick axis to a stick axis, use a value of 128/32768 (about 0.004).
To map a joystick axis to a button axis, use a value of 256/32768 (about 0.008).

Acceleration

The acceleration parameter allows to change the in-game acceleration.
Values higher than 1 increase the effective acceleration, whereas values lower that 1 decrease it.
In-game acceleration is generally positive, which means there is a value in the 0..1 range that will cancel it (at least for games that use simple look mechanics).

Smoothing

The mouse motion can be smoothed using previous mouse motion reports.
It is configurable with two parameters: a buffer size and a filter.
A deeper description of the smoothing technique used by GIMX is available there.

Buffer size

The buffer size (in the 0..30 range) is the number of mouse motion reports that are used to smooth the mouse motion.
The smoothing window is the buffer size multiplied by the GIMX update period (inverse of the frequency).
Examples:

GIMX frequency = 250Hz, buffer size = 10
1000/250 * 10 = 40ms
GIMX frequency = 100Hz, buffer size = 10
1000/100 * 10 = 100ms

The higher the buffer size, the higher the added latency.

Filter

The filter (in the 0..1 range) defines how much the previous motion reports will count in the final motion.
Value 1 means that the final motion is an average of the buffered motion reports.
Value 0.5 means that the current motion report counts for 1, the previous one for 0.5, the next oldest one for 0.25 (=0.5x0.5), and so on.
Value 0 means that only the current motion report counts (resulting in an unfiltered motion).
So as to preserve a low latency, high filters (1) should only be used with low buffer sizes (2), and high buffer sizes (>10) should only be used with low filters (<0.5).