Tuesday, November 24, 2015

Why higher DPIs can be good for mouse accel

In a number of competitive FPS communities, there seems to be a stigma against high DPI.  Many gamers run their mice at 400 DPI for various reasons.  In traditional flat/no accel cases, that's fine, but I believe it's less than optimal for povohat's driver.

Important note: some mice have known tracking issues/inconsistencies/jitter at higher DPI.  Google your mouse and see if people recommend avoiding certain DPIs.  If your mouse is bad at 5000 DPI, but it's good at anything from 400-2500, use something like 2500 or a multiple of 400 to make the conversion easier.



That aside, here's my argument for higher DPI:  If you are running your mouse at 1000hz and 400 DPI, chances are that the fastest you will realistically move your mouse will only show, for example, a change of 15 counts (or dots).  Since the driver reads in how many counts (an interger value) and uses the acceleration settings to change it, what does that mean?  Well, your entire acceleration curve has to be packed into the range of 1 to 15.  Most of the time you'd probably be moving your mouse and only get a count less than 10.  A small change in the speed you move the mouse could result in a larger jump in sensitivity than you desire.  Effectively, you've got a bunch of step increases in sensitivity.  It would look like this:


If you used 800 DPI instead of 400, you could get the same effective curve (you'd have to tweak your post-scale and acceleration values), but it would be spread out over a twice the number of points, and thus be smoother/have smaller jumps in sensitivity.  800 DPI would look like this:
As you go to higher DPIs, you could make your curve even smoother.  I've used 2300 to 3200 on mice, but I don't notice any difference jumping up to 12000.  See also: how to copy settings between DPIs.

19 comments:

  1. Interesting writeup but I still prefer using 400/800 DPI for two reasons.

    1: A lower DPI is more manageable during desktop usage though this depends on your resolution. I use 2560x1440 and 400 DPI is very comfortable.

    2: Many games have a very low limit of what sensitivity you can set your mouse to. Using a higher DPI means you have to use a lower sensitivity, all things being equal, and if you use too high of a DPI the game might not support the sensitivity you want. By having a low DPI, such as 400, you ensure that you can use your sensitivity (cm/360) throughout all games if not 99% of them.

    ReplyDelete
    Replies
    1. Keep in mind that if you are changing from 400 DPI to 1600 DPI, you'd want to use the driver settings to divide your post-scale X/Y values by 4. Your desktop (and in-game) sensitivities would feel exactly the same - you'd just get the benefits I outlined above.

      I believe this addresses both of your points.

      Delete
    2. Valid point :)

      Delete
  2. Watching this video (https://www.youtube.com/watch?v=jss9Zo37MCQ) illustrated very clearly the difference between low DPI and high DPI. Clearly, the higher it is the better. I have a Logitech G303 and am very interested in seeing how smooth I can get the mouse to become with higher DPI. However, I'm also planning on using acceleration. So it'll be insanely high DPI + accel with low scale + low sensitivity in-game for an incredibly smooth experience that will still allow me to flick in arena fps.

    ReplyDelete
    Replies
    1. Wait, does setting the DPI to something high like 5000 and then using post-scale to scale it down to for example 500 still retain the benefits of the 5000 DPI?

      Delete
    2. Say you move half the distance of what it would take to get 500 dpi to register a single pixel change - your mouse might not tell the driver it moved at all. But if you do the same distance with 5000 dpi, it will have told the driver that it moved ~5 times, right? And if you set post-scales to 0.1, then the driver divides each of those movements by 10. From one update of mouse movements to the next, the driver keeps any fractional value and adds new mouse movements to it. You won't see any change in the cursor on screen until the saved output passes 1 though.

      So, if you have your mouse at 500 DPI and move it at 1.5 times the distance it takes to register a single pixel change, you might get "1" movement, or you might get "2" movements as an input to the driver. And the resulting output could be a large difference in sensitivity if you use high acceleration.

      But if you have 5000 DPI and move it the same distance as above, it will somewhere close to 15 movements. If your effective mouse sensitivity curve is the same as the 500 DPI case, you'll get a much more consistent result in how far your mouse moves on screen versus how far you moved it on your mousepad.

      Make sense?

      Delete
    3. Oh, that does make sense.

      Delete
  3. I'm having problems trying to convert to a higher dpi. I used to play at 800 dpi, but I recently got a zowie ec1 and I've been trying to play with 3200 dpi but the accel curve is really wonkyyyy because of the high dpi.........At 800 dpi, I used to play with postscale x 0.75 and the curve would max out at 2.1 at 55 updates (accel 0.033) However, trying to play at 3200 dpi I can't seem to find the same accel curve I was used to. The closest thing I've been able to find is postscale x 0.189 maxing out at 0.5 at about 240 updates. (accel 0.0071). I had to manually measure the new postscale values and just guess the new movements per update that I wanted it to cap at because it was so much larger than it was before. Any help? :(

    ReplyDelete
    Replies
    1. If your 800 dpi settings were postscale 0.75, accel 0.033, try dpi 3200 with postscale 0.1875 and accel 0.00825 (I divided your 800 dpi settings by 4). Keep sensitivity, sens cap, and power the same. If you had an offset, divide that by 4 too.

      I just tested my settings going from 2300 to 9200 (4 times multiplier), and all I had to do to get the same feeling was divide accel and postscale values by 4. It felt identical switching back and forth. As long as your mouse tracks accurately at the higher dpi, it should be good.

      Delete
    2. Different person here with the same issue. I can't seem to replicate what you're saying. I'm using 800 DPI with Post scale 0.5, Accel 0.02, Sens cap 2, Power 2. Trying to replicate this with 1600 DPI.

      If I do as you say and divide by the multiplier between DPIs, in this case 2, I end up with Post scale 0.25, Accel 0.1. All the rest the same. However my curve now maxes out at 100 updates as opposed to 50 updates. That can't be right.

      If I leave accel at 0.02 then I get, what looks like to be, the same curve as I had at 800 DPI. But it feels completely different. In theory it should be exactly the same, but it feels much faster.

      Any advice would be appreciated!

      Delete
    3. This comment has been removed by the author.

      Delete
    4. Sorry, at one point in my post I say Accel 0.1 when I meant to say 0.01. Thought I'd clarify to prevent any confusion.

      Also, the thought occurs that 50 updates at 800 DPI is equal to 100 updates at 1600 DPI. So maybe the curve is exactly the same.

      However, this still doesn't feel the same. It still feels faster.

      Delete
  4. Hey Kovaak !

    srsly ! i searched on all your known sites but i dont found anything about to which in-game(ql) vaules i have to set it ! or did i have all leave on default ?

    greets

    ReplyDelete
    Replies
    1. If you're using the driver for mouse accel, you'll want to set the in-game mouse accel variable to 0. And if you want to use a different post-scale y than x, you'll probably want to set your m_pitch and m_yaw back to their defaults (0.022, or -0.022 for pitch if you use inverted).

      Delete
    2. ty !! :)

      so cl_mousesenscap is also be set on default(=0) ?

      Delete
    3. Yeah, 0 would work for that.

      Delete
  5. Thanks for all your work. Any word on whether this is allowed on ESEA yet?

    ReplyDelete
    Replies
    1. To my knowledge there are people actively using it in ESEA, and they have been pretty much since the interception accel method was first released. A non official statement by one ESEA admin indicated that people shouldn't use the driver, but it was never really clarified as to why he said that. I have yet to have anyone tell me that the driver got them kicked or banned by any anticheat service.

      Delete