Jump to content

Problem with zBlock and the Importance of Cl_interpolate 0.


Recommended Posts

Member
(edited)

I was going to post a reply to the zBlock thread but I thought I should evaluate on what cl_interpolate actually does... I myself used to use cl_interpolate 1 when I was able to maintain cl_cmdrate 100 and cl_updaterate 100, without any loss or choke. Unfortunately, I seem to have lost that ability and now get choke up into the 60's during firefights. After that, I decided to read into these source settings a bit more and figured that cl_interpolate 0 is definately the way to go if you CANNOT maintain cl_cmdrate 100 and cl_updaterate 100. Cl_interpolate 0 will LOCK the hitboxes onto the playermodel, thus resulting in the most accurate experience possible.

 

Cl_interpolate 0 = Hitboxes are matched to Player Model 100%.(Models may seem ?stuttery? at times)

Cl_interpolate 1 = Hitboxes are matched according to the server placement of that model. (Basic Sense)

 

 

http://justbi0.de/CSS_hitboxes.jpg

http://justbi0.de/hitboxes.avi

 

 

Of course, some will tend to disagree as cl_interpolate "1" was supposedly fixed but most evidence points otherwise. Also, because of the gaming popularity of the CPL, they do not allow cl_interpolate 0 because of dissapearing bodies, and stuttering player models.

 

Further discussion: http://forums.thecpl.com/cgi-bin/ultimateb...f=3;t=001048;p=

(From 2005)

 

Interpolate 0 is the only way to 100% ensure hit registration. Period.

 

For those of you who can use cl_cmdrate 100 and cl_updaterate 100 without any choke/loss, then this is for you.

 

cl_interpolate 1

cl_interp .01

cl_cmdrate 101

cl_updaterate 101

rate 25000

 

Of course due to the nature of the CPL, cl_interpolate 0 would not matter. Because cl_interpolate 1 is spectator friendly, it is used by the CPL.

 

For people who just start using cl_interpolate 0, you will have to get used to stuttering models at times, and people flying around corners. Once you get used to it though, let the headshots roll in.

 

Official Valve explanation of Source Multiplayer Mechanics: http://www.valve-erc.com/srcsdk/general/mu...networking.html

 

Here are the most important parts:

 

Entity Interpolation

By default, the client receives about 20 snapshot per second. If the objects (entities) in the world were only rendered at the positions received by the server, moving objects and animation would look choppy and jittery. Dropped packets would also cause noticeable glitches. The trick to solve this problem is to go back in time for rendering, so positions and animations can be continuously interpolated between two recently received snapshot. This technique is called client side entity interpolation and is enabled by default with cl_interpolate 1. With 20 snapshots per second, a new update arrives about every 50 milliseconds. If the client render time is shifted back by 50 milliseconds, entities can be always interpolated between the last received snapshot and the snapshot before that. The Source engine does the entity interpolation with a 100-millisecond delay (cl_interp 0.1). This way, even if one snapshot is lost, there are always two valid snapshots to interpolate between.

 

Since we have an interpolation delay of 100 milliseconds, the interpolation would even work if snapshot 342 were missing due to packet loss. Then the interpolation could use snapshots 340 and 344. If more than one snapshot in a row is dropped, interpolation can't work perfectly because it runs out of snapshots in the history buffer. In that case the renderer uses extrapolation (cl_extrapolate 1) and tries a simple linear extrapolation of entities based on their known history so far. The extrapolation is done only for 0.25 seconds of packet loss (cl_extrapolate_amount), since the prediction errors would become to big after that.

 

The entity interpolation is causing a constant view "lag" of 100 milliseconds, even if you're playing on a listen server (server and client on the same machine). So if you turn on sv_showhitboxes the player hitboxes are drawn in server time, meaning they are ahead of the rendered player model by 100 milliseconds. This doesn't mean you have to lead you're aiming when shooting at other players since the server-side lag compensation knows about client entity interpolation and corrects this error. If you turn off interpolation on a listen server (cl_interpolate 0), the drawn hitboxes will match the rendered player model again, but the animations and moving objects will become very jittery.

 

 

Everytime I write something... I feel as if I should go into more detail, I'll leave you fellows with this for now. You can correct me anywhere if I made a mistake or argue against my views. I was going to go into detail on the Valve paragraphs on interpolation, but I have just realized I need to be somewhere... I'll edit this later.

 

EDIT: If you want me to post some configs I have used, just give the word.

Edited by fafreeman
Link to comment
Share on other sites

CPL's Decision

 

"Based on all of testing we have done, we will be using the following settings at this time:

 

cl_cmdrate 100

cl_updaterate 100

cl_interpolate 1

cl_interp 0.01

cl-smooth 0

rate 25000

 

Server ticrate of 100"

 

CAL also forces cl_interpolate 1

Cevo does not

 

At this time the only plugin to regulate cvars that works is zblock, the others have been hacked, like CSP and Cevo Plugin.

 

 

Do you play CAL? If you do you want to get used to cl_interpolate at 1 but if you dont, well its your personal preference

 

Also to add, there is no way to only change this value in the plugin, you have to use the whole thing or none at all.

Link to comment
Share on other sites

Member
(edited)
CPL's Decision

 

"Based on all of testing we have done, we will be using the following settings at this time:

 

cl_cmdrate 100

cl_updaterate 100

cl_interpolate 1

cl_interp 0.01

cl-smooth 0

rate 25000

 

Server ticrate of 100"

 

CAL also forces cl_interpolate 1

Cevo does not

 

At this time the only plugin to regulate cvars that works is zblock, the others have been hacked, like CSP and Cevo Plugin.

 

 

Do you play CAL? If you do you want to get used to cl_interpolate at 1 but if you dont, well its your personal preference

 

Also to add, there is no way to only change this value in the plugin, you have to use the whole thing or none at all.

 

Yes, I used to play CAL with those exact settings.

cl_cmdrate 100

cl_updaterate 100

cl_interpolate 1

cl_interp 0.01

cl-smooth 0

rate 25000

 

Unfortunately I had to dedicate time to other things, and dropped CS:S for awhile. After picking up and playing again, I found that I could no longer use my old settings without experiencing huge amounts of choke/loss. I'm sure one day I'll figure it out and go back to using my old settings.

 

In the meantime, cl_interpolate 0 ensures me my 100% accuracy.

 

I will state again... If you can handle a cl_cmdrate of 100 and cl_update rate of 100, then the above commands are perfect for you. If you get High choke/Loss in that area, cl_interpolate 0 will help you.

 

Of course, people will continually go back and forth on this subject, until cl_interpolate is fixed, there is no definitive solution. The man with the faster connection and better fps still has the advantage here. cl_interpolate gives some people a step up.

Edited by fafreeman
Link to comment
Share on other sites

yeah, it is a full on back and forth. i've spent a lot of time looking at different video's, setting up servers showing hitboxes and simulating lag, pwning m2, and so on. here's what i've found.

 

cl_interpolate 0 does fix the hitbox directly to the player model. but the argument covniently stops right before anyone can ask: "well, ok, where's the player model?" ever shoot someone, see blood, and not have damage register. somewhere on the mailing list, alfred came right out and said "blood on the client side doesn't mean a hit on the server side." that's cl_interpolate 0.

 

cl_intepolate 1 helps include the events that might be missed due to internet latency between frame snapshot A and frame snapshot B.

 

not locking these things gives unfair advantages to people like this:

ZoSo_420<2576><STEAM_0:1:11008438><Unassigned>" disconnected (reason "Kicked by Console : Illegal Interp Value lock")

 

 

we're trying zblock min which locks interp @ .1. at some point i want to try zblock max, which locks interp @ .01. i think this is going to hurt more than it helps, though.

Link to comment
Share on other sites

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...