Mouse acceleration is a universal evil in QW. Only Thresh ever got good using it. And even he stopped by the time of Quake 2. So why are you still using it?
- but I'm not. In windows mouse acceleration is disabled if you don't use the dinput switch or smthng...
No. Well, it is, but quake has one built in flaw that works about the same way as mouse acceleration, even if you can't really feel it all of the time.
- No kidding???? How do I shut it off??
Take it easy. First listen to this explanation, and if you wanna try out No-Accel QW (tm), don't screw up your config. Make a backup.
Every once in a while when i'm really bored, I poke around the Quake source code (it's freely avalible, but i'm too lazy to link to it). If you're not interested in what's going on in there, feel free to skip down a bit. I'm going to tell you what calculations are used to determine how much to turn the player. There are some steps involved.
Ok, what about the acceleration then? The Quake Sensitivity is a float value, with decimals, just as you would expect. It contains the value you set in the game, with "/sensitivity 4.5" or whatever. But the result from step 2 is stored in an integer variable (mouseX or mouseY). That means rounding it off. Bad idea. Could've been worse though. Could've meant truncating. But rounding is not that good either, because it means with small values, the error gets kind of big. If you use sensitivity 6.3 (about standard), and you move the mouse 2 pixels across the invisible desktop, the result is not 12.6 pixels, but 13. 1 pixel movement yields 6 pixels. See the problem? If not, try this: start QW. Set your sens to 0.4. Now you can slide the mouse very slowly across the pad, and you will not turn. Not at all! If you move your mouse a bit faster, you will turn, but then you'll feel the acceleration I was talking about. All right, noone uses a sens below 2 anyway, but nevertheless, there is an error, which gets bigger the slower you move and the lower sens you got.
And it feels sort of like acceleration, or you could call it bad accurancy or anything really.
Later this integer is multiplied by m_yaw/m_pitch. The result is stored as a float, without rounding. That's fine. After this step, no rounding is done. It means you don't get any undesirable side effects later on. This is what we'll exploit.
Acceleration.
Ewwwwwwwwwwww! Kill it!
Here's how: Use sensitivity 1.
WHAT!? NO WAY!
Easy mate. Lower your sens, turn up your m_pitch. Makes perfect sense. Multiplication with 1 will give you back the input. This means no rounding, since the input was an int to. After this step, multiplication with m_pitch/m_yaw gives the final value. So modify m_pitch/m_yaw to compensate for your new super-low sens, and you'll be winning.
Hey, that's all good. But i been tweaking my sens for ages. How do I know what values to use??
Easy. To get your old sens back, either do the math (ewww!) or tweak your way back to that nice feeling. There is a shortcut though. It's called f_sens, and is a Qizmo command. It shows the sensitivity of every player on the server. It even works while watching demos. The value is adjusted to equal your sensitivity times ten, but only if you use m_pitch = m_yaw = 0.022. This is not fixable, as the proxy can't really ask the server for the sensitivity, but has to calculate it indirectly.
Nevertheless, the value is often perfectly accurate, and even better - driver independent. Two players with equal values will have to move their hands exactly an equal distance (on their respective mouse pads) to rotate say 360 degrees. (At least if the mice don't have way different resolutions. Strangly, a Razor Boomslang 1000 gives about the same value as an MS Mouse, when it should be off with at least a factor 2 (1000 dpi ~ 400 dpi). I wonder what this means, but it makes comparing senses pretty easy.)
Note the f_sens mehod has a few qirks:
Also note that f_sens shows only even multiples of 5 if you use the standard m_yaw/pitch. This is because of the very effect i've been explaining (the rounding error). With standard m_yaw (0.022), set your sens to 5.49, and you get 50. Set it to 5.50, and you get 55. (remember to reset Qizmo for the values to be updated, this unfortunately means restarting qw, or doing /reconnect)
With m_yaw/m_pitch set to about 0.10, and sensitivity 1, you are free to change your sens in steps of 2-3, not in fives. And the accuracy is improved too. This means more frags. Or, if you're looking for nuances, it means aiming at very small passages or spaces (think dm3 quad -> ring tele) is easier. Try it out. And if you're unhappy, change it back. This is just the hard facts, taste should have authority here, as always.
- uh, like, thanks man
np.
- ruffnux (ruffnux@home.se)