For a few days now I have been testing the effects of using 66 tick on the servers vs 100 tick. You may be wondering why I would do this and it is pretty interesting. As some of you may know valve removed all tick options from the servers some months ago and the reason for this was to fix hit registration and make it so that 66 tick would have the same reg and accuracy as 100tick. As I do not really trust anything valve says about their updates I decided to use a mod that hacked the game engine so that we could run 100 tick. However tests have shows that this mod not only creates more lag on the server but also the process of running 100tic due to the new way the net code works makes the game play bad. 66 tick on the OB is the same as 100tick from the previous engine. Here are some quotes:
There was a long-standing bug in CS with how the weapon firing rate was calculated. Imagine that the AK fired 6 bullets a second (166ms), and the server updated at 10 frames a second.
Server update 0: 0 ms Firing timer: 0 ms
Server update 1: 100 ms Firing timer: 100 ms
Server update 2: 200 ms Firing timer: 200 ms => *FIRE* => 0 ms
Server update 3: 300 ms Firing timer: 100 ms
Server update 4: 400 ms Firing timer: 200 ms => *FIRE* => 0 ms
Server update 5: 500 ms Firing timer: 100 ms
Server update 6: 600 ms Firing timer: 200 ms => *FIRE* => 0 ms
Server update 7: 700 ms Firing timer: 100 ms
Server update 8: 800 ms Firing timer: 200 ms => *FIRE* => 0 ms
Server update 9: 900 ms Firing timer: 100 ms
As you can see, 33ms of firing time is lost each time the gun fires- it's effectively shooting slower (only 5 hits / second) because of the tick rate of the server. If the server was bogged down or had lot of people on it, the results would be even more unpredictable.
This is why guns operated very differently at different tick rates.
We've updated it to the correct behavior, in which case you'll get:
Server update 0: 0 ms Firing timer: 0 ms
Server update 1: 100 ms Firing timer: 100 ms
Server update 2: 200 ms Firing timer: 200 ms *FIRE* => 33 ms
Server update 3: 300 ms Firing timer: 133 ms
Server update 4: 400 ms Firing timer: 233 ms *FIRE* => 66 ms
Server update 5: 500 ms Firing timer: 166 ms *FIRE* => 0 ms
Server update 6: 600 ms Firing timer: 100 ms
Server update 7: 700 ms Firing timer: 200 ms *FIRE* => 33 ms
Server update 8: 800 ms Firing timer: 133 ms
Server update 9: 900 ms Firing timer: 233 ms *FIRE* => 66ms
This fixes the integration, and regardless of tick rate, the guns will have the same feel. In practice, this made the difference between 8 (33 tick), 9 (66 tick), and 10 (100 tick) bullets per second on the AK. Now they should all be identical.
In order to preserve game play, we timed the guns and dumped out the delta between shots on the old 100 tick servers and the new servers. Every automatic weapon was tested, and then we modified the weapon data to match the old 100 tick results.
After making the changes, we ran through and verified that the firing rate was the same for all automatic guns as it was on 100 tick server before the update.
The final cycle times (in seconds) are given below:
SMGs
MAC-10: 0.075
MP5: 0.08
KM UMP45: 0.105
TMP: 0.07
C90: 0.07
Rifles
AK47: 0.1
Galil: 0.09
552: 0.09
D3/AU-1: 0.25
Scout: 1.25
AWP: 1.455
550: 0.25
Bullpup: 0.09
M4A1: 0.09
Famas: 0.09
Shotguns
M3: 0.88
XM1014: 0.25
Machineguns
M249: 0.08
With this update, all of them should feel like old 100 tick servers.
We also plan on looking at weapon recoil and spread patterns and fixing the integration problems there, as well, but that will be in a later update.Those were from valve this is from the creates of zblock:We are doing the work to make the CSS weapon code consistent across server tickrates and client framerates.
We recently released an update that made the guns fire at a consistent rate regardless of server tick rate. Because the guns still fire on ticks and some of the firing rates are not even multiples of ticks a side effect of this change is that the spacing between the bullets is less even.
Making the firing less tick rate dependent is a better solution than just running at a tick rate of 100.
As an example - assume there is a gun that is supposed to fire every 6.5 ticks. In the old code that gun would have fired every 7 ticks with evenly spaced bullets, but on a 100 tick server it would have fired faster (since 10ms ticks can better approximate the underlying firing rate). Another gun that fired every 5 ticks would have fired a little slower on a 100 tick server (because 10ms ticks can't approximate a 75ms firing rate as well as 15ms ticks can since it's an even multiple). Because of this the experience of firing weapons could change dramatically depending on the server you connect to. But in the old code the bullets were always evenly spaced because they were fixed to the nearest multiple of ticks at whatever tick rate the server was running. The framerate on the client matters as well. If you can't run frames as fast as the server's tick rate your client can't always trigger bullets at the correct time either. So when your framerate drops below 66fps (or 100fps on a 100 tick rate server) it affects the feel of the weapons because the sounds are playing with different spacing between the bullets.
When we made the firing rate more independent we also caused the side effect of making the bullets less evenly spaced. Because the sounds are triggered when the bullets are fired this changed the sound of many weapons to be a bit more erratic and different than the sound of either 10ms or 15ms server tick rates. This was pretty noticeable on some weapons but at that point most people were more concerned with the bug we created in that update the made tapping on the fire button shoot differently than it had previously. To address the sound change we added code to accurately place the sounds along the timeline according to the actual firing rate of the gun. In order to implement this the sound engine needs to overlap the sounds because it doesn't have the necessary features to schedule the sounds with sample accuracy and override existing sounds as new ones are played at the same time.
In our other games (e.g. HL2, Left4Dead, Left4Dead 2) this hasn't been a problem and the precise timing is preferred by our audio designers even if it comes with overlap. They simply design the sounds with the overlap in mind. But the counter-strike weapon sounds were not designed with overlap in mind so in the current update they sound different than intended due to the overlapping of subsequent shots.
In the next update we've added features to the sound engine so we can position the sounds correctly in time as well as preserve the original sound design so they will be better in all cases. They'll have the original overlapping behavior and they will be less sensitive to different server tick rates or client frame rates. This is designed to make the feel of the guns more consistent and good in all situations.
Note that the info valve is talking about is what the update the came out a long time ago was going to do.100 tickrate causes timing issues with the Source engine, it's the reason we had to release a doorfix (which was a patch only to fix the more visible issue of doors behaving incorrectly).
The other issues you aren't going to see and if you whine about inconsistency in CSS then what can I say...
We are not going to support tickrate changes in our next release.
The important thing is that I have tested this out and it is clear that 66 runs better than 100. As a result the servers will soon be switched to 66 tick only. This is to improve game play and reduce lag and increase hit registration.