Kíkið á þetta… þetta er langt en eftir að hafa lesið þetta getiði hætt að væla og skilið hvað málið er allavegana:(tekið af <a href="http://forums.catacombsnews.com/showthread.php?s=8c76e661535599d06588f95b899b31c6&threadid=46667">http://forums.catacombsnews.com/showthread.php?s=8c76e661535599d06588f95b899b31c6&threadid=46667</a> þessu)

Ex_interp Mega post: complete with free explanation (LONG)
One of the most volatile arguements in TFC is that of the command “ex_interp.” Most of you have probably heard of this through these very message boards, but most of you also don't know what exactly it does. I'm going to explain it to you, in great detail, in this very, very long post. It's so long, in fact, that I'm going to have to post it in multiple parts. I guarantee that if you read through it all, you will have a great understanding of interp, or if you don't, then I did a shitty job of writing, and will answer your confused questions in the posts below. Enjoy, and welcome to enlightenment.

Interp is probably the most enigmatic command to come out of the console in a long, long while. Very few people truly understand it; ideas range from “It expands the hitboxes to double their size!” to “I can shoot people after they turn corners!” to “It's a built in aimbot!”. None of those ideas, however, are correct. Interp is solely a method for adjusting your lag/netcode. No more, no less. It doesn't expand the hitboxes, it doensn't make them easier to hit.

This needs a small amount of back explanation first on how servers interpret hitboxes/models. The basic situation is that all hitboxes are server side. You computer takes the inputs from your keyboard and interprets them into signals that it then sends to the server. The server moves your character according to the commands you just sent in, and then sends out that information to every other player on the server, thus enabling them to see you moving around. That's all pretty basic stuff; it happens dozens of times a second. However, it takes a slight amount of time for the server to receive your information and send it out to the players that are connected to the server.

Say there are two cable players on a server, each with a constant 100 ping. It takes the server roughly 100 milliseconds to receive the data from the first player, and then roughly 100 more milliseconds to send to the second player. As I said, this happens a dozen times per second. The net result is that everything these two players saw from the other would be 2 tenths of a second lagged: 100 millisecond transfer time, times 2 = 200 milliseconds. So without compensation or netcode, if you try to shoot at the model on your screen, you are actually shooting at where the player was 0.2 seconds before. That's with a 100 ping from both players. So the hitboxes (which are server side) are not aligned with the models you see on your screen (which your computer draws). The model you see on the screen is a full 0.2 seconds behind the hitboxes.

Enter netcode, the code designed to compensate for this. Netcode compensates by moving the models forward by 100-200 milliseconds (depending on the lag, loss, and choke), thus properly aligning the models on the hitboxes. With a ping of 100, you will see the models exactly on the hitboxes. If you shoot a shotgun, and your xhair is on the model, it will hit the hitboxes. Without lag compensation, your shot could end up missing, even though you were aimed properly at the model on your screen.

Enter ex_interp, the most mal-aligned console command in recent memory. Interp stands for interpolation. What interp exactly effects is the “interpolation” time between frame calculations. Lost? Don't worry, keep reading. Since your computer only updates your position to the server roughtly 12 times a second, and the same is true for eryone else, the server can only send out your position to everyone 12 times per second. (It might be 24, or 32, I rget. It doesnt matter for this article at any rate). Notice how many people today get more then 12 frames per second; people get as many as 100. Since they are only receiving position updates 12 times a second, how can they possibly get 100 fps? The answer is interpolation. Your computer takes 2 updates on a players position and “interpolates” the positions in between.

Example of this: Say you have 36 fps, but the server is only sending out 12 updates per second. That means that 24 of your 36 frames were not true frames; they were your computer “guessing” as to the position of the player. If a player is moving forwards at a speed of 100, the computer will guess that they will still be doing so in 1/12th of a second, when the next update is received. That results in a smoother appearing game. That way, when the next update is received, your computer doesn't have to move models forward the entire distance that they would have moved in that 12 seconds; since your computer has already “guessed” at the position of the player, the next server update will only have to move the model 1/36th of a second ahead. The net result of all this interpolating going on is that you have a smoother appearance for your game. It allows FPS values of up to 100, instead of being locked at 12 or 24. Anyone that plays at 24 knows that its a pain on the eyes.

It's not an exploit, read and be amazed.
The recent uproar with ex_interp has been that reducing the value from its default (0.1) results in the thigns I mentioned above: aimbots, bigger hitboxes, etc. Again, as I said before, those thigns DO NOT HAPPEN. When you reduce interp, it reduces the amount of time your computer spends “interpolating” the frames between the computer updates. If you set interp to 0, it would eliminate the interpolation entirely. You would only get 12 frames per second, or 24, or however many frames the server sends out a second. Each frame would be ENTIRELY accurate, because your computer wouldn't be guessing as to where the people are, but it would appear incredibly choppy. (If you've tried setting interp below 0.1, you know how choppy other players can look at times. That's because your computer isn't smoothing out their movements for you).

The net result of THIS step is that it moves the models further back. Since your computer isn't spending time guessing that the model will continue to move forwards, and then drawing it for you, it will now only show the last position it received. Let's go back to our model server with 2 players on it, but this time, let's say that each player has a 30 ping. Remember how netcode was set to move models up 0.2 seconds, because netcode is set to work best on players with 100 ping? Well, now that our players have 20 ping, it only takes a total of 0.04 seconds to send their info to the server and then receive the other player's info. But netcode is centered around that time being a full 0.2 seconds. This results in a discrepancy: The models on the players screens with 20 ping appear in FRONT of the hitboxes. This is because the players are receiving updates faster then the server allots for, and then the server netcode increases this distance.

Net result: Player A has his shotgun out, and aimed perfectly at Player B's body. But when he shoots, it doesn't register a hit, because the model his computer was drawing was actually not aligned with the hitboxes on the server. There is a way to fix this. By setting ex_interp to a lower value, say 0.03, player A can eliminate all those unnecessary frames his computer is drawing in. Since netcode is already pushing the models off of the hitboxes, he can lower ex_interp to 0.02. This will effectively kill the netcode, and properly align the hitboxes and the models. THERE IS NO EXPANSION OF THE HITBOXES. Changing ex_interp simply changes where the hitboxes/models appear. A lower ex_interp will move the models in front of the hitboxes, a higher one will do the reverse. (Actually, I may have that switched, sorry, tired . You can go in a server and test it to find out for sure). All that changing ex_interp can do is align or misalign the models and hitboxes on your computer.

Another way to look at interp is a coefficient for netcode. Basically, interp IS netcode. 0.1 stands for 1 tenth of a second; Remember our original netcode ideas? Netcode centers around a ping of 100, or 0.1 seconds. Sound familiar? Why, 0.1 is also the default value of ex_interp! Astounding! So a way to properly align your models / hitboxes is to make ex_interp the value of your ping. If you have a 20 ping, thats 0.02 seconds, which means you should use an interp value of 0.02 to properly align your models and your hitboxes. A 200 ping = 0.2. 100 ping - 0.1, etc. Why am I suggesting this? Simple. Because interp isn't a hack, exploit, cheat, or anything else. It's simply a tool to configure your conn. How many of you change your rate, your updaterate, and turn off cl_allowdownload? Right, most of you. Changing ex_interp is NO DIFFERENT. It is a connection tweaking tool, and nothing more. It's no different or worse then changing your rate to maximize your connection speed.

“But Dec,” you say, “I can shoot people after they run around corners with interp! Hacks!” Bullshit. This line of thinking is the product of not understanding the way interp works. The hitboxes are server side; you CANT HIT THEM if they are behind a wall. It's impossible. What you have probably seen on your computer to make you think you CAN is when someone runs behind a wall, you can see them, you shoot, and still register a hit. You see the blood in midair from an invisible body. This, however, is a lie. What has happened is that you set ex_interp too low for your connection; the models you see on your computer are lies. They are running in front of the hitboxes; You havent actually hit a person behind them, you've hit the actual hitboxes themselves, which have not yet gone around the corner. This is not an exploit, because the reverse is true. Say someone just runs around a corner into your field of view, and you shotgun them. The hit will not register, because their hitboxes are still behind the wall behind them. It's simply a double edged sword.

Personally, I would much rather people set interp too low. The BEST way to hit someone with a shotgun is to aim for the model you can see. If you set interp too low, and you see models running in front of the hitboxes, then you have to aim for the empty space BEHIND a person. Why would you rather aim at empty space, instead of a solid model?

Rediculous.

There is, however, one problem with interp, though it has nothing to do with interp being used in TFC. When you watch a personal demo, it uses your own personal settings when running the demo. You see what someone else did, but it uses your own settings, a la your rocket launcher, your rpg trail, and yes, your interp value. The problem that results in this is that if I watched someone else's demo, where they were hitting often with a shotty, and aiming on target , is this: I could set interp to 0.01, and then record a demo myself. It would then appear like the person in question was aiming behind the models and hitting them.

All that means is that if Person A releases a demo of Person B hacking, where the hack in question was hitting “the models behind them”, or the use of “interp”, well.. Unless its a first person demo from Person B, you cannot accept it as evidence. Person A could easily run their own interp settings and frame Person B. The same goes with AVIs released. They use the settings from the person that recorded the AVI, not the settings from the person in the Demo. The way to counteract this is to get a demo recorded SPECIFICALLY by Person B, the hacker in question. Watch the demo with interp set to 0.1, and if they still appear to be aiming behind the model, then they probably were. Basically, this is a warning: Do not trust AVI's, or other recorded demos from others that show “hackers”. Make sure its either a HLTV demo or a first person demo from the hacker in question.

That about wraps it up for my Interp Mega Post. If you have any questions, feel free to direct them to me in this thread, I'll be happy to answer them.




<br><br>Pinko Elephanto
[Necro]Bleiki Fillinn