Interpolation
Here is my understanding of it (this is not an epically researched report on it, someone who is in the scene is likely to come here and ruin me). We currently don’t know what the tic rate of the server is (tic is the number of “this is where everyone is” packets that are issued to the clients per second). There are 3 methods of displaying this information from a client POV;
Directly, where you would get a warping effect as your client displayed each person in the position instructed by each packet (dropped packets or out of order packets will produce increased warping).
Extrapolation whereby your client tries to visually predict where the positions will be based on the information obtained from the previous packet (ie speed, direction etc etc), the problem with this method in FPS is that human players tend to be random, if they change position or packets are dropped or arrive out of order then your client needs to correct this and can only do so by warping the player to their new location.
Interpolation, visually speaking the best solution, your client buffers the incoming packets and displays them accordingly. ie packets are received and displayed as follows (packets are bold);
Received 10ms A - 20ms B - 30ms C - 40ms D - 50ms E - 60ms F
Hardcoded buffer 100ms (BF3)
Interpolation buffer 100ms (BF3)
Displayed 10ms Nothing – 20ms Nothing – 30ms Nothing – 40ms Nothing – 50ms Nothing – 60ms - Nothing – 70ms Nothing – 80ms Nothing – 90ms Nothing – 100ms Nothing - 110ms Nothing – 120ms Nothing – 130ms Nothing – 140ms Nothing – 150ms Nothing – 160ms Nothing – 170ms Nothing – 180ms Nothing – 190ms Nothing – 200ms Nothing - 210ms A - 220ms B - 230ms C - 240ms D - 250ms E- 260ms F
What the above is showing is that your client is showing your enemy where they were 200ms ago, its an example but the figures are relatively accurate based on what information is out there. It makes me wonder if that black phase in is the client buffering the packets…. Visually its smooth as dropped packets don’t matter, there’s a buffer in place so the visual implication of dropping say packet C above is zero because the client can calculate the animation transition (within the buffer) between the position in packet B and packet D without any warping. They have clearly increased the hard coded buffer and the interpolation buffer from beta to retail as the warping has stopped more or less but the question remains to what cost ?. Your seeing where your enemy was 200ms ago, he might have moved and whilst your hits should still register (because its client side hit reg) what’s more important is that he might have started shooting and you won’t know about it until 200ms after the event. You are in effect playing the game in the past.
If you have a decent ping to the server, which most of you have you are being given an additional 200ms ping by your client (artificially) so that it can buffer the packets. The new network interpolation slider lets you reduce the interpolation buffer from 100ms to 0ms (we will always have the hard coded buffer). Reducing the interpolation “could” introduce some visual rubber banding to you if you have a poor connection to the server because the received packets will be displayed in a more direct fashion, there will still be some interpolation due to the hard coded buffer. Anyway for people who play on other servers its worth baring this in mind if you do change it.
I have a ping of 10-20 to our server, I don’t need additional interpolation and thus I have set it to about 0.10 (you can’t be accurate because it’s a slider and not a numerical value). I’m not getting any warping and I will update you with how this effects my game, but I’m happier playing the game nearly 100ms nearer the present than I was yesterday.
** this is a c/p of a post I made on our forum to our chaps, thus some of the "our server" talk is directed at them rather than people here. The point still stands though