Counter-Strike 2 Issues

Everything about latency. This section is mainly user/consumer discussion. (Peer-reviewed scientific discussion should go in Laboratory section). Tips, mouse lag, display lag, game engine lag, network lag, whole input lag chain, VSYNC OFF vs VSYNC ON, and more! Input Lag Articles on Blur Busters.
Future
Posts: 76
Joined: 06 Dec 2022, 07:04

Re: Counter-Strike 2 Issues

Post by Future » 30 Jan 2025, 18:26

joseph_from_pilsen wrote:
30 Jan 2025, 15:56
IF it were so easy... These diagnostic tools are using only long interval request once or twice per second what is absolutelly useless in this case. And spamming icmp request 100x in a second only leads to rejecting requests from the node as pinging so often triggers the anti-ddos filter.
I guess you are right, but at least it's a lead. If any of the packets has huge ping spikes or is lost, then you have an answer and it's hit or miss with your next ISP and their routing. Because if you have ping spikes or even loss while you are doing icmp requests on default values, you will definitely notice it while in game with 128 UDP packets going in and out.

Hope you don't mind if I ask but are you 100% sure your problem is not driver related or maybe even some CPU spike that causes it? It may look like network issue but I changed two ISPs because I thought it's their fault until I changed my PC.

BumFlannel
Posts: 27
Joined: 31 Oct 2022, 08:33

Re: Counter-Strike 2 Issues

Post by BumFlannel » 31 Jan 2025, 05:11

In response to some posts. This is going to be very long, it's based on a decade of observation and testing in CS.

CS2 like CSgo uses 1200mtu/max routable. Packet sizes can be larger than this due to packet headers. I forget the exact size but they max around 1330 or 1350 bytes with headers I think.

CS2 and CSgo of the last few years sends way too much data for the type of game it is. Fletcher Dunn admitted CS2 sends too much data because of the unoptimized networked anim graph which wasn't used in CSGO, and they are working to fix it, but it's a long job. This was about a year ago. However, CS2 doesn't really send that much more data compared to CSgo in its later years so I really don't think it's just the networked anim graph that is the issue.

In modern CSGO in a 5v5 official 64 tick server you would be receiving an average of about 86 packets per second. Some ticks you'd be receiving 2 packets because the data exceeded the max routable size, so the server needed to send 2 packets which are recombined on the client.

The issue here is that those 2 packets are sent on the same tick so pretty much at the same time/very little (0.0001ms) time between them and on route they can very easily become out of order. Valves fix for this was to add an artificial delay of 1ms to give all packets in the tick time to be delivered before being processed and recombined.

Now I don't know if this 1ms delay is total for each tick despite how many packets are sent for the tick, but I would imagine it would need to be 1ms for each packet received because on a full official DM server for example you receive on average about 140 packets per second.

Using wireshark I've seen as many as 9 packets being received in a single tick in cS2, and probably an average of about 4 packets per tick, at least half of which being full (1300+ bytes) packets. If the artificial delay was a total of 1ms for all packets to be received then if a single packet hit after that 1ms then every packet after it, outside of ones delivered out of order before it, would be classed as dropped and therefore not processed.

Csgo official DM used to send between 1 to 3 packets per tick, with large numbers on things like match start and end etc.

I believe the packets are out of order quite a lot so are being dropped but the telemetry isn't reporting it. I also believe SDR, steams own protocol, is implementing some form of retransmission to alleviate this problem but ironically makes the problem worse because it means more data has to be sent.

Because of the amount of data sent per tick being apparently too large for the type of game CS is, I believe any data lost between the relay and the client is being resent within the packets for the next tick, inflating the packets sent for that tick meaning more packets get dropped and then again the next tick has to pick that up. This would explain the excessive data sent from the server. I believe this, plus the extra latency inherently needed for lag comp to be able to handle this late/retransmitted data it what is making the game so unresponsive and inconsistent to play. And because you are technically receiving all packets, and the game is restructuring them into the correct order based on built-in latencies for compensation, telemetry doesn't show it as packet loss or our of orders. It also doesn't show as jitter because the deltas of packets are low but the actual contents/content order, rebuilding, and compensation of the packets is where the jitter comes from, after networking.

It's common when you get peeked or peek someone the server sends more packets for that burst of activity. This seems to be when desync mostly kicks in with erratic fast moving enemies, stutters, rubber banding, missed shots and delayed kills. So imagine someone peeks you so the server bursts 5 packets for a few ticks. Now imagine half those packets don't get received. Your client notifies the relay of the packets it did receive, relay says "ok you didn't receive packets a, b and c, I'll package those into the next tick that passes through me to be resent". What you would expect from this is stuttery enemy movement as they appear around the corner. But with extra buffering to compensate what you'd actually see if the enemy peek smoothly, just faster because now they need to catch up to their old position. You'd also see shots mistimed to movement, running and gunning. Combined together it looks like you're getting running prefired with inhuman reactions/insane peekers advantage, and because this is being caused by retransmission, the states you see never occured that way in the simulation on the game server, meaning your hit reg is going to be screwed up too because the server can't lag compensate accordingly.

My issues started in CSGO in 2015 right before they did the reanimated update (started in Operation bloodhound). This is also exactly when the widespread choke problem started for a lot of players but not for everyone, which I believe was caused because of the now inflated packets being sent and increased rate to handle the new animation system, which they were most definitely testing on the server side before they rolled it out as a patch as with Operation bloodhound this is when you started seeing all the animation anomalies. Enemies teleported around corners in a single frame, ragdolls were jittering through meshes but not solid geometry/bsp due to disagreeing server and client side collision models, the new animation systems hit capsules in the server side while the client side was still running the old hit box system. This is also when you started seeing third party ragdolls corrected to the server side position when killed which was inherently part of the new animation and lag compensation system that hasn't yet been rolled out. That came out months later, in September of that year I believe.

We saw choke in the net graph at this time because there were no systems in place to compensate for it. I believe these systems were added in 2017 where they released a patch with a note in it somewhere along the lines "fixed choke for some users, particularly on dsl connections". The choke went away with this patch, peekers stopped teleporting around corners but now what we had instead was the Ferrari peek insane inhuman peeks and shitty hitreg, aka, desync.

So I think 2017 was their first iteration of mitigating, not fixing, a very common problem causing choke, which many people still suffer with to this day and it's just masked so you don't see any actual indication of it in the telemetry.

Another thing supporting this is that after this patch you could force choke with clumsy and netgraph just wouldn't report it even though you 100% knew you had it, because you were forcing it. You could force like 50% loss and not see any indication of packet loss whatsoever in gameplay. Your own movement, enemy movement all still looked smooth, as in not stuttery or teleporting, just moving outside of game mechanics. The only indication was huge variation in the server response for hits, some could be instant some could take half a second. This is direct evidence that even though there was huge packet loss, somehow packets were still getting through but heavily delayed which suggests crazy lag compensation and retransmission. Once you forced about 75%+ loss this is when you would suddenly start teleporting all over the map and everything went to shit, showing there was some very high packet loss threshold before compensation just outright turned off.

You can still force packet loss in cs2 with clumsy and not see it in the telemetry but the threshold does seem to be much lower now. You will see packet loss in the steam overlay but not in the in game telemetry and not as much as you know you've forced in the SDR stats.

I think the fix for networking issues is to make sure packet sizes never exceed the max routable size ensuring a single packet per tick.

spkii
Posts: 115
Joined: 27 Oct 2020, 19:59

Re: Counter-Strike 2 Issues

Post by spkii » 31 Jan 2025, 09:54

This you are saying not only happens at CS2, it happens too with other games (Valorant, Marvel Rivals, etc...). Its a network problem at all.

andreeeeee-
Posts: 18
Joined: 23 Dec 2022, 05:59

Re: Counter-Strike 2 Issues

Post by andreeeeee- » 01 Feb 2025, 04:17

BumFlannel wrote:
31 Jan 2025, 05:11
In response to some posts. This is going to be very long, it's based on a decade of observation and testing in CS.

CS2 like CSgo uses 1200mtu/max routable. Packet sizes can be larger than this due to packet headers. I forget the exact size but they max around 1330 or 1350 bytes with headers I think.

CS2 and CSgo of the last few years sends way too much data for the type of game it is. Fletcher Dunn admitted CS2 sends too much data because of the unoptimized networked anim graph which wasn't used in CSGO, and they are working to fix it, but it's a long job. This was about a year ago. However, CS2 doesn't really send that much more data compared to CSgo in its later years so I really don't think it's just the networked anim graph that is the issue.

In modern CSGO in a 5v5 official 64 tick server you would be receiving an average of about 86 packets per second. Some ticks you'd be receiving 2 packets because the data exceeded the max routable size, so the server needed to send 2 packets which are recombined on the client.

The issue here is that those 2 packets are sent on the same tick so pretty much at the same time/very little (0.0001ms) time between them and on route they can very easily become out of order. Valves fix for this was to add an artificial delay of 1ms to give all packets in the tick time to be delivered before being processed and recombined.

Now I don't know if this 1ms delay is total for each tick despite how many packets are sent for the tick, but I would imagine it would need to be 1ms for each packet received because on a full official DM server for example you receive on average about 140 packets per second.

Using wireshark I've seen as many as 9 packets being received in a single tick in cS2, and probably an average of about 4 packets per tick, at least half of which being full (1300+ bytes) packets. If the artificial delay was a total of 1ms for all packets to be received then if a single packet hit after that 1ms then every packet after it, outside of ones delivered out of order before it, would be classed as dropped and therefore not processed.

Csgo official DM used to send between 1 to 3 packets per tick, with large numbers on things like match start and end etc.

I believe the packets are out of order quite a lot so are being dropped but the telemetry isn't reporting it. I also believe SDR, steams own protocol, is implementing some form of retransmission to alleviate this problem but ironically makes the problem worse because it means more data has to be sent.

Because of the amount of data sent per tick being apparently too large for the type of game CS is, I believe any data lost between the relay and the client is being resent within the packets for the next tick, inflating the packets sent for that tick meaning more packets get dropped and then again the next tick has to pick that up. This would explain the excessive data sent from the server. I believe this, plus the extra latency inherently needed for lag comp to be able to handle this late/retransmitted data it what is making the game so unresponsive and inconsistent to play. And because you are technically receiving all packets, and the game is restructuring them into the correct order based on built-in latencies for compensation, telemetry doesn't show it as packet loss or our of orders. It also doesn't show as jitter because the deltas of packets are low but the actual contents/content order, rebuilding, and compensation of the packets is where the jitter comes from, after networking.

It's common when you get peeked or peek someone the server sends more packets for that burst of activity. This seems to be when desync mostly kicks in with erratic fast moving enemies, stutters, rubber banding, missed shots and delayed kills. So imagine someone peeks you so the server bursts 5 packets for a few ticks. Now imagine half those packets don't get received. Your client notifies the relay of the packets it did receive, relay says "ok you didn't receive packets a, b and c, I'll package those into the next tick that passes through me to be resent". What you would expect from this is stuttery enemy movement as they appear around the corner. But with extra buffering to compensate what you'd actually see if the enemy peek smoothly, just faster because now they need to catch up to their old position. You'd also see shots mistimed to movement, running and gunning. Combined together it looks like you're getting running prefired with inhuman reactions/insane peekers advantage, and because this is being caused by retransmission, the states you see never occured that way in the simulation on the game server, meaning your hit reg is going to be screwed up too because the server can't lag compensate accordingly.

My issues started in CSGO in 2015 right before they did the reanimated update (started in Operation bloodhound). This is also exactly when the widespread choke problem started for a lot of players but not for everyone, which I believe was caused because of the now inflated packets being sent and increased rate to handle the new animation system, which they were most definitely testing on the server side before they rolled it out as a patch as with Operation bloodhound this is when you started seeing all the animation anomalies. Enemies teleported around corners in a single frame, ragdolls were jittering through meshes but not solid geometry/bsp due to disagreeing server and client side collision models, the new animation systems hit capsules in the server side while the client side was still running the old hit box system. This is also when you started seeing third party ragdolls corrected to the server side position when killed which was inherently part of the new animation and lag compensation system that hasn't yet been rolled out. That came out months later, in September of that year I believe.

We saw choke in the net graph at this time because there were no systems in place to compensate for it. I believe these systems were added in 2017 where they released a patch with a note in it somewhere along the lines "fixed choke for some users, particularly on dsl connections". The choke went away with this patch, peekers stopped teleporting around corners but now what we had instead was the Ferrari peek insane inhuman peeks and shitty hitreg, aka, desync.

So I think 2017 was their first iteration of mitigating, not fixing, a very common problem causing choke, which many people still suffer with to this day and it's just masked so you don't see any actual indication of it in the telemetry.

Another thing supporting this is that after this patch you could force choke with clumsy and netgraph just wouldn't report it even though you 100% knew you had it, because you were forcing it. You could force like 50% loss and not see any indication of packet loss whatsoever in gameplay. Your own movement, enemy movement all still looked smooth, as in not stuttery or teleporting, just moving outside of game mechanics. The only indication was huge variation in the server response for hits, some could be instant some could take half a second. This is direct evidence that even though there was huge packet loss, somehow packets were still getting through but heavily delayed which suggests crazy lag compensation and retransmission. Once you forced about 75%+ loss this is when you would suddenly start teleporting all over the map and everything went to shit, showing there was some very high packet loss threshold before compensation just outright turned off.

You can still force packet loss in cs2 with clumsy and not see it in the telemetry but the threshold does seem to be much lower now. You will see packet loss in the steam overlay but not in the in game telemetry and not as much as you know you've forced in the SDR stats.

I think the fix for networking issues is to make sure packet sizes never exceed the max routable size ensuring a single packet per tick.
Great take, thanks. Have you shared this on /r/GlobalOffensive ?

joseph_from_pilsen
Posts: 239
Joined: 01 Apr 2022, 23:51

Re: Counter-Strike 2 Issues

Post by joseph_from_pilsen » 06 Feb 2025, 19:05

So... my issue disappeared with some night network fix about a week ago, it was some fibre node in Prague and it was replaced, so at least it doesnt lag every 10 seconds anymore. The connection no more freezes as a result.
However i noticed another thing.

Some PON fiber networks absolutelly suck! Typically the ones with long passive loops where the first active OLT unit is somewhere in total ass behind a hodgepodge mess trough plenthora of splitters and welded fibres. E. G. my 1Gbps symetrical connection goes obviously trough fibres with high attenuation having 5ms latency with another 5ms jitter to local OLT node few kilometers away and even ONT (client) unit is some piece of hot garbage looking at its almost 2ms latency on 1gbps ethernet LAN cable (my budget tp-link at other connection is way more responsive on LAN).

I have a house 150km away from Prague (and one more connection in half of the way with the same tech) connected to a local provider trough 60Ghz last mile radio backhaul to local ISP fiber network (and promised direct fibre in spring, hopefully not another connection DOWNgrade) and a prefab flat in Prague with premium 1Gbps PON Fiber (T-mobile company). Guess which connection has better ping to Prague and lower jitter lol.

CS2 after some (another) great autumn/winter patch changed something to jitter (non)smoothening because reddit is now full of complaints that their connection is absolutely unusable for cs2. Truth is that unless you have a wired connection with QUALITY fibre uplink -- not gpon looped to some ass of the city - as i just noticed), you are fuc...d. 5G? Unplayable. WiFi home? Unplayable, even at 5Ghz. Powerline? Nope. MoCA/EoC? Meh. Starlink? Forget. DSL? Jitter. GPON? Jitter.

Even 5ms jitter and 0 loss which absolutelly doesnt matter in other games, is cs2 detecting as a jitter error (the graph appears when set to "show in bad conditions only" in options) and cpu is hogged and the game runs literally at half fps with high frametime spikes here and there (frametimes go up only for about 1ms avg but the maximum frametimes go from 5-7ms level to 15ms spikes and fps are unstable even with vsync + gsync + reflex (+-whatever) on causing bad persistence and microlags). The game absolutelly lacks any independence of (aim) input from render or networking or server perf, its same shit like source 1 !!!!

Also server sided jitter is still a thing - when server has abysmal performance, the fps go down (especially minimum fps so it generates "nice numbers" like 400fps avg, but 150fps 1 percent lows) and CPU is hogged the same way like when the jitter comes from the network, it does the same - frametimes go up, performance down, at 7800X3D its playable by brute force, as the fps drop from 600fps to 300fps (except lagging masterpieces of valve creativity like map de_train, a clear winner of "worst performing map of the year"), but at mid range CPU its incredibly poor game experience (meanwhile valorant, pubg, league, overwatch... run perfectly at the same computer and internet). And yes, only at 3am the game runs PERFECTLY at perfect connection and perfect computer, because only at night the most servers have so low congestion that they dont burden the client performance.
Btw "long server ticks" below 15ms delay (which is still terrible btw) are NOT being shown with error message as the threshold is 15ms to show this error, however this doesnt mean that they dont exist at all and the server has enough performance - the small "green" jitter will still persist and slightly degrade the game smoothness because even 4-15ms tick delay (just similar to the "server variance" parameter known from csgo) is brutally impairing the game performance.


In short:

Is your connection FttB type or quality FttH fibre with 2ms jitter max? NO? Your game will lag and you cant do anything with that. Yes? go to next point.

Is your computer a beefy desktop with CPU 7800/9800X3D or 200W+ 14900K OC (with life expectancy 6 months) capable to run at least above 500avg NO? Your game will be suffering from 60hz feeling and you are f...d. Laptop: You are fu..d. Yes? go to the next point

Is the gameserver you are connecting a beefy machine? (not an obsolete 2020 xeon with weak single core perf and spectre/meltdown security downgrades installed). Ideally a modern epyc server cluster for 5v5 mode or 5+Ghz zen4 desktop aka server for high slot DM (a necessity, no efficient multicore server with low single-core perf can run DM 20+slot without lag - but thats valid since csgo). NO? Your game will lag and stutter. Yes? Wow enjoy playing, and rip to your wallet.

Post Reply