I thought wwcl blocks only the non-essential config variables?
C-D Blocks Interp
Collapse
This topic is closed.
X
X
-
heres a simple example, described in terms of visual effect, on what happens when u lower the interpolation time.
at 0.1secs (default) remember when you score a headshot on someone, the sparks fly not from their head, but either behind the model, or ahead of it? ever see blood squirting NOT from the model itself but from thin air? ive played CS from beta 7 and been on all sorts of connections and have noticed this effect all the time!
now lower your value of ex_interp, to say, 0.05, or even lower 0.025 to get a better effect. now see if you notice blood quirts or hs sparks appearing in the air behind or ahead of the model? when i changed the vaule, i noticed just that!
this, simply, shows that the hitbox AND the model are synchronised much better (a factor of four better: 0.1/0.025=4) than using the default value.
[increase the value of interp above 0.1 secs, and notice the exact opposite effect.]
now ive introduced a word called 'synchronisation', if u know what this means, you will know or realise how important synchronisation is in a fast paced, split second decision type game such as CS. lowering ping times is about the only way to keep the server and all its clients in synchronisation with each other, so that the game flows 'smoothly' (a none technical term i know!).
now lets examine the movement of the players from a model and hitbox point of view. in the HL engine there are loosely, 2 moving entities, the hitbox, and its corresponding model. the server (and client) keeps track of the movements of these two entities, and a client, upon recieveing data from the server, tries to recombine them into a single 'player' entity consisting of the player model (polygons + skeletal animation) and the hitbox (what 'hitscan' looks out for!). it just so happens that the player model is transparent to 'hitscan' and not transparent to the world. but hitbox IS transparent to the world, but NOT transparent to 'hitscan'. Hitscan is the generic method CS/HL uses to define whether a player has been 'hit' by the bullet. in fact not the player, but only the HITBOX! since model is transparent to targetting!.appended @ [time="1053903949"]
continuing,,,,sorry if my writing is a bit disjointed, im trying to write as best i can about this, cos im fed up with ppl talking about ex_interp in the wrong way.
----
have you noticed how when you lower ex_interp to lets say 0.01, the player MODELS (note: ill be referring to separate entities now, models and hitboxes) move much more jerkily? have you ever wondered why this is the case? what has happened is that now the player MODEL follows the HITBOXES much more accurately (at a rate of 1/0.01=100Hz). *Or* the maximum rate that the server is updating your client at! which can vary but lets assume it is capped at 100 updates per second. Now, if we turn off interpolating, ex_interp 0, what are we seeing? the player moves very jerky indeed, and this indicates thatappended @ [time="1053904464"]
the player MODEL is now completely in sync. with the HITBOXes. now you can check this yourself in the following way. with ex_interp 0, the player MODEL and HITBOX can be considered as a single entity, because, according to their [x,y,z] coordinates within the HL world, they conincide almost identically. ie, the 3D position of the HITBOX and the MODEL are the 'same'. now, the player MODEL position is 'EXtrapolated' from the HITBOX coordinates, this means that wherever the HITBOX goes, the player MODEL follows. how accurately the MODEL follows the HITBOXES is determined by the sampling rate (know to us as ex_interp). thats all ex_interp is, a sampling rate.appended @ [time="1053905395"]
put simply,
-----------------------------------------------
the value of ex_interp determines how often the position of the HITBOX is sampled so that the player MODEL can be overlayed on top of it as accurately as possible.
-----------------------------------------------
this accuracy obviously goes down the higher the value of ex_interp used. a higher sampling rate (lower interp), the more samples are collected from the HITBOX position and thus the path the HITBOX moves through the HL world has a smoother envelope.
now how often is the HITBOX position updated on your client? well, that all depends on how many times your client is sampling the server. lets say the server updates every single client 100 times a seconds (100Hz) which gives a sample time of 1 update per 0.01 second. assuming your client can handle this ratye from the server, the HITBOX moves through the HL world at a rate of 1 update per 0.01 seconds. This is a very high update rate, and in practice the HITBOX will *not* be updated this frequently, 100hz is just used as an example in my description. now, if the client has its server update rate set at 100 samples per second (the well known cl_updaterate = 100), we are recieving 100 HITBOX updates per second, thats good. if u lower the cl_updaterate to 10, we are recieveing 10 times less updates from the server (that should be obvious! sorry.). This means that the position of the HITBOX is now calculated every 0.1 seconds, and with our interpolation rate set at 0 (ie: OFF), our player MODEL should move at a rate of 1 world update per 0.1 seconds.
if we turn on player MODEL interpolation, what we should see if much smoother movement of the player MODEL ONLY! this is an important point! increasing ex_interp doesnt smooth out the movements of the HITBOX but only the MODEL of the player so it APPEARS like the player is moving smoothly through the HL world. and this was the basis of the netcode a long time ago, when we all had low bandwidth connections (except nighthawk who is still in the stone age :P j/k). the idea that the player MODEL can be made to move smoothly but having the HITBOX move at a rate of 1 update per server update is a clever way in making the game appear to be synchronised well. when in fact, the hitboxes were being updated at a realtively low level (when compared to the MODEL of course).appended @ [time="1053906144"]
the only way to increase the sampling rate for the HITBOXES was to increase the client update rate from the server (cl_updaterate say 100). correspondingly, the rate at which the HITBOX is sampled once information about it has been recieved, increaases with increasing cl_updaterate. this translates into even smoother movement for the player MODEL.
how does this affect broadband users? now that we live in an age of low latency connections, and servers can be configured to send out client updates even more often, the HITBOXES clients recieve can be sampled at a very high rate, higher than a few years ago thats for sure!
lets use an example! our server is sending out 100 client updates per second (in an ideal world), and we (the client) set our server sampling time at 100hz (cl_updaterate 100). remember!, we are recieving data from server about the position of the HITBOX not the MODEL, the player MODEL position is extrapolated from the position of the HITBOX. so if we are recieving our HITBOX data at 100Hz, we can safely turn off player model interpolation, because there is no need for it. since turning off interpolation means the player MODEL will follow the HITBOX near enough exactly, and since the HITBOX is moving along at 100Hz, out player MODEL should too. the maximum screen refresh rate of HL/CS is 100Hz, so in effect we are viewing our player MODEL at the maximum allowed refresh rate! perfect!
dont forget, the only this we see is the player MODEL, NOT the HITBOX (that should be obvious i know).Comment
-
now, what do i say to those that call using ex_interp a 'cheat', 'hack' etc.
we recieve the HITBOX data from the server directly, and the [x,y,z] coordinates of the HITBOXES do not change, no matter what value of ex_interp you use. the only thing that changes is the position of the player MODEL relative to the HITBOX. a lower value of ex_interp means the HL engine tries to extrapolate the position of the MODEL [based on the CURRENT position of the hitbox within the HL world] at a higher rate. at ex_interp = 0, the sampling rate is infinity (1/0), which causes the player MODEL to follow the HITBOX near exact through the HL world. how the player MODEL is extrapolated from the HITBOX is a subject of another discussion, but im sure it uses a form of autocorrelation.
so if you want to see what path the HITBOXES take through the HL world, just set ex_interp = 0, and you shall see. of course you wont see the hitboxes directly, but seeing the player model position is near enough.
why am i using the word EXTRAPOLATED when its INTERPOLATED? well, because the position of the player model (that leet krew guy we see) is EXTRAPOLATED from the hitbox position. The movement of the extrapolated player model is then INTERPOLATED so it appears to be moving smoother. (interpolation is for example when a curve is drawn using straight lines <- lame explanation i know, im getting lazy now). the factor by which the model movement is interpolated directly influences the way the model position is calculated from the hitbox position.
i would love to accompany this with diagrams, maybe at a later time. :)Comment
-
ElJefe wrote..
Nearly all of the CS community can't find their heads with both hands without wiping first. Remember that the next time you want to use the community as an example to support your points.
Nearly all of the CS community can play just fine without changing ex_interp.All ex_interp does, in short, is coordinate model appearance in relation to hitboxes. There is absolutely no reason to change it that I can think of.
No reason except to hit what you're shooting at, apparently. Now that i've heard an explanation of it, it makes a lot of sense. Most of us have seen the summerblue video of him AWPing thin air and getting a kill, and i've experienced plenty of that myself since b7. How can you say that there's no need to eliminate that kind of thing from a game that already has enough problems with undeserved hits and misses?Inso[]V[]niac wrote..
Ok, so given all of this, there are still several questions that are badly in need of some answers:
A bunch of really informative stuff.
A) How the hell can Valve say that the default ex_interp is actually optimal for a game where the ability to accurately aim for certain hitboxes is critical?
B) How the fuck is it considered cheating to know where the hitboxes are in relation to the model? "Huhuh, you can hit what you're aiming for, THAT'S CHEATIN". Just...what the hell?
C) And surely the guy behind C-D knew how ex_interp worked, so what the hell gives him the right to lump something like this in with actual cheats?Comment
-
reply to mouth,
a) well the reason 0.1 seconds is an optimal setting is because it allows the smooth movement of player models under even bad network conditions. lets say you're downloading, your ping is badly affected in the game. caused by the fluctuations of data rate you send and recieve in CS. now with a low value of ex_interp, it will be immediatly obvious when your network conditions are bad, player models jerking all over the place. however, if u used 0.1 seconds, you might hardly even notice any glitching/stuttering. when you get packet loss, that another story, you get other forms of positional interpolation that i wont through here.
in summary, ex_interp = 0.1 seconds just *looks* better.
now if valve were to implement a dynamic altering of interpolation time, that would react to how bad (or good) your ping time is...probably too much to think for valve.
b) thats what i want to know? but seriously, given CS's reputation for being riddled with cheaters, a vast proportion of players are very paranoid about 'tweaking' or 'config' stuff. these are the type of players that when killed, think, if even for a split second, 'hmm...is he? or isnt he?'. just ppl being paranoid over little things.
c) and because of this paranoia, this is what happens. yes it is an advantage, not a big one, but still, to know about the HL console, and how to change commands etc. how to tweak your netcode etc is advantageous over someone who doesnt know what a console is, obviously. i would like to blame valve on letting 'loose' these CVAR commands when they should be hidden and not tampered with. locked cvars, every1 is happy, one less thing to bitch/accuse about right?
but what about ppl who get 100fps rock solid? (32 players, 5 smoke nades, high poly models, 1600x1200x32 mode) there are computers like that im sure. how abotu those connected to the server through an ATM network? 10ms ping...mm...3d sound.....big monitor.....optical mouse......the list is almost endless....
there will never be an equal game, and there will always be ppl bitching about things without knowing what they r bitching about, just following the herd.
Comment
-
Surely well said.
I use a rate of 7500 cl_updatrate 100, cl_cmdrate 100. Because 1. My server can handle it, and 2. My connection can handle it. So because I have an average of 5Kbps throughput compared to somone with only 1, or 3 I am cheating? Im sorry if my computer and connection is better then yours and can in turn use the settings more in tune with my hardware. Why is this my fault? How about instead of complaining get a job buy a better computer get some broadband and set ur interp lower.
There is a reason these things are called VARIABLES. Variables are ment to be changed to better suite their enviroment. I shouldnt be forced to play with crappy settings just because some 12yr old cant get better hardware or is 2 stupid to change their own variables.Comment
-
Edited by [user="41266"] @ [time="1053947669"]
Inso[]v[]niac, thank you for that extensive explanation. Finally, even I know what that ex_interp is all about... :)
I often experienced 'beeing killed where I was half a second ago', i.e., I was taking fire, jumped into cover and got shot (making me believe I was shot through the cover. But then, in ghost mode, I saw my corpse lying in open space and not behind the cover. I'm pretty sure by now that this happens due to connection issues, but I wonder if this effect can be amplified by interp tweaking... or am I just paranoid?Comment
-
Actually I do believe as stated it is not the value that is the problem, it is just a bug in the implementation of EX interp as a variable. .5 is technically the optimal setting but due to an error in the setting, they set it to .1. Setting it at .05 supposedly causes inconsistency with hit detection and the server. While we can all speculate to hell and back no one here has access to the code one way or another. You can say what interp is suppose to do but it doesn't mean it is doing it properly, or doesn't have any abnormal side effects.Comment
-
Edited by [user="41266"] @ [time="1053957162"]
Something else came to my mind (concerning Inso[]v[]niac's explanation): just why are they separating hitboxes and models? Why should they make the hitbox position directly dependant of the position updates coming from the server (making the hitbox move jerky) while the model's position is determined by interpolation? Wouldn't it be more plausible to interpolate the position updates (using the ex_interp value) and use the interpolated coordinates for both hitboxes and models? Some netcode god please enlighten me.Comment
-
rizzuh wrote..
Riz, you know what I mean :P
Like using an aimbot?
All I am trying to say is why discriminate against players who make the effort to research their game to get better at it. The long distance runner who thinks "I don't need to train or plan a race" will be the one who comes home without a medal. Same with CS, why should we be banned from servers just because we take our game seriously enough to tweak it according to our connections?
I don't mind interp being banned, as I don't personally tweak it. But if something is going to be banned on CD servers, and not others, then it's leading to a form of sectarianism which can only be bad. Let Valve ban it altogether or not at all, not CD...Comment
-
UK hazard, like i said, if you were watching another player using a low value of ex_interp from your client (ie if youre spectating him while dead), it will appear to be he is firing not at the player model itself. thats because you two are using different ex_interp values, ie the interpolation accuracy of your two clients is different. it is this mismatch has probably started this paranoia over ex_interp. on his client however, he is aiming AT the player model, NOT behind/ahead of it like you see while spectating him.
drakmere,
i know what youre saying. using a low value of ex_interp is one of the perks of having abroadband connection. and i suppose no one has the right to tell you how you should better take advantage your your connection. right? the value of 0.1 seconds was very reasonable 5 years ago, but nowadays, lets hope valve comes up with something better. not sure abt your cl_updaterate 100, r u sure your server updates its clients at 100hz?
cmdrflesh,
i dont think thats because of your attacker using a different ex_interp value. what your phenomenon is caused by is this: where you are on your client in the HL world, isnt where you are as the server sees it. so lets say youre running along in the HL world, you cross a certain point A on your screen, but by the time that information reaches the server, some time wouldve passed. this time is based on your ping time to the server. so while on your computer you have passed point A, for everyone else (including the server) you are just approaching point A. what this means is your position that the server is sending out to all the other clients is lagging behind by a certain distance (this distance gets less the lower ping time you have). now the word lagging im used as in not 'lagging' like ppl whine about during a game, but lagging as in 'DELAYED'. that is yet ANOTHER perk of having a low latency connection, your actual server position is much closer to your client position in the HL world. hope thats clear now.
helloworld,
are you saying valve suppose to set it at 0.5 seconds? thats ludicrous. dont u mean 0.05s? well the abnormal side effect, the only one i have encountered and the result of ex_interp being called a 'cheat', is the fact that if someone else is spectating you, youre not aiming where the model is on his client, while on your client of course you are. as uk hazard pointed out.appended @ [time="1053988875"]
next cmdrflesh answer,
why are they seperating hitboxes and models? well hit detection in HL is hitbox only, not the actual model boundary itself like maybe for quake there is. this saves on network bandwidth as the only thing a server has to transmit are the hitbox vertex data. (ie the hitbox boundaries). if u had a full 1000 polygon model, it would cause much network overhead using THEIR CURRENT implementation. with clever programming this can be avoided however.
i understand what youre saying, why the need to extrapolate player model position when it can be overlayed onto the model directly. well without much thought on my part it would suggest that valve have been lazy in rewriting the netcode that is geared towards dial up connections. theres another variable 'cl_lc' that i need to play around with to see how it affects what youre describing.appended @ [time="1053989085"]
FAF,
this ex_interp is very much valves fault for not being locked down. maybe they were using it for testing and forgot to do that? and because of paranoid teens thinking 'omg, hes aiming behind the model, cheat etc' this has been blown up way out of proportion.
think about who were the first ppl to alter ex_interp? the pro gamers, remember. it is those sorts of ppl who take the game very seriously like u said.appended @ [time="1053989182"]
i personally play now with ex_interp 0.1 (default), but used to for over a year to play with ex_interp 0.025 (4 times less than default). it made the game a lot more consistent for me when i 1st got broadband, and i knew about the effects of ex_interp long before it bacame branded as a 'cheat'.
Comment
Comment