View Single Post
Old 05-03-2014, 03:00 AM   #4
the_cake
Beta Tester
 
Join Date: Jul 2008
Posts Rated Helpful 144 Times
cl_interp 1 does nothing in sdk2006.
cl_interp_ratio sets interp time/delay as a ratio based on cl_updaterate
cl_interpolate turns interp off completely.

Interp:

Your computer generally renders frames a lot faster and more consistently than the server can send you gamestate updates. This makes your connection to the server and the server itself the bottleneck for fps, and not your hardware. It's especially important with say, 33 tick servers or servers with a poor connection to you. No one would get more than 33 fps (you would, but the frames > 33 would just be duplicates). To solve this problem, your game is delayed by a certain amount of time (specifically cl_interp_ratio/cl_updaterate). The engine now queues 2+ updates (however many it collects in the interp time) before it draws anything, guesses what comes in between the two updates (aka interpolates, hence interp), and can then render as many frames as you want. The downside to this is you delay the game slightly more (think of it as adding to your ping), and have to rely even more on lag compensation.

cl_interpolate 0 turns this functionality OFF (technically the guy interping is the only one not interping). It also turns lag compensation off. So you're trading slightly better latency (assuming cl_updaterate 66, and cl_interp_ratio 1, about 15ms) for having no lag compensation whatsoever.

Makes no sense amirite?

A theory: There was a bug in hl1 engine games that made hits register when they shouldn't when interp time was set very low. Old tfc players may remember Overkill, and the controversy surrounding him exploiting it in high level tfc tournaments. One of the cs 1.6 devs actually fixed it, and wrote a great article to go with it explaining how it was broken (which I wish I could find). Source had actually been worked on before hl1 was even released, my theory is the fork happened before the bug was fixed (02-03 iirc), and was never ported to source. You can't manually set interp time in source like you could in goldsrc, so unless you completely turn interp off (cl_interpolate 0), you would never know.

Last edited by the_cake; 05-03-2014 at 09:16 PM.
the_cake is offline   Reply With Quote


6 members found this post helpful.