@BJayD.. <!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->On a finishing note, I once read a brilliant article about network settings which was specifically written for an old version of CS. It explained what almost every setting did, it provided mathematical examples and best of all it provided video clips showing how these settings could affect the client (even using an aimbot so that human error was not to blame). I've attempted to track down this article to link in this post as it would explain everything in far more detail than I ever could.<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
i think you mean the counterstrike report
its used to be at <a href='http://www.summerblue.net/games/cs_report/' target='_blank'>http://www.summerblue.net/games/cs_report/</a>
however that link now goes nowhere and i have no idea what happened to it it was specifically for CS 1.3 so its quite old now and possibly no longer relevant
<!--QuoteBegin-tjosan+Feb 18 2005, 11:29 AM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (tjosan @ Feb 18 2005, 11:29 AM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> If cl_updaterate is set to 30, then the client will recieve 30 packages of information per second from the server. ex_interp helps to fill these "gaps", and remove any jerkyness of models you would experience otherwise, by calculating the most probable route of the other player and displaying tha ton your screen.
ex_interp is reversed proportional to your cl_updaterate, so with a higher updaterate you would want a lower interp to keep the information you recieve as accurate as possible.
Lowering ex_interp will reduce the amount of "fake" frames that are displayed on your screen, making the information you recieve more accurate. At the same time you're recieving and displaying less updated coordinates than you are capable of, and without ex_interp to fill the gaps other players will appear to jerk around.
The possible "exploit" involving ex_interp is that if interp is set very high, interpolarisation will make you display other players infront of their actual position, giving you an advantage when for example firing on someone running around a corner (you see him before you should see him)... this is blocked, and ex_interp is capped at max 0.1 like someone said earlier in this thread...
Of course, this is all based on my experience (not a whole lot) and conclusions drawn from reading guides and descriptions of cvars. I've probably got it all wrong.. :/
[Edit] Something I wonder is what the variables "cl_smoothtime" and "cl_vsmoothing" actually do. Can anyone clear this up for me pretty please?
My theory is that they are somehow connected to what ex_interp does, and should be changed when you change you interp. I'm not sure how and what they actually do though, and I hate being kept in the dark. <!--QuoteEnd--> </td></tr></table><div class='postcolor'> <!--QuoteEEnd--> all *smooth* values belong to the prediction engine <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html/emoticons/smile-fix.gif' border='0' style='vertical-align:middle' alt='smile-fix.gif' /><!--endemo--> like in CSS you can turn off the prediction client side (graphically) by doing cl_smooth 0
if you read the topic you will find very good explanations about the HL netcode. <!--emo&;)--><img src='http://www.unknownworlds.com/forums/html/emoticons/wink-fix.gif' border='0' style='vertical-align:middle' alt='wink-fix.gif' /><!--endemo-->
ex_interp is exploitable. We'll use the "circle" example as shown on the first page of this thread. If you have a circle formed by say, 12 points, evenly spaced in a circular pattern, altering the number of those points will have one of two effects. 1) less points, motion will not be recognized as circular, if you could (theoretically) bring the number of points down to 2, you wouldnt even have a circle, you'd have a straight line, now assuming our circle is a players motion in game, and they make a circle and you percieve a straight line, what do you think is gonna happen? They evade your shot, but your client percieves a hit. 2) Having (again theoretically) a thousand points in your circle, would make the hit boxes much smaller and harder to hit. That being said, the server recieves motion and calculates hits, not the client, so in the first example, a clint will register hits and you'll see blood shoot out of the player and maybe they'll even start to play a death animation, but as soon as the server refreshes, they're still alive and shooting you in the face. gg.
You're missing the point though. If the cirlce originally had 12 points, and you remove the interpolarisation to being it down to 2 points, you do not percieve it as a line. You percieve it as the player teleporting between those points.
I thought that's exactly what I said. :\ The direction of their motion becomes a straight line. Point A to point B. As opposed to an evasive pattern. Composed of many different points in space.
That was indeed the article I referred to AlienCow, the link still works on my end too, thanks. It is out of date but the vast majority of it is still relevant. I suggest that anyone with enough time reads it.
Swirl: I look forward to seeing your demos, be sure to document the server settings too for each demo, it should make for some good evidense.
<!--QuoteBegin-BJayD+Feb 19 2005, 06:55 PM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (BJayD @ Feb 19 2005, 06:55 PM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> Swirl: I look forward to seeing your demos, be sure to document the server settings too for each demo, it should make for some good evidense. <!--QuoteEnd--> </td></tr></table><div class='postcolor'> <!--QuoteEEnd--> Right, i just recorded the demos with a friend. One is from his perspective, and one is from mine. I need webspace to upload the demos to, so could someone please be so kind as to provide me with some hosting? Its not a big file at all.
Ugh, you guys are getting too technical for me. <!--emo&:p--><img src='http://www.unknownworlds.com/forums/html/emoticons/tounge.gif' border='0' style='vertical-align:middle' alt='tounge.gif' /><!--endemo-->
This is most interesting. And you can't PM swirl, because he has an exclamation mark in his name, sadly. You'll have to use emails or IRC or something.
ok, thanks for the hosting <!--emo&;)--><img src='http://www.unknownworlds.com/forums/html/emoticons/wink-fix.gif' border='0' style='vertical-align:middle' alt='wink-fix.gif' /><!--endemo--><a href='ftp://www.woosah.org/swirl/rates.rar' target='_blank'>click me</a>
First of all, a few notes:
1: use viewdemo to view the demos. type: viewdemo interp_swirl , or viewdemo interp_mu to play them.
Secondly, you have to change your rates as well as the demo goes along. I just found out a few moments ago that whilst you play demos, your rates in your config gets enforced. So there are a few moments in the demo that wont make sense, for instance: I changed my interp to 0.1 (default value) and asked mu to change his cmdrate to 10. To me at that stage (whilst recording) he was not teleporting due to interpolitation. Buth when i changed my ex_interp value to the correct value, he teleported.
I was under the impression that the demos would be played back using the same interp values as those which i had used at the time that i changed them during recording, but that is not the case. You have to manually change your interp ingame whilst watching these demos.
Set your cl_updaterate to 100, and your cl_cmdrate to 105, and your rate to 15000 (those are the rates i used whilst recording) and after setting all those, set your ex_interp value to 0. This will set your interp to the correct value, meaning there will not be any interpolitation at all, and you will see what is really going on.
When mu uses cmdrate as 10, you will see him teleporting around a lot. Even on 20 there is still quite a bit of teleporting going on. If you set your ex_interp to 0.1 whilst mu is using cl_cmdrate on 10, you wont see him teleporting at all, because interpolitation is taking place.
To sum it up: low cmdrate means players teleport around when the person watching them doesnt have interpolitation activated. But with interpolitation, you see an illusion of what is really going on.
I hope that those of you who did not understand what ex_interp really does, now know how it works, and that you will have better understanding of it. I also hope the dev team takes notice of this, and i would love to have a discussion with a developer about all of this.
SETTING EX_INTERP HIGHER THAN 1/UPDATERATE WILL RESULT IN LAGGED HITBOXES AND IS AN EXPLOIT. You people are clueless on this subject. Locking ex_interp will solve nothing. Cl_updaterate determines the number of updates you recieve from the server, and ex_interp determines the amount of data that will be interpolated, hence the name, by the client.
From netcode.doc: ex_interp: Set this variable to 0 and nothing else. Counter-Strike will automatically set your ex_interp to 1/cl_updaterate (i.e. your console will say: “ex_interp forced up to xx msec”). This is because the time in between each packet is exactly 1/(the # of updates per second), so this is how long you want your client to interpolate. Adjusting your cl_updaterate will automatically adjust your ex_interp (when ex_interp is set to 0). I recommend only changing your cl_updaterate, and letting Counter-Strike set your ex_interp. You cannot set this command lower than 1/cl_updaterate anymore, and setting it higher is an exploit. Using a value above 1/cl_updaterate forces you to shoot behind the actual model displayed on your screen, which should be considered an exploit. For example, if you use cl_updaterate 101, the correct value for ex_interp would be 1/101 = 0.009 (9 milliseconds), but by using the default value of ex_interp 0.1 with this high cl_updaterate, the aforementioned exploit appears.
Of course, ns seems to take more bandwidth and the overall quality of most ns servers seem to be pretty low, setting ex_interp to 1/updaterate will usually result in choppy models.
<!--QuoteBegin-Swirl !+Feb 19 2005, 08:29 PM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (Swirl ! @ Feb 19 2005, 08:29 PM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> To sum it up: low cmdrate means players teleport around when the person watching them doesnt have interpolitation activated. But with interpolitation, you see an illusion of what is really going on. <!--QuoteEnd--> </td></tr></table><div class='postcolor'> <!--QuoteEEnd--> Wait wait wait... So if I set cmdrate to 1 or something stupid like that, and someone sets ex_interp to 0, I will be able to run around a corner and bite him before he has time to notice? And if he sets ex_interp to ~0.1, it will look like I am running around the corner instead of suddenly teleporting into his faec? I mean, with interp 0.1 will he be able to react and shoot me, or will those shots just hit thin air?
I believe there is a chance he will hit or miss, as I said before, interpolation is an estimate. Whether he hits or misses depends on whether the client estimates correctly at the time.
<!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> </td></tr><tr><td id='QUOTE'><!--QuoteEBegin--><span style='color:red'>SETTING EX_INTERP HIGHER THAN 1/UPDATERATE WILL RESULT IN LAGGED HITBOXES AND IS AN EXPLOIT.</span> You people are clueless on this subject. Locking ex_interp will solve nothing. Cl_updaterate determines the number of updates you recieve from the server, and ex_interp determines the amount of data that will be interpolated, hence the name, by the client.
From netcode.doc: ex_interp: Set this variable to 0 and nothing else. Counter-Strike will automatically set your ex_interp to 1/cl_updaterate (i.e. your console will say: “ex_interp forced up to xx msec”). This is because the time in between each packet is exactly 1/(the # of updates per second), so this is how long you want your client to interpolate. Adjusting your cl_updaterate will automatically adjust your ex_interp (when ex_interp is set to 0). I recommend only changing your cl_updaterate, and letting Counter-Strike set your ex_interp. You cannot set this command lower than 1/cl_updaterate anymore, and setting it higher is an exploit.<span style='color:red'> Using a value above 1/cl_updaterate forces you to shoot behind the actual model displayed on your screen, which should be considered an exploit.</span> For example, if you use cl_updaterate 101, the correct value for ex_interp would be 1/101 = 0.009 (9 milliseconds), but by using the default value of ex_interp 0.1 with this high cl_updaterate, the aforementioned exploit appears.
Of course, ns seems to take more bandwidth and the overall quality of most ns servers seem to be pretty low, setting ex_interp to 1/updaterate will usually result in choppy models. <!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
Ok I still dont get the idea of EXPLOITING ex_interp...
a) It is clientside... So only YOU see it like that...
b) You DO NOT SEE the hitboxes lagged behind... Infact you see model interpolated ahead... <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html/emoticons/smile-fix.gif' border='0' style='vertical-align:middle' alt='smile-fix.gif' /><!--endemo--> Some of you may say thats the same thing... No it is not...
The true position of a player, where server sees him; is where the hitbox is (unless there is a hitbox bug)... setting ex_interp higher forces client to guess the movement of hitbox over the range; thus drawing model ahead of it... IT DOES NOT lag the hitbox behind...
c) Again nothing will change about YOUR HITBOX as you change ex_interp... Other players will see you and shoot you as you were before...
SO how can one able to exploit ex_interp... PLEASE somebody who has TRUE knowledge on NETCODE explain this... I dont need explanations taken from "exploit"+"ex_interp" googled pages...
EDIT: The problem is low cmdrate... I agree It has to be locked at min 30... And I know server variable for setting min cmdrate DO NOT WORK properly... please take ex_interp out of this discussion and focus on cmdrate... thanks... <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html/emoticons/smile-fix.gif' border='0' style='vertical-align:middle' alt='smile-fix.gif' /><!--endemo-->
<!--QuoteBegin-Align+Feb 20 2005, 11:49 AM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (Align @ Feb 20 2005, 11:49 AM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> <!--QuoteBegin-Swirl !+Feb 19 2005, 08:29 PM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (Swirl ! @ Feb 19 2005, 08:29 PM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> To sum it up: low cmdrate means players teleport around when the person watching them doesnt have interpolitation activated. But with interpolitation, you see an illusion of what is really going on. <!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd--> Wait wait wait... So if I set cmdrate to 1 or something stupid like that, and someone sets ex_interp to 0, I will be able to run around a corner and bite him before he has time to notice? And if he sets ex_interp to ~0.1, it will look like I am running around the corner instead of suddenly teleporting into his faec? I mean, with interp 0.1 will he be able to react and shoot me, or will those shots just hit thin air? <!--QuoteEnd--> </td></tr></table><div class='postcolor'> <!--QuoteEEnd--> No,with correct interp he will see you, but you will be teleporting around because he will be seeing your correct hitbox position.
The minimum value that you can set your cl_cmdrate to is 10. You cant set it any lower. This should be addressed by the dev team - the minimum should be set to 30.
<!--QuoteBegin-Align+Feb 20 2005, 05:49 AM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (Align @ Feb 20 2005, 05:49 AM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--><!--QuoteBegin-Swirl !+Feb 19 2005, 08:29 PM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (Swirl ! @ Feb 19 2005, 08:29 PM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> To sum it up: low cmdrate means players teleport around when the person watching them doesnt have interpolitation activated. But with interpolitation, you see an illusion of what is really going on. <!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd--> Wait wait wait... So if I set cmdrate to 1 or something stupid like that, and someone sets ex_interp to 0, I will be able to run around a corner and bite him before he has time to notice? And if he sets ex_interp to ~0.1, it will look like I am running around the corner instead of suddenly teleporting into his faec? I mean, with interp 0.1 will he be able to react and shoot me, or will those shots just hit thin air?<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd--> Yes, that is correct. Assuming of course you can actually hit him, since he will be teleporting as bad as you are (if you have a low ex_interp value).
Fortunately though, there is a hard coded min value of 10 for cl_cmdrate.
gaz0zz, having the hitbox lag behind and having the model lead the hitbox ARE similar, even if the model isn't completely accurate when it is leading. People tend to try to track where the model is going, and some people won't be able to keep up with the model's movement, so they will be right behind it. This will put them on the spot where the model was shown a moment ago, which is probably very close to where the hitbox actually is right now. It's possible that your client is interpolating a lot, and the hitbox is nowhere near where the model was shown a moment ago, but not likely in most situations.
However, I agree with what other people have said, that the problem is with cl_cmdrate instead of ex_interp.
Ok... I know... The difference is when you say "hitbox is lagged" it seems like It also is beeing lagged serverside... Thats why people think someone is exploiting ex_interp... The true expression is the model is drawn ahead in clients view... And thats NOT EXPLOITING as it only effects the client who set ex_interp wrong... It is more like stupidity... <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html/emoticons/smile-fix.gif' border='0' style='vertical-align:middle' alt='smile-fix.gif' /><!--endemo-->
<!--QuoteBegin-gazOzz+Feb 20 2005, 01:13 PM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (gazOzz @ Feb 20 2005, 01:13 PM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> Ok... I know... The difference is when you say "hitbox is lagged" it seems like It also is beeing lagged serverside... Thats why people think someone is exploiting ex_interp... The true expression is the model is drawn ahead in clients view... And thats NOT EXPLOITING as it only effects the client who set ex_interp wrong... It is more like stupidity... <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html/emoticons/smile-fix.gif' border='0' style='vertical-align:middle' alt='smile-fix.gif' /><!--endemo--> <!--QuoteEnd--> </td></tr></table><div class='postcolor'> <!--QuoteEEnd--> I guess taking references from an article written with the help of Valve employees isn't good enough for some people.
Prephaps this concept is a little too complicated for you to comprehend. Setting ex_interp to a high value will result in many of the locations for the model to be interpolated by the client, which usually results (that's just the way it's been programmed) with the interpolated hitboxes being placed behind the actual model. Remember that time you were running away and a marine killed you around a corner? That's interpolation. Ex_interp affecting the way clients see the hitbox has been documented numerous times in cs, so there really is nothing to debate here.
LOCKING EX_INTERP OR ANY NETWORK COMMANDS WILL BREAK THE GAME MORE THAN FIX IT. Just leave the flipping commands alone, and try improving your own game, rather than blaming "lag exploits." Accept the fact that there are better players than you.
Umm laffo... Ive read more than enough articles... And you sound like you ve just seen them not read...
Once more for your precious mind... Try to understand this time... Actually reading and thinking a moment on it will be enough... I dont think I had to write it in large punto...
Here we go...
ex_interp determines how far will your client gonna predict where the player model is... It is totally clientside... and only... repeat only... once more with caps ONLY effects your client... ONLY effects what YOU, laffoman see...
Are we cool till that point...
Cool; now step two...
If this comment ONLY effect what YOU see... and do not have any effect on server... Setting it wrong will only effect you... If you set it wrong; You will see models ahead of their actual hitbox... You will miss your shots... NO OTHER PERSON ON THE SERVER WILL MISS BECAUSE YOU SET IT HIGH...
Understand...
So, please explain to me: How can one EXPLOIT a command; that only makes game worst for himself... HOW CAN ONE CALL THIS AN EXPLOIT...
I repeat I agree low cmdrate is highly exploitable... But ex_interp has nothing to do with it... Other than smooting the movements clients see... The solution is to lock minimum cmdrate at a higher value than 10... 30 forexample...
I hope you spend a few minutes reading and understanding this...
EDIT:
<!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->Remember that time you were running away and a marine killed you around a corner?<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
That has nothing to do with ex_interp; It is due to the nature of Valve's netcode... Due to the lag compansation which makes game playable even if you have high latency... The logic is when a high latency player shoots... Server checks the position of the player who got hit and register the hit if he is there... Roughly, the delay between high latency player shoots and sees the other player dead is;
his latency*2+other players latency*2+100*2
If one player has 250 the other has 50 latency... This delay is 800 milisecons... which is almost a second...
AND BELIEVE OR NOT... THAT HAS NOTHING TO DO WITH EX_INTERP...
Now go and learn more before claiming things you do not know well...
Well as the TFC example says, as the model is INFRONT of the hitbox, it gives you a small time advantage to react. So that skulk comes round the corner, you see him before he actually goes round the corner, start firing and by the tme your finger has hit the mouse button he is running into your bullets.
It is clearly an exploit of some form, even if not am amazingly amazing one.
Do you not realize that ex_interp allows the client to pass off hits at an interpolated hitbox to the server as if it were actual data recieved from the server?
<!--QuoteBegin-tjosan+Feb 20 2005, 01:31 PM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (tjosan @ Feb 20 2005, 01:31 PM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> since he will be teleporting as bad as you are (if you have a low ex_interp value). <!--QuoteEnd--> </td></tr></table><div class='postcolor'> <!--QuoteEEnd--> Oh, okay. So what does cl_updaterate have to do with this?
<!--QuoteBegin-d0omie+Feb 20 2005, 06:00 PM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (d0omie @ Feb 20 2005, 06:00 PM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->Well as the TFC example says, as the model is INFRONT of the hitbox, it gives you a small time advantage to react. So that skulk comes round the corner, you see him before he actually goes round the corner, start firing and by the tme your finger has hit the mouse button he is running into your bullets.
It is clearly an exploit of some form, even if not am amazingly amazing one.<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd--> Okay, I give up. YOU ALL ENTIRELY FAIL AT GRASPING THE CONCEPTS OF SPACE AND FREAKING TIME, AND SIMPLE THINGS AS INTERPOLATION.
So, <b>what is interpolation in the simplest terms?</b>
You have 1, you have 5 - the HL netcodes version of interpolation would now display all real numbers from 1 to 5 for you to make the transition smooth. Notice something ? Not yet?
Okay, here goes : <b>Your machine can't just have the information of one position - since we're trying to estimate what lies between accurately, we require a starting and ending point for each sequence (all just under 1/10th of a second MAXIMUM - more likely 1/30th on a default server config) - which are then interpolated between to create smooth movement.</b>
<b>But doesn't that mean I can turn interpolation off, and see up to date positions?</b> Yes it does, logically. The problem comes when you try to construct this into an advantage beyond reason - you don't know the guy has come around the corner before it has happened. In fact, you're removing the <i>smallest</i> delay in the process - the main delays being latency for the information to travel between the moving client, the server, and you the shooting client. Eliminating at an EXTREME 90ms (but more like <40) doesn't greatly heighten your reactiontime - and you're still reacting after that person has rounded the corner, in no way, shape or form is it possible to have a model ahead of the actual players location or in a spot where the player did not actually reside with low interp.
Yes, its another advantage you could have with low ping, high bandwidth and a well-configured server. Considering its a fraction as effective as simply HAVING A LOWER PING, I'm not going to cry or consider it exploitive. Especially considering its just down to the presentation of that same information.
<!--QuoteBegin-laffo+Feb 21 2005, 02:05 AM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (laffo @ Feb 21 2005, 02:05 AM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> Do you not realize that ex_interp allows the client to pass off hits at an interpolated hitbox to the server as if it were actual data recieved from the server?
<img src='http://www.virtualteachercentre.ca/Literacy/images/read_suceed.jpg' border='0' alt='user posted image' /> <!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd--> That would be a high, not low ex_interp value <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html/emoticons/smile-fix.gif' border='0' style='vertical-align:middle' alt='smile-fix.gif' /><!--endemo--> (not to mention that doesn't work due to hit detection being done via the server backlog not clientside)
<!--QuoteBegin-Align+Feb 21 2005, 04:37 AM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (Align @ Feb 21 2005, 04:37 AM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> <!--QuoteBegin-tjosan+Feb 20 2005, 01:31 PM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (tjosan @ Feb 20 2005, 01:31 PM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> since he will be teleporting as bad as you are (if you have a low ex_interp value). <!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd--> Oh, okay. So what does cl_updaterate have to do with this? <!--QuoteEnd--> </td></tr></table><div class='postcolor'> <!--QuoteEEnd--> Ack, you're right... I mixed it up :|
Comments
<!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->On a finishing note, I once read a brilliant article about network settings which was specifically written for an old version of CS. It explained what almost every setting did, it provided mathematical examples and best of all it provided video clips showing how these settings could affect the client (even using an aimbot so that human error was not to blame).
I've attempted to track down this article to link in this post as it would explain everything in far more detail than I ever could.<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
i think you mean the counterstrike report
its used to be at <a href='http://www.summerblue.net/games/cs_report/' target='_blank'>http://www.summerblue.net/games/cs_report/</a>
however that link now goes nowhere and i have no idea what happened to it
it was specifically for CS 1.3 so its quite old now and possibly no longer relevant
ex_interp is reversed proportional to your cl_updaterate, so with a higher updaterate you would want a lower interp to keep the information you recieve as accurate as possible.
Lowering ex_interp will reduce the amount of "fake" frames that are displayed on your screen, making the information you recieve more accurate. At the same time you're recieving and displaying less updated coordinates than you are capable of, and without ex_interp to fill the gaps other players will appear to jerk around.
The possible "exploit" involving ex_interp is that if interp is set very high, interpolarisation will make you display other players infront of their actual position, giving you an advantage when for example firing on someone running around a corner (you see him before you should see him)... this is blocked, and ex_interp is capped at max 0.1 like someone said earlier in this thread...
Of course, this is all based on my experience (not a whole lot) and conclusions drawn from reading guides and descriptions of cvars. I've probably got it all wrong.. :/
[Edit]
Something I wonder is what the variables "cl_smoothtime" and "cl_vsmoothing" actually do. Can anyone clear this up for me pretty please?
My theory is that they are somehow connected to what ex_interp does, and should be changed when you change you interp. I'm not sure how and what they actually do though, and I hate being kept in the dark. <!--QuoteEnd--> </td></tr></table><div class='postcolor'> <!--QuoteEEnd-->
all *smooth* values belong to the prediction engine <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html/emoticons/smile-fix.gif' border='0' style='vertical-align:middle' alt='smile-fix.gif' /><!--endemo-->
like in CSS you can turn off the prediction client side (graphically) by doing cl_smooth 0
if you read the topic you will find very good explanations about the HL netcode. <!--emo&;)--><img src='http://www.unknownworlds.com/forums/html/emoticons/wink-fix.gif' border='0' style='vertical-align:middle' alt='wink-fix.gif' /><!--endemo-->
That being said, the server recieves motion and calculates hits, not the client, so in the first example, a clint will register hits and you'll see blood shoot out of the player and maybe they'll even start to play a death animation, but as soon as the server refreshes, they're still alive and shooting you in the face. gg.
The direction of their motion becomes a straight line. Point A to point B. As opposed to an evasive pattern. Composed of many different points in space.
Swirl: I look forward to seeing your demos, be sure to document the server settings too for each demo, it should make for some good evidense.
Right, i just recorded the demos with a friend. One is from his perspective, and one is from mine. I need webspace to upload the demos to, so could someone please be so kind as to provide me with some hosting? Its not a big file at all.
So, pm'd it to the username: swirl
hope thats you!
if not, find me on irc (gamesurge, #naturalselection, nick shanks and i'll give you the details there.
And you can't PM swirl, because he has an exclamation mark in his name, sadly. You'll have to use emails or IRC or something.
First of all, a few notes:
1: use viewdemo to view the demos. type: viewdemo interp_swirl , or viewdemo interp_mu to play them.
Secondly, you have to change your rates as well as the demo goes along. I just found out a few moments ago that whilst you play demos, your rates in your config gets enforced. So there are a few moments in the demo that wont make sense, for instance: I changed my interp to 0.1 (default value) and asked mu to change his cmdrate to 10. To me at that stage (whilst recording) he was not teleporting due to interpolitation. Buth when i changed my ex_interp value to the correct value, he teleported.
I was under the impression that the demos would be played back using the same interp values as those which i had used at the time that i changed them during recording, but that is not the case. You have to manually change your interp ingame whilst watching these demos.
Set your cl_updaterate to 100, and your cl_cmdrate to 105, and your rate to 15000 (those are the rates i used whilst recording) and after setting all those, set your ex_interp value to 0. This will set your interp to the correct value, meaning there will not be any interpolitation at all, and you will see what is really going on.
When mu uses cmdrate as 10, you will see him teleporting around a lot. Even on 20 there is still quite a bit of teleporting going on. If you set your ex_interp to 0.1 whilst mu is using cl_cmdrate on 10, you wont see him teleporting at all, because interpolitation is taking place.
To sum it up: low cmdrate means players teleport around when the person watching them doesnt have interpolitation activated. But with interpolitation, you see an illusion of what is really going on.
I hope that those of you who did not understand what ex_interp really does, now know how it works, and that you will have better understanding of it. I also hope the dev team takes notice of this, and i would love to have a discussion with a developer about all of this.
not had a chance to look at the vids - will do tomorrow hopefully.
edit:
would be good to get some dev feedback on this actually as there's been a lot of speculation and ideas put forward...
You people are clueless on this subject. Locking ex_interp will solve nothing.
Cl_updaterate determines the number of updates you recieve from the server, and ex_interp determines the amount of data that will be interpolated, hence the name, by the client.
From netcode.doc:
ex_interp:
Set this variable to 0 and nothing else. Counter-Strike will automatically set your ex_interp to 1/cl_updaterate (i.e. your console will say: “ex_interp forced up to xx msec”). This is because the time in between each packet is exactly 1/(the # of updates per second), so this is how long you want your client to interpolate. Adjusting your cl_updaterate will automatically adjust your ex_interp (when ex_interp is set to 0). I recommend only changing your cl_updaterate, and letting Counter-Strike set your ex_interp. You cannot set this command lower than 1/cl_updaterate anymore, and setting it higher is an exploit. Using a value above 1/cl_updaterate forces you to shoot behind the actual model displayed on your screen, which should be considered an exploit. For example, if you use cl_updaterate 101, the correct value for ex_interp would be 1/101 = 0.009 (9 milliseconds), but by using the default value of ex_interp 0.1 with this high cl_updaterate, the aforementioned exploit appears.
Of course, ns seems to take more bandwidth and the overall quality of most ns servers seem to be pretty low, setting ex_interp to 1/updaterate will usually result in choppy models.
Wait wait wait... So if I set cmdrate to 1 or something stupid like that, and someone sets ex_interp to 0, I will be able to run around a corner and bite him before he has time to notice? And if he sets ex_interp to ~0.1, it will look like I am running around the corner instead of suddenly teleporting into his faec?
I mean, with interp 0.1 will he be able to react and shoot me, or will those shots just hit thin air?
You people are clueless on this subject. Locking ex_interp will solve nothing.
Cl_updaterate determines the number of updates you recieve from the server, and ex_interp determines the amount of data that will be interpolated, hence the name, by the client.
From netcode.doc:
ex_interp:
Set this variable to 0 and nothing else. Counter-Strike will automatically set your ex_interp to 1/cl_updaterate (i.e. your console will say: “ex_interp forced up to xx msec”). This is because the time in between each packet is exactly 1/(the # of updates per second), so this is how long you want your client to interpolate. Adjusting your cl_updaterate will automatically adjust your ex_interp (when ex_interp is set to 0). I recommend only changing your cl_updaterate, and letting Counter-Strike set your ex_interp. You cannot set this command lower than 1/cl_updaterate anymore, and setting it higher is an exploit.<span style='color:red'> Using a value above 1/cl_updaterate forces you to shoot behind the actual model displayed on your screen, which should be considered an exploit.</span> For example, if you use cl_updaterate 101, the correct value for ex_interp would be 1/101 = 0.009 (9 milliseconds), but by using the default value of ex_interp 0.1 with this high cl_updaterate, the aforementioned exploit appears.
Of course, ns seems to take more bandwidth and the overall quality of most ns servers seem to be pretty low, setting ex_interp to 1/updaterate will usually result in choppy models.
<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
Ok I still dont get the idea of EXPLOITING ex_interp...
a) It is clientside... So only YOU see it like that...
b) You DO NOT SEE the hitboxes lagged behind... Infact you see model interpolated ahead... <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html/emoticons/smile-fix.gif' border='0' style='vertical-align:middle' alt='smile-fix.gif' /><!--endemo--> Some of you may say thats the same thing... No it is not...
The true position of a player, where server sees him; is where the hitbox is (unless there is a hitbox bug)... setting ex_interp higher forces client to guess the movement of hitbox over the range; thus drawing model ahead of it... IT DOES NOT lag the hitbox behind...
c) Again nothing will change about YOUR HITBOX as you change ex_interp... Other players will see you and shoot you as you were before...
SO how can one able to exploit ex_interp... PLEASE somebody who has TRUE knowledge on NETCODE explain this... I dont need explanations taken from "exploit"+"ex_interp" googled pages...
EDIT: The problem is low cmdrate... I agree It has to be locked at min 30... And I know server variable for setting min cmdrate DO NOT WORK properly... please take ex_interp out of this discussion and focus on cmdrate... thanks... <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html/emoticons/smile-fix.gif' border='0' style='vertical-align:middle' alt='smile-fix.gif' /><!--endemo-->
Wait wait wait... So if I set cmdrate to 1 or something stupid like that, and someone sets ex_interp to 0, I will be able to run around a corner and bite him before he has time to notice? And if he sets ex_interp to ~0.1, it will look like I am running around the corner instead of suddenly teleporting into his faec?
I mean, with interp 0.1 will he be able to react and shoot me, or will those shots just hit thin air? <!--QuoteEnd--> </td></tr></table><div class='postcolor'> <!--QuoteEEnd-->
No,with correct interp he will see you, but you will be teleporting around because he will be seeing your correct hitbox position.
The minimum value that you can set your cl_cmdrate to is 10. You cant set it any lower. This should be addressed by the dev team - the minimum should be set to 30.
Wait wait wait... So if I set cmdrate to 1 or something stupid like that, and someone sets ex_interp to 0, I will be able to run around a corner and bite him before he has time to notice? And if he sets ex_interp to ~0.1, it will look like I am running around the corner instead of suddenly teleporting into his faec?
I mean, with interp 0.1 will he be able to react and shoot me, or will those shots just hit thin air?<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
Yes, that is correct. Assuming of course you can actually hit him, since he will be teleporting as bad as you are (if you have a low ex_interp value).
Fortunately though, there is a hard coded min value of 10 for cl_cmdrate.
However, I agree with what other people have said, that the problem is with cl_cmdrate instead of ex_interp.
I guess taking references from an article written with the help of Valve employees isn't good enough for some people.
Prephaps this concept is a little too complicated for you to comprehend. Setting ex_interp to a high value will result in many of the locations for the model to be interpolated by the client, which usually results (that's just the way it's been programmed) with the interpolated hitboxes being placed behind the actual model. Remember that time you were running away and a marine killed you around a corner? That's interpolation. Ex_interp affecting the way clients see the hitbox has been documented numerous times in cs, so there really is nothing to debate here.
LOCKING EX_INTERP OR ANY NETWORK COMMANDS WILL BREAK THE GAME MORE THAN FIX IT. Just leave the flipping commands alone, and try improving your own game, rather than blaming "lag exploits." Accept the fact that there are better players than you.
Once more for your precious mind... Try to understand this time... Actually reading and thinking a moment on it will be enough... I dont think I had to write it in large punto...
Here we go...
ex_interp determines how far will your client gonna predict where the player model is... It is totally clientside... and only... repeat only... once more with caps ONLY effects your client... ONLY effects what YOU, laffoman see...
Are we cool till that point...
Cool; now step two...
If this comment ONLY effect what YOU see... and do not have any effect on server... Setting it wrong will only effect you... If you set it wrong; You will see models ahead of their actual hitbox... You will miss your shots... NO OTHER PERSON ON THE SERVER WILL MISS BECAUSE YOU SET IT HIGH...
Understand...
So, please explain to me: How can one EXPLOIT a command; that only makes game worst for himself... HOW CAN ONE CALL THIS AN EXPLOIT...
I repeat I agree low cmdrate is highly exploitable... But ex_interp has nothing to do with it... Other than smooting the movements clients see... The solution is to lock minimum cmdrate at a higher value than 10... 30 forexample...
I hope you spend a few minutes reading and understanding this...
EDIT:
<!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->Remember that time you were running away and a marine killed you around a corner?<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
That has nothing to do with ex_interp; It is due to the nature of Valve's netcode... Due to the lag compansation which makes game playable even if you have high latency... The logic is when a high latency player shoots... Server checks the position of the player who got hit and register the hit if he is there... Roughly, the delay between high latency player shoots and sees the other player dead is;
his latency*2+other players latency*2+100*2
If one player has 250 the other has 50 latency... This delay is 800 milisecons... which is almost a second...
AND BELIEVE OR NOT... THAT HAS NOTHING TO DO WITH EX_INTERP...
Now go and learn more before claiming things you do not know well...
It is clearly an exploit of some form, even if not am amazingly amazing one.
<img src='http://www.virtualteachercentre.ca/Literacy/images/read_suceed.jpg' border='0' alt='user posted image' />
Oh, okay. So what does cl_updaterate have to do with this?
It is clearly an exploit of some form, even if not am amazingly amazing one.<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
Okay, I give up. YOU ALL ENTIRELY FAIL AT GRASPING THE CONCEPTS OF SPACE AND FREAKING TIME, AND SIMPLE THINGS AS INTERPOLATION.
So, <b>what is interpolation in the simplest terms?</b>
You have 1, you have 5 - the HL netcodes version of interpolation would now display all real numbers from 1 to 5 for you to make the transition smooth. Notice something ? Not yet?
Okay, here goes : <b>Your machine can't just have the information of one position - since we're trying to estimate what lies between accurately, we require a starting and ending point for each sequence (all just under 1/10th of a second MAXIMUM - more likely 1/30th on a default server config) - which are then interpolated between to create smooth movement.</b>
<b>But doesn't that mean I can turn interpolation off, and see up to date positions?</b>
Yes it does, logically. The problem comes when you try to construct this into an advantage beyond reason - you don't know the guy has come around the corner before it has happened. In fact, you're removing the <i>smallest</i> delay in the process - the main delays being latency for the information to travel between the moving client, the server, and you the shooting client. Eliminating at an EXTREME 90ms (but more like <40) doesn't greatly heighten your reactiontime - and you're still reacting after that person has rounded the corner, in no way, shape or form is it possible to have a model ahead of the actual players location or in a spot where the player did not actually reside with low interp.
Yes, its another advantage you could have with low ping, high bandwidth and a well-configured server. Considering its a fraction as effective as simply HAVING A LOWER PING, I'm not going to cry or consider it exploitive. Especially considering its just down to the presentation of that same information.
<img src='http://www.virtualteachercentre.ca/Literacy/images/read_suceed.jpg' border='0' alt='user posted image' /> <!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
That would be a high, not low ex_interp value <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html/emoticons/smile-fix.gif' border='0' style='vertical-align:middle' alt='smile-fix.gif' /><!--endemo--> (not to mention that doesn't work due to hit detection being done via the server backlog not clientside)
Oh, okay. So what does cl_updaterate have to do with this? <!--QuoteEnd--> </td></tr></table><div class='postcolor'> <!--QuoteEEnd-->
Ack, you're right... I mixed it up :|