ezQuake just got better. Have you been annoyed by the fact that you are so close in getting better ping but still not been able to get there? Is it unfair when someone has 13ms and you don't? Not so long time ago
Qqshka coded a clientside feature to the ezQuake that should make things a bit easier for players not having the greatest ping possible.
The feature is called
CL_EARLYPACKETS and you can get ezQuake supporting it from
Cokeman's Nightly builds thread or directly from ezQuake nightly builds
here.
The variable for the feature is:
cl_earlypackets 0 (disabled]
cl_earlypackets 1 (enabled)
So how does this feature work then? Normally your client would wait for sending packets for the
cl_physfps frametime (servers usually limit this value to
77 (=12,98ms)). Also the game engine gets updated at this interval and the rest of what you see is interpolation caused by the fps-i code.
Now, this is the part where the new code,
cl_earlypackets 1, kicks in. ezQuake will no longer wait for the
cl_physfps frame for updating your view, instead
cl_maxfps value is used. What this means is that you will be able to see the world/entities faster than you could with the old implementation of fps-i code.
Let's take an example:
You have
13,5ms avg ping to a server. It means the ping in QW will be
25ms since
77fps = 12,98ms which gets exceeded by your ping-time. It also means that you see what happened at the server
2 frames late (
12,98ms * 2 = ~25ms).
The new feature allows updating the world/entities using
cl_maxfps value. Let's say you have
cl_maxfps 500 which means
2ms frametime. Your ping was
13,5ms so it takes
7 frames (
7*2ms=14ms) before you can see the changes sent by the server in your client. That
14ms is quite a bit smaller than the delay when using the old method, which would have been
25ms since it relies on the
12,98ms physfps frametime.
At the very simplest, this feature allows you to see changes on server using
cl_maxfps instead of
cl_physfps making ping differences having lesser impact. And this is the only thing this feature does.
No, this feature does not affect physics. Physics are still calculated at
77fps. Also your client sends updates to server at that same
77fps as it always did so you're not flooding the server either. And finally your incoming rate remains the same, the server is not sending you any extra information, only your client is updating your view more often.
IMPORTANT UPDATE:There is one more important difference with this feature that wasn't mentioned. As you might know when you have ping-time near to frametime, pings can get warpy or jerky. Let's see what this means:
You have
13ms average ping to a server, minimum being
12,2ms and maximum being
13,8ms. What does this mean? It means that about the half of the updates coming to you from server will be shown one frame late (
12,98ms) and the rest of them two frames late (
~25ms) making your ingame ping not 13ms or 25ms but something in-between. Also this affects how you perceive your own movement and world/entities. So, the difference between updates in this particular scenario equals one frame, or
12,98ms.
Then we have
cl_earlypackets 1 with maxfps 500 having
2ms frametime. As you might already notice the update comes from a server 6 or 7 frames late (12ms or 14ms respectively, 12-16ms if you consider the worst of the worst) so the delay between visible updates is cut down significantly making the QW feel smoother and "warping" players warp less.
While this feature doesn't make your 14ms ping (25ms in qw) as good as true 13ms, it is a lot better than the old style 25ms. I could clearly see it from the scores and also from the feeling. Also placebo.cfg confirms my findings by the score of 150-4 in right-wrong guesses.