XIM Community

XIM setup: Scientific way to un-tweak games input  (Read 6135 times)

Offline Memento_Mori

  • Member
  • *
  • Posts: 168
    • View Profile
Hello everybody,

I would like to discuss a topic that might be quite relevant for enhancing the ease of use of the XIM. The topic is how to extract useful information from games in order to configure those parameters which do not depends on taste, but depends on the game implementation.

For those out of the development I'm likely going to sounds quite nerdish. For those inside the dev. I'll be quite naive. Nevertheless here I go:


In order to make tha gamepad usable, game developers come up with acceleration curves and different sensitivity handling. These "helps" for the gamepad are actually "obstacle" for the XIM user, when it comes to the mapping of the mouse to the gamepad.

First we have to define what is the kind of mapping a user used to PC FPS gamer wants. Without taking basic sensitivity into account, the usual scenario entails:

- Gamer that use linear mouse movement mapping (no acceleration)
- Gamers that use in game acceleration (*)

In both cases, there is a linear basis on which the final mapping is constructed.

(*) here I refer to classic m_accel (or similar) in games like quake, hl, warsow, ...

In order to let the gamer choose for their preferred settings, all the game dev tweaks have to be removed by inverting them.
There are two main points:
1) How do you chose the type of functions (anti-tweaks) to make the tweaked input back to linear?
2) How do you set the parameters of these likely non linear functions?

About 1:
- is there available information about the input handling implementations in the various games? (don't think so, eh?)
- if not, is there a general solution that might work more or less well?
I don't possess a xim atm, but I've read you can adjust various settings, such as the exponential rate and so on, therefore such general (or at least hopefully general) solution exists.

About 2:
Gamers have their own taste, but in imho user configuration should come after the input has been "un-tweaked" back to linear. The advantage  of such approach is that this un-tweaking process is only game dependant and not gamer dependant!
Just to exemplify: Halo3 with  in-game sens 10 is the same on every console. If it can be brought to linear with function f1 and parameters a b c, then these parameters hold for everybody, and based on these, gamers can then add their own sensitivity and accel settings knowing that there was a solid base.

So the question is now how to extract the useful information from the games. Gaming on the PC is doomed by personal feelings about the mouse movement. The only really scientific work I've heard of is this one. In our case we don't need a record player, since it's much easier to just force certain input values. The tricky part is to read the rotation speed on the screen, especially because it must be a speudo continuous reading. 

The only thing that comes to my mind is to use optical flow (a tech. to extract motion information from image sequences). It would work more or less this way: in game a player look to the sky (90° up, so that everything is at the same distance. A ceiling is ok. A cylindrical level would also fit, but usually there aren't).  At this point a certain input value is plugged in, the player view starts to rotate. The screen needs to be recorded, and the sequence of images processed in order to extract in game rotation speed. Changing the input value would result in a change of the observed speed, but instead of human feeling these are now concrete measurable values.
Now this is a quite unpractical solution, because the recording and the optical flow analysis are not that easy. Moreover, the precision level of this method, due to the implementation of the single parts, could make the whole thing useless. But if the difficulties are surpassed, the result would really be the best possible linearization of the input.

I hope you can get what I wrote here, and that this post can lead to something useful.

Best,
meme

« Last Edit: 11:12 AM - 03/10/08 by Memento_Mori »

Offline Tonester

  • MVP
  • *
  • Posts: 1345
    • View Profile
  • Gamertag: EpicNerd
  • PSN ID: A_McCulley
Re: XIM setup: Scientific way to un-tweak games input
« Reply #1 on: 12:26 AM - 03/11/08 »
Any gamer with a clue plays with 0 acceleration.  I'd say creating a default XIM profile which accounts for gamers who play with acceleration and without acceleration is a huge waste of resources.

XIM with no mouse acceleration is not only easier - but preferable to probably %99 of M&KB people (at least those who play competitively.... I can't speak for non-competitive M&KB users).

Also, keep in mind that I have done zippy research as to how XIM is actually implemented.  But, if it is running through a PC with a mouse and keyboard attached.... wouldn't the PC already take into account mouse acceleration before XIM starts doing all of its interpretations/calculations before sending it off to the 360?

*EDIT*
Just read your whole post.  This has already been discussed by the devs.  They already have algorithms in place to determine if a game uses a circular/square deadzone, the size of this deadzone, etc.  I'm a comp sci major, but I won't pretend to know how all of this works.  But, off the top of my head... I'd say the in-game sensi has very little to do with what goes on with XIM.  Meaning - I can't think of a single reason why people wouldn't put every game up to the maximum sensitivity since this gives them the highest possible max in-game turning speed.  Then, with the highest in-game sensi used, adjust your actual mouse speeds accordingly to find the new in-game speed/response you are most comfortable with.
« Last Edit: 12:31 AM - 03/11/08 by Tonester »

Offline Ding Chavez

  • MVP
  • *
  • Posts: 1190
    • View Profile
  • Gamertag: DcIhNaGv3z
Re: XIM setup: Scientific way to un-tweak games input
« Reply #2 on: 01:22 AM - 03/11/08 »
Yeah I am currently working on mapping out the acceleration curve for Halo 3 (in-game sensitivity at 10) at a given XIM setting.  Basically I am just going to increment static mouse movements and then time the in-game rotation speed.  I will then plot all this data into a graph to see how the mouse translation settings actually relate to rotation speed.  The goal is to find an XIM setting that will covert linear mouse input to a linear increase in rotation speed.

It is my hunch that the XIM sensitivity does not behave like what we might expect… I am guessing that the XIM sensitivity actually has an effect on translation curvature.  If I am right, then players will need to adjust their sensitivity at the PC/mouse level.

I am still looking for an easy to use, free, mouse macro program that will let me increment static mouse movement.  So if anyone is aware of a program that will help me, please let me know (XAE will not work as it gives specific joystick coordinates).

Offline Memento_Mori

  • Member
  • *
  • Posts: 168
    • View Profile
Re: XIM setup: Scientific way to un-tweak games input
« Reply #3 on: 05:24 AM - 03/11/08 »
Yeah I am currently working on mapping out the acceleration curve for Halo 3 (in-game sensitivity at 10) at a given XIM setting.  Basically I am just going to increment static mouse movements and then time the in-game rotation speed.  I will then plot all this data into a graph to see how the mouse translation settings actually relate to rotation speed.  The goal is to find an XIM setting that will covert linear mouse input to a linear increase in rotation speed.

You're the man!  ;)

How do you plan to measure rotation speed? I'm interested.

Quote
It is my hunch that the XIM sensitivity does not behave like what we might expect… I am guessing that the XIM sensitivity actually has an effect on translation curvature.  If I am right, then players will need to adjust their sensitivity at the PC/mouse level.

This sounds weird. Did the devs post somethign about it?

Quote
I am still looking for an easy to use, free, mouse macro program that will let me increment static mouse movement.  So if anyone is aware of a program that will help me, please let me know (XAE will not work as it gives specific joystick coordinates).

Can't you just map a key to the rotation input  and set some input strength (which you then change) ?

Offline Memento_Mori

  • Member
  • *
  • Posts: 168
    • View Profile
Re: XIM setup: Scientific way to un-tweak games input
« Reply #4 on: 05:40 AM - 03/11/08 »
Any gamer with a clue plays with 0 acceleration.  I'd say creating a default XIM profile which accounts for gamers who play with acceleration and without acceleration is a huge waste of resources.

XIM with no mouse acceleration is not only easier - but preferable to probably %99 of M&KB people (at least those who play competitively.... I can't speak for non-competitive M&KB users).

That's ok for me, I play without it. There are games though where accel becomes handy and there are people using it (not only noobs).
 But really, this is not the point in this discussion.

Quote
Just read your whole post.  This has already been discussed by the devs.  They already have algorithms in place to determine if a game uses a circular/square deadzone, the size of this deadzone, etc.  I'm a comp sci major, but I won't pretend to know how all of this works.  But, off the top of my head... I'd say the in-game sensi has very little to do with what goes on with XIM.  Meaning - I can't think of a single reason why people wouldn't put every game up to the maximum sensitivity since this gives them the highest possible max in-game turning speed.  Then, with the highest in-game sensi used, adjust your actual mouse speeds accordingly to find the new in-game speed/response you are most comfortable with.

I'm not sure I get your point. My apologies if I restate the obvious...

What I'm talking about is to have the game specific input tweaks removed (i.e. a way to get the input set back to linear, so that afterwards people can set their sensitivity and so on). The problem is that game developers do not publish the way they treat the input from the gamepad, therefore is quite hard to invert these unknown functions.

The fact I wrote "in game sens 10 for halo" is just an example. If halo devs used the very same tweaks for all the in game sens then you're right, xim has little to do with it. But it might be that they did different tweaks meant for different styles, and therefore the value 10 can be relevant. In the end what really matters is that someone picks a value and does what Ding Chavez is up to. At that point there should be enough data to extract the tweak function and invert them.
« Last Edit: 05:42 AM - 03/11/08 by Memento_Mori »

Offline Filezilla

  • Member
  • *
  • Posts: 30
    • View Profile
Re: XIM setup: Scientific way to un-tweak games input
« Reply #5 on: 07:58 AM - 03/11/08 »
first sorry for my bad english.

about my idea:

You could record a specific movement sequence of the crosshairs with a tv/video capture card. The mouse  movement must be linear. (you can achieve this with a tiny motor that pushs the mouse forward or a tool which simulates this mouse movement) This sequence could be a 180° movement down/up or sideway. Then you load this sequence into a specific video processing tool und put a grid at the background. Now it is possible to analyse the distance of movement to the time. You could devide the diversity of distance by the diversity of time and get a couple of variables. You can make a graph of it. There should be a a non-proportional behavior. On this base, you could define a function (adjustment function) to get a proportional/linear behavior. This function with the integrated variable could be implemented into Xim software.
So you will get a smooth linear crosshair behavior.

Each game you will need a specific function. If someone goes through this procedure he can display his results and the xim developers could implement it. Then they could release an update.




« Last Edit: 09:42 AM - 03/11/08 by Filezilla »

Offline Ding Chavez

  • MVP
  • *
  • Posts: 1190
    • View Profile
  • Gamertag: DcIhNaGv3z
Re: XIM setup: Scientific way to un-tweak games input
« Reply #6 on: 10:13 AM - 03/11/08 »
Quote from: Memento_Mori
You're the man!  ;)
How do you plan to measure rotation speed? I'm interested.

Thanks.  I am going to use a good old fashion stopwatch.  I will just have to take multiple data entries then average it all out.  It won’t be perfect, but it will be quick-and-easy and for the most part it, should be accurate enough.

Quote from: Memento_Mori
This sounds weird. Did the devs post somethign about it?

Sort of…  OBsIV said that he used this online tool when working on translation

Quote from: OBsIV
http://www.walterzorn.com/grapher/grapher_e.htm
 
Set:
 
X min = 0
X max = 100
Y min = 0
Y max = 100
 
Function f(x) =
pow(x,.5) * 7.5;
pow(x,.5) * 20.0;
Then click "Plot Graph".
 
The X-axis is raw mouse movement (delta), the Y-axis is translated result. The functions used are those I ship with Default.xim (primary and secondary sensitivity).

When you increment the XIM sensitivity, the curvature of mouse translation changes (not in shape but in magnitude) and thus, the curvature of in-game acceleration should change.  Changing the PC/mouse sensitivity will change how quickly you travel along the curve, but will not actually change the translation.

Quote from: Memento_Mori
Can't you just map a key to the rotation input and set some input strength (which you then change) ?
Yes, that is exactly what I want to do i.e. set a key-press macro to equal some static mouse movement.  I can then map the in-game result of a linear increase in mouse movement.  We will then gain a better understanding of the relationship of mouse input to in-game rotation speed for a given XIM setting.

By using the graphing utility that OBsIV uses, I can compare the mouse translation curvature with rotation speed curvature, and then adjust the XIM settings accordingly.  It will be a little trial and error, but hopefully I can find a setting which creates a linier translation.

Offline nickstudy

  • MVP
  • *
  • Posts: 1731
  • Xim360 Tester. All Hail Xim360!
    • View Profile
Re: XIM setup: Scientific way to un-tweak games input
« Reply #7 on: 10:26 AM - 03/11/08 »
Yeah I am currently working on mapping out the acceleration curve for Halo 3 (in-game sensitivity at 10) at a given XIM setting.  Basically I am just going to increment static mouse movements and then time the in-game rotation speed.  I will then plot all this data into a graph to see how the mouse translation settings actually relate to rotation speed.  The goal is to find an XIM setting that will covert linear mouse input to a linear increase in rotation speed.

It is my hunch that the XIM sensitivity does not behave like what we might expect… I am guessing that the XIM sensitivity actually has an effect on translation curvature.  If I am right, then players will need to adjust their sensitivity at the PC/mouse level.

I am still looking for an easy to use, free, mouse macro program that will let me increment static mouse movement.  So if anyone is aware of a program that will help me, please let me know (XAE will not work as it gives specific joystick coordinates).



I'm with you on this. I started at .00 and I am up to .41 thus far mapping out the curve for the sweet spot. I'd like to see what you come up with.
Happy Xim360 tester (former)

Gamertag ii TR00F ii
That's 2 i's a space a TR then 2 zero's an F then a space then 2 more i's.

Offline Sarcophilus

  • Member
  • *
  • Posts: 3
    • View Profile
Re: XIM setup: Scientific way to un-tweak games input
« Reply #8 on: 11:55 AM - 03/11/08 »

I am still looking for an easy to use, free, mouse macro program that will let me increment static mouse movement.  So if anyone is aware of a program that will help me, please let me know (XAE will not work as it gives specific joystick coordinates).


http://www.autohotkey.com/ Easy to use and free! It autorecords movement/keystrokes and saves it to a script that you can edit.

Hope it helps!

Offline Ding Chavez

  • MVP
  • *
  • Posts: 1190
    • View Profile
  • Gamertag: DcIhNaGv3z
Re: XIM setup: Scientific way to un-tweak games input
« Reply #9 on: 05:19 PM - 03/11/08 »

I am still looking for an easy to use, free, mouse macro program that will let me increment static mouse movement.  So if anyone is aware of a program that will help me, please let me know (XAE will not work as it gives specific joystick coordinates).


http://www.autohotkey.com/ Easy to use and free! It autorecords movement/keystrokes and saves it to a script that you can edit.

Hope it helps!

Thanks a bunch Sarcophilus!

The autohotkey program seems like it might do the trick, but I need to keep fiddling with it.  As of right now, I am getting a lot of bizarre behavior and unexpected/unpredictable results.
For instance:
- Once autohotkey moves the mouse to the edge of the screen, the XIM stops reading mouse input.  When I try to loop-in repositioning the mouse back in the center of the screen (so as to create more mouse movement space), then the movement macro stops working.
- I am also getting weird behavior with regards to mouse speed on screen and the XIM interpretation of joystick angle.  The autohotkey macro will move the mouse icon on screen at a very slow speed, yet the XIM reads this as a fairly sever joystick angle.  But when I move my mouse physically, the mouse icon moves much faster on screen, yet the XIM will interpret this as a less sever joystick angle.
- Also, progressively incrementing the number of pixels moved per time ratio, results in a non-static mouse movement.  Basically the macro starts moving the mouse fast and then begins to slow down… weird.

Hopefully I will get it to work so I can get some controlled mouse input to the XIM.
« Last Edit: 12:44 AM - 03/12/08 by Ding Chavez »

Offline Sarcophilus

  • Member
  • *
  • Posts: 3
    • View Profile
Re: XIM setup: Scientific way to un-tweak games input
« Reply #10 on: 09:46 PM - 03/11/08 »
Thanks a bunch Sarcophilus!

The autohotkey program seems like it might do the trick, but I need to keep fiddling with it.  As of right now, I am getting a lot of bizarre behavior and unexpected/unpredictable results.
For instance:
- Once autohotkey moves the mouse to the edge of the screen, the XIM stops reading mouse input.  When I try to loop-in repositioning the mouse back in the center of the screen (so as to create more mouse movement space), then the movement macro stops working.
- I am also getting weird behavior with regards to mouse speed on screen and the XIM interpretation of joystick angle.  The autohotkey macro will move the mouse inco on screen at a very slow speed, yet the XIM reads this as a fairly sever joystick angle.  But when I move my mouse physically, the mouse icon moves much faster on screen, yet the XIM will interpret this as a less sever joystick angle.
- Also, progressively incrementing the number of pixels moved per time ratio, results in a non-static mouse movement.  Basically the macro starts moving the mouse fast and then begins to slow down… weird.

Hopefully I will get it to work so I can get some controlled mouse input to the XIM.


!!!SORRY FOR THE BIG POST!!!
I get excited about about advances in the XIM project and although I havent posted much I have read a lot. I am posting all of this info in the thread instead of in a PM so that other curious minds may benefit.
/disclaimer

You may be aware of this already, but windows has a certain degree of mouse acceleration built in. I'm not sure how this would impact your results/calculations/or if it would change the way autohotkey records your movement. I used to play competetively and disabling acceleration is a topic that comes up ALL the time. If you care to look in to it at all I'll post some links and info that I have aquired over a period of time:

A MS Article on Mouse Accel:

http://support.microsoft.com/kb/q149228/

This is known as the CPL (Cyberathlete Professional League) Mouse Fix and can be added to a .reg file:
[HKEY_CURRENT_USER\Control Panel\Mouse]
"SmoothMouseXCurve"=hex:00,00,00,00,00,00,00,00,00,a0,00,00,00,00,00,00,00,40,\
01,00,00,00,00,00,00,80,02,00,00,00,00,00,00,00,05,00,00,00,00,00
"SmoothMouseYCurve"=hex:00,00,00,00,00,00,00,00,66,a6,02,00,00,00,00,00,cd,4c,\
05,00,00,00,00,00,a0,99,0a,00,00,00,00,00,38,33,15,00,00,00,00,00

^this is the most common method I have encountered to "disable" mouse acceleration^

This is known as the "AccelFix", it replaces the .sys file that controls mouse movement with one that has all acceleration disabled:
Most recent non-test release:
http://home.arcor.de/_aero/projects/accelfix/old/accelfix_20060417.zip

Documentation(FAQ) to the above file:
http://home.arcor.de/_aero/projects/accelfix/old/accelfixfaq_20060417.txt

I can personally say I have tried it and was able to tell the difference in mouse movement in-game, more than I could with the "CPL fix," however here is a forum that the project was originally posted on and you can read the feedback from other people:
http://razerblueprints.net/index.php/component/option,com_smf/Itemid,99/topic,4788.0/

AND FINALLY!

The actual movement of the mouse is changed by the mouse sensitivity that you use in windows itself. Allow me to explain more with the following picture created in MS Paint:



The above image was created by someone on the CAL forums by the name of Antigen07 in part of his Mouse Optimization Guide. Basically it is showing how different mice and DPI settings can drastically change mouse movement. I believe he is using a mouse with a DPI of 400. Notice how the curves become blocked and hard to draw on the left with high sensitivity. It is not because of poor drawing but because of the way the mouse movement is sped up within windows to cover more ground. My mouse has a default DPI of 1800 and I was not able to recreate this issue without installing drivers for my mouse (Razer Diamondback 3g) and manually setting the DPI to 400. The point is you may want to make sure you use the default windows mouse setting (6th or middle notch, shown on the right side of the above image) when you or anyone else does testing.

The point of all this is is to help you isolate the issue. Depending on what kind of calculations you are doing if you remove acceleration from windows it may make things easier for you to figure out when working with purely the acceleration of the 360 game itself. Then later you can factor in equations for default windows mouse acceleration.

The way I am looking at it now is that you are working with 2 different movement accelerations that may occur at different points in the travel of a mouse, be triggered by different speeds of movement, or be triggered after different distances have been covered in X time.

Hopefully some of the information I have posted will be useful in your calculations or atleast informative to someone!
If not... Sorry! Perhaps I got carried away =P
« Last Edit: 09:57 PM - 03/11/08 by Sarcophilus »

Offline myersn024

  • Member
  • *
  • Posts: 216
    • View Profile
Re: XIM setup: Scientific way to un-tweak games input
« Reply #11 on: 07:14 AM - 03/12/08 »
I added those registry settings to see what would happen, and it definitely makes a noticable difference. The mouse feels heavier, if that makes any sense.

Offline SUPRARACER

  • Member
  • *
  • Posts: 317
    • View Profile
Re: XIM setup: Scientific way to un-tweak games input
« Reply #12 on: 10:04 AM - 03/12/08 »
Heavier thru XIM or Windows?



John

Offline myersn024

  • Member
  • *
  • Posts: 216
    • View Profile
Re: XIM setup: Scientific way to un-tweak games input
« Reply #13 on: 10:42 AM - 03/12/08 »
Windows. I'm at work and won't have a chance to try it with the XIM until I get home this afternoon.

Offline Sarcophilus

  • Member
  • *
  • Posts: 3
    • View Profile
Re: XIM setup: Scientific way to un-tweak games input
« Reply #14 on: 10:45 AM - 03/12/08 »
I added those registry settings to see what would happen, and it definitely makes a noticable difference. The mouse feels heavier, if that makes any sense.

Thank you for the feedback and yes the description of the mouse feeling heavier makes perfect sense. Lack of help when moving the cursor (acceleration) should give that feeling, however it should also give a feeling of a more acurate and precise correlation between movement of the mouse and the resulting movement of the cursor once you get used to it.

The feedback also reminded me of something... I should probably post a means of reversing the "CPL Fix" for people who would like to turn acceleration back on via the registry. I would also like to point out that the Accel Fix program is able to tell if you are running a "patched" or "unpatched" .sys file and will prompt you for action. (turning on or off mouse acceleration)

"CPL Fix" Removal (default windows registry settings)
[HKEY_CURRENT_USER\Control Panel\Mouse]
"SmoothMouseXCurve"=hex:00,00,00,00,00,00,00,00,15,6e,00,00,00,00,00,00,00,40,\
01,00,00,00,00,00,29,dc,03,00,00,00,00,00,00,00,28,00,00,00,00,00
"SmoothMouseYCurve"=hex:00,00,00,00,00,00,00,00,b8,5e,01,00,00,00,00,00,cd,4c,\
05,00,00,00,00,00,cd,4c,18,00,00,00,00,00,00,00,38,02,00,00,00,00

Also one more note on windows mouse speed,

Control Panel --> Mouse --> Pointer Options -->
Enhance Pointer Precision should be disabled to further reduce mouse acceleration.
« Last Edit: 10:54 AM - 03/12/08 by Sarcophilus »