Posted: Mon Mar 11, 2013 1:40 am Post subject: ZDaemon 1.08 to 1.09 transition (Answers)
In this thread i will try to address all observations that were reported in this and this thread. This will take a lot of time so this thread will remain locked while i proceed. When done this thread will be unlocked.
I think i tried to solve the silent BFG problem with someone but we couldnt work out why. It's definately not the same as before. In 1.08 I could make a 1-hump silent BFG shot 10/10 times, whereas in 1.09 I can barely make one 2/10 times and often have to do several 'humps' to make one.
Please download chocolate doom. Run it and try to silence the BFG in SP. You will see that it only works when you fire first and press use quickly after. So the order is:
1. Fire -> 2. Use
If you try it the other way round you will silence the 'omph' and the BFG sound will play instead.
Do the same test in a 1.09 server now. It will work exactly the same as chocolate doom.
Now check the Changelog:
In the first public beta release (2011-07-16) you will find:
219. Fixed a sound desync on BFG that could give the shooter a wrong
impression regarding the success of silencing the BFG.
In 1.08 there was a problem (online only. in SP it worked like choco). You could silence the BFG when you pressed:
1. Use -> 2. Fire (this should not silence the BFG)
But this silencing happened ONLY for you. Your enemy received the sounds in the order 1. Use 2. Fire and would hear your BFG. So you thought you silenced it when you actually did not. When you pressed fire first and use second in 1.08 then depending on your ping you would sometimes think you did not silence the BFG when in fact your enemy did not hear the BFG in that case.
You got used to the 'wrong' way to silence the BFG. So using the old 'buggy' method (that did not work in the first place) will not work in 1.09 anymore.
To sum it up:
In 1.08 you thought you silenced the BFG when in fact your enemy could still hear it, and nobody noticed this bug.
Let us give some insight on the changes between 1.08 and 1.09 and what impact they had on the 'shot quality'.
1. What parts of the code can influence the 'quality' of shots and might have changed between 1.08 and 1.09?
Here are the only possibilities:
1.1. We changed the weapon strength or weapon code.
1.2. Your local player position is not accurate and does not match your position on the server.
1.3. Your local enemy positions are not accurate and do not match their positions on the server.
1.4. Something is wrong with unlagged.
1.5. The mouse code changed and your aim did not adapt to it yet.
2. What actually changed between 1.08 and 1.09?
2.1. We did not touch the weapon code or damage.
2.2. Players predict their own position locally (details). You might remember the movement jitter in 1.08 that was very noticeable with high ping. The prediction code in 1.08 had a bug that made your predicted position NOT match the server position, hence the constant jitter when your client corrected this faulty position.
This was fixed in 1.09 and your predicted position now matches the server position. The only time you will get a prediction error is when you collide with another player, but this cannot be fixed (only masked with error smoothing, which will again introduce different problems) and has to be accepted as an artifact of client/server gaming. So in summary: We fixed a bug in the 1.08 prediction code and your own player position is now more accurate which makes your shots more accurate!
2.3. In 1.08 the received enemy positions were not in full precision and additionally you received enemy position updates only every 2 ticks. You were effectively aiming at positions that were a bit inaccurate and outdated 50% on average. This might sound very inaccurate overall, but it does work 'good' most of the times. But given the movement speed of doom it sometimes resulted in very inaccurate enemy positions that did not match the actual server positions anymore.
In 1.09 we send the EXACT player positions and the client will by default receive enemy position updates every single tick. This means that there is no more missing information unless a packet gets dropped, which happens rarely and the chance that you miss a packet AND were just about to shot the enemy is VERY low. So in summary: Your enemy positions are VERY accurate and when you aim at an enemy you can be sure that you are aiming at its true position you received from the server. This means that shot accuracy increased in 1.09. Keep in mind that the quality of enemy positions you receive from the server does in no way depend on the enemy ping. All information from the server is accurate. A player cannot 'cheat' the server into sending 'weird' position updates to the other players. If a player tries to mess with his packet flow he will suffer way more than his enemies.
2.4. ZDaemon uses this state of the art server-side unlagged implementation since 1.07. This technique is used in all Valve games and the other doom ports have adopted it as well by now. Unlagged cannot be 100% perfect. And again the movement speed of doom will make this imperfection more visible than e.g., counter-strike where players move A LOT slower. The 1.08 unlagged was working 'ok' already and 1.09 still uses the same code and principle.
The only unlagged change in 1.09 was a doom engine specific refinement on top of the old unlagged that increased the accuracy dramatically.
Unlagged is not influenced by the ping of your enemies! Unlagged depends on your ping only! Shooting someone that has a very high or very low ping yields the same result. The position info your client has about high or low ping players is equally accurate (see point 2.3). The fact that the railgun works very well is the ultimate proof that unlagged works right (this will be addressed in detail in a later post) and translates to all other hitscan weapons since they use the very same unlagged code.
2.5. The mouse code changed in 1.09.01:
9. Rewrote the DirectInput mouse code and made the whole input
use DirectInput 8. This fixes the bug that applied windows
acceleration and sensitivity to the mouse.
Before the 1.09.01 release the DirectInput mouse code would be influenced by the systems acceleration and interpolation (input lag) when you were using Windows Vista or Windows 7 (this could not even be disabled in the systems mouse options). Additionally, when you had a modern gaming mouse then high polling rates would cause stuck keys and other problems. All these issues were fixed in 1.09.01 and DirectInput is now the ONLY supported mouse mode (the in_mouse cvar was removed and the old win32 mouse mode as well). Some people got used to this 'broken' mouse behaviour over time so they will need to adapt to the 'clean' and more precise mouse behaviour we have now.
In summary, all changes either fixed bugs that negatively impacted the shot accuracy previously or improved the accuracy of shots further. We verified each of the above points internally before the first 1.09 beta release, because we would NEVER release such potentially critical changes without being 100% sure that they work right and actually fix/improve the previous state. We even had top tier players verify the improved quality of the unlagged with high ping before the public beta release. No changes to the code related to the above points have been made since the initial 1.09 beta (that was 20 months ago). During that period we did not receive a single complaint about 1.09 feeling worse than 1.08. On the contrary, all the feedback we got so far was about how much better the game feels and that the unlagged is much more accurate, which matches the results of our previous internal tests.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum