Ye Olde Hitboxbug
CommunistWithAGun
Local Propaganda Guy Join Date: 2003-04-30 Member: 15953Members
<div class="IPBDescription">Need a dev to reply pls</div> Okay, well, since late 3.0 beta testing way back a year ago the notorious hitbox bug was making its premiere, people usually just snidely remarked it was a bad excuse for death
<a href='http://www.purework.net/~lordy/l/NS/owned.avi' target='_blank'>A little video</a>
What does everyone think? Is there any update on it being fixed?
<a href='http://www.purework.net/~lordy/l/NS/owned.avi' target='_blank'>A little video</a>
What does everyone think? Is there any update on it being fixed?
Comments
Is the the invulnerable entity NS specific bug that was never released to the public? ( Many constellation members are well aware of this one ).
Is the the player specific hitbox bug that valve fixed? ( Person with the last player slot wasn't handled correctly by the engine )
Is it the normal HL engine hitbox lag that most people incorrectly call a bug? This often manifests as "omg WTH shot round corner hax" complaint.
Always remember that no two people on an internet server ever experience the same game. Each client sees a slightly different version of events and the crazy looking hits and misses are simply the server informing the client of what really happened.
A fluctuating latency might also be the cause, so check if your ping is somewhat stable or not. If not, it might be time to check out other ISPs or other servers.
And of course, there might be another hitreg bug hidden somewhere .. who knows? Kinda makes it hard to nail it <!--emo&;)--><img src='http://www.unknownworlds.com/forums/html/emoticons/wink-fix.gif' border='0' style='vertical-align:middle' alt='wink-fix.gif' /><!--endemo-->
You can't avoid, only minimize. You'll most time notice hits registering behind the models of players with 100+ pings - beyond the range of tollerance for interpolation.
If you've a default ex_interp value and your ping is consistant with no choke/loss, ex_extrapmax will not matter much in and neither will cl_cmdbackup. Extrapolation occurs when you've not enough data to interpolate - like durring a lag spike and data doesn't reach your client in a timely manner. Backup commands pad each command with the last X commands your client sent and highly inflat the size of data in your upstream. Unless you're encoutering loss (usually due to a flakey ISP), you'll never need to touch this setting. UDP unlike TCP does not control or detect dropped packets, so the default setting is for those fluke times you do drop data.
First of all it isnt me in the demo, second of all granted only 2 shots "land" If you pay attention you see him fire a good inch behind the skulk model and it shows the pellets land on nothingness, then again the crosshair is directly on the skulk and only 1 pellet hits.
Right guys, now listen up, and listen good. Before you come over here and post your useless information and experience that you have gained by years of gaming, why dont you acually shut up, load up a server, and experiment.
And that is exactly what I have done. Lots of times.
If you dont know a lot about the HL netcode, dont even bother reading this post any further. I will give a brief explanation of some of the commands, and how i understand them to work. And if you dont agree with me, go and join a server with a few friends, and test this out for yourself. I will even on request, upload some demos to an ftp so that you can see what I am talking about.
First off lets start with the most common rate commands, rate, cl_cmdrate, and cl_updaterate.
Rate is the amount of incoming data per packet that you receive from the server. The higher your rate value is set at, the less choke you will get (taking into account that you have a decent connection).
cl_updaterate is the ammount of packets that you receive every second from the server. A decent value for this command would be anything above 30.
now comes the most important one in this discussion, and there has been mass confusion about this command for years in this community (and other HL mods / games as well). cl_cmdrate is THE AMOUNT OF FRAMES PER SECOND THAT YOU SEND TO THE SERVER EVERY SECOND. Why is this so important?
Because if a player assigns a low value to cl_cmdrate, he will be sending a low ammount of frames per second (FPS) to the server, meaning that he will basically be teleporting around.
But how will you notice that someone is using a low value for cl_cmdrate? There is only one way - by using a correct value for interp on your client.
Im sure by now everyone knows that ex_interp sets the timing for prediction inbetween frames received from the server that you are playing on. If you are using the correct interp value for your client, you will see 100% accurate hitboxes. This meaning that if a player is sending low FPS to the server (which is directly determined by cl_cmdrate), you will see him teleporting around on your screen because he is sending a low ammount of FPS to the server. Let me use an example:
NSPlayer uses the following rates: rate 10000, cl_cmdrate 10, cl_updaterate 30. Lets forget about rate for now, it is not that important. what is important though is the last two commands. his cl_updaterate is set to 30, meaning he will receive 30 FPS from the server. His cl_cmdrate is set to 10, which means that he is sending only 10 FPS to the server. This means that the server is receiving updates from the client every 0.1 seconds. This means that if at any time he strafes left or right while running at you, and there hasnt been an update received (server from the client),you will still see him running towards you, but you will not see where his correct hitbox position is, MEANING YOUR BULLETS WILL MISS . This is taking into account that you are using incorrect interp values.
So how do you see what value a player is using for his cl_cmdrate? Simply by using correct ex_interp values for the rates that you are currently using. Your ex_interp value should be your 1/cl_updaterate (1 divided by your cl_updaterate value). And if your not into maths, and you dont know where to turn on your calculator, you can easily set it to the correct value by opening your console, and typing: "ex_interp 0". By setting it to 0 , your client will automatically start using the correct value for ex_interp.
Now most of you have not even bothered looking into this, meaning that you will most probably still be using the default value for ex_interp, which is 0.1 . If this is the case, then i suggest you set your cl_updaterate to 50 (or higher) and afterwards you set your ex_interp to 0 (because your interp value is based on your updaterate value). Then connect to a server - i gaurantee you that you will be seeing whats really going on. Yes, some players will teleport, (because of low cl_cmdrate values) but at least you are seeing their correct hitbox positions, and not some illusion.
This my friends, is how ex_interp works. Its not some kind of hack, cheat, exploit etc... You cant change your interp to a value that gives you an advantage, because its not possible, except if you are of opinion that seeing correct hitbox positions is an advantage (in which case i reccomend you use the correct ex_interp value for your rates).
PS: People telling others to change their cl_updaterate because they are "teleporting" should hopefully now see that cl_updaterate has nothing to do with teleporting. cl_cmdrate is the culprit. I seriously suggest that the dev team sets a minimum allowed cl_cmdrate value of no less than 30 in the next version of ns, and that they also lock cl_rate to 9999.
Please pm me on irc if you want anymore information on this.
edit: just corrected something. (1/cl_updaterate)
This post has been edited by Swirl ! on Feb 19 2005, 01:04 PM
<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
<!--QuoteBegin-Roberto+Aug 5 2005, 11:51 AM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (Roberto @ Aug 5 2005, 11:51 AM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->I can't believe the servers that screw up my nicely made rates by forcing their own on me.<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
Atleast your experienced to notice, other players that dont know about this stuff will never beable to go back.
So try something lower...
If you have bad registration with ex_interp 0, turn up your ex_extrapmax. It counters for the jumpyness of the low interp value and smooths it out. You don't lose too much of the accuracy of the models and you don't get a massive headache from tracking teleporting skulks.