Input lag AB test

Everything about latency. Tips, testing methods, mouse lag, display lag, game engine lag, network lag, whole input lag chain, VSYNC OFF vs VSYNC ON, and more! Input Lag Articles on Blur Busters.
flood
Posts: 929
Joined: 21 Dec 2013, 01:25

Input lag AB test

Post by flood » 22 Jul 2014, 06:05

This is a simple AB test to determine the minimum amount of input lag you can feel. made using love2d

https://drive.google.com/file/d/0B5jyMD ... sp=sharing

unzip and click run.bat to start

I was able to get 25/25 for 25ms, though it wasn't easy. It's 4am and I'll try to see how low I can get tomorrow, but you guys should try it :D

edit:
16/25 for 10ms i.e. null result. I think my personal threshold is around 15ms.

war1
Posts: 29
Joined: 21 Jul 2014, 09:40

Re: Input lag AB test

Post by war1 » 22 Jul 2014, 08:02

flood wrote:This is a simple AB test to determine the minimum amount of input lag you can feel. made using love2d

https://drive.google.com/file/d/0B5jyMD ... sp=sharing

unzip and click run.bat to start

I was able to get 25/25 for 25ms, though it wasn't easy. It's 4am and I'll try to see how low I can get tomorrow, but you guys should try it :D

edit:
16/25 for 10ms i.e. null result. I think my personal threshold is around 15ms.
VERY interesting test, thank you for making this, i've done the 50ms test first now, and 25 out of 25, will do more testing.

and 25/25 with 1frame 16ms, getting harder with 10ms, but 23/25 seems to have something about it.

pisto
Posts: 3
Joined: 21 Jul 2014, 13:33

Re: Input lag AB test

Post by pisto » 22 Jul 2014, 12:16

you need to create your window with vsync off:

Code: Select all

love.window.setMode(0, 0, {fullscreen = true, vsync = false})
this shows the fps in the gray bar:

Code: Select all

love.graphics.print("trial "..current_trial.." fps "..love.timer.getFPS(), width / 2 - 45, 100)
Also there's an *average* delay due to the actual display refresh rate, which I would estimate to rougly half of the frame period. You would probably be able to minimize that if the visual feedback could span the whole height of the screen. Maybe instead of a pointer make a vertical line, that one drags horizontally?

flood
Posts: 929
Joined: 21 Dec 2013, 01:25

Re: Input lag AB test

Post by flood » 22 Jul 2014, 13:30

war1 wrote: VERY interesting test, thank you for making this, i've done the 50ms test first now, and 25 out of 25, will do more testing.

and 25/25 with 1frame 16ms, getting harder with 10ms, but 23/25 seems to have something about it.
that's pretty damn impressive

what sort of motion are you doing with the mouse?
The one I found most useful is shuttling between two points horizontally and feeling whether the cursor stops the same time my hand stops.


some new results for myself:

20ms: 24/25
16ms: 19/25
yup I guessed correctly, 16ms is pretty much my limit

flood
Posts: 929
Joined: 21 Dec 2013, 01:25

Re: Input lag AB test

Post by flood » 22 Jul 2014, 13:48

pisto wrote:you need to create your window with vsync off:

Code: Select all

love.window.setMode(0, 0, {fullscreen = true, vsync = false})
this shows the fps in the gray bar:

Code: Select all

love.graphics.print("trial "..current_trial.." fps "..love.timer.getFPS(), width / 2 - 45, 100)
thanks, ill add these later today
Also there's an *average* delay due to the actual display refresh rate, which I would estimate to rougly half of the frame period. You would probably be able to minimize that if the visual feedback could span the whole height of the screen. Maybe instead of a pointer make a vertical line, that one drags horizontally?
yep, that's right, but I'm guessing some people will be moving the pointer in a circle or a figure-8. probably i'll add a toggle to switch between pointer, line, and both pointer+line

war1
Posts: 29
Joined: 21 Jul 2014, 09:40

Re: Input lag AB test

Post by war1 » 22 Jul 2014, 17:04

flood wrote:
war1 wrote: VERY interesting test, thank you for making this, i've done the 50ms test first now, and 25 out of 25, will do more testing.

and 25/25 with 1frame 16ms, getting harder with 10ms, but 23/25 seems to have something about it.
that's pretty damn impressive

what sort of motion are you doing with the mouse?
The one I found most useful is shuttling between two points horizontally and feeling whether the cursor stops the same time my hand stops.


some new results for myself:

20ms: 24/25
16ms: 19/25
yup I guessed correctly, 16ms is pretty much my limit
figure of 8, at the bottom of the screen and up and down, basically just moving it around i guess. But it's a curse though :-( i had a hard time adjusting to lcd's in the first place :-/

spacediver
Posts: 505
Joined: 18 Dec 2013, 23:51

Re: Input lag AB test

Post by spacediver » 22 Jul 2014, 18:13

what a brilliant idea.

50 ms: 25/25
25 ms: 25/25
16 ms: 20/25

Will do some more experimenting later.

If you want to set this up to get reliable thresholds, consider using a staircase procedure or method of constant stimuli. Method of constant stimuli might be easier to set up, though you'd have to set your increments up in advance. Let me know if you're interested and I can outline the logic behind the test.

spacediver
Posts: 505
Joined: 18 Dec 2013, 23:51

Re: Input lag AB test

Post by spacediver » 22 Jul 2014, 18:52

another cool idea would be to create a task, such as keeping the cursor on a moving circular target, which moves left to right and switches directions at random intervals, and seeing how performance varies as a function of added input lag.

This might tap into performance related effects that are not "felt" by the user.

You'd have to titrate the difficulty of the task to avoid ceiling effects - you could do this by reducing the diameter of the moving target and/or increasing its speed. Performance here would be measured as proportion of time when the (center of) cursor is touching the target.

spacediver
Posts: 505
Joined: 18 Dec 2013, 23:51

Re: Input lag AB test

Post by spacediver » 22 Jul 2014, 19:29

I think I might have broken the test - I got 23/25 with 10 ms (@ 85 hz) and it wasn't due to me feeling anything. The mouse cursor had this weird jerkiness in the half of the display when input lag was added. Will do some more testing later on to see if this occurs at other input lag values. I wonder if this has something to do with the interaction between frame timing and the chosen input lag.

flood
Posts: 929
Joined: 21 Dec 2013, 01:25

Re: Input lag AB test

Post by flood » 22 Jul 2014, 19:59

spacediver wrote:The mouse cursor had this weird jerkiness in the half of the display when input lag was added. Will do some more testing later on to see if this occurs at other input lag values. I wonder if this has something to do with the interaction between frame timing and the chosen input lag.
hm this really shouldn't be happening and if it is, then that indicates a problem in my code or its logic. probably there is


I just tested again at 10ms, this time at 60hz
15/25, not significant
spacediver wrote:another cool idea would be to create a task, such as keeping the cursor on a moving circular target, which moves left to right and switches directions at random intervals, and seeing how performance varies as a function of added input lag.

This might tap into performance related effects that are not "felt" by the user.

You'd have to titrate the difficulty of the task to avoid ceiling effects - you could do this by reducing the diameter of the moving target and/or increasing its speed. Performance here would be measured as proportion of time when the (center of) cursor is touching the target.
good concept but I think this kind of test is made much much much more difficult by the fact that fluctuations in performance quickly overshadow the effects of input lag. there are also factors like how performance will increase initially as one becomes more experienced, and decreases or plateaus as one becomes fatigued. there's also the issue that one can be accustomed to small amounts of input lag and regain some of the performance lost. but that can be prevented by randomly switching the lag on and off between trials and keeping each trial short

I'll think about this some more and see if I can find methods that mitigate these complications

Post Reply