Counter-Strike 2

Counter-Strike 2

View Stats:
Explain subtick to me
Tell me exactly how subtick works, compared to a regular game without it

Don't link the marketing video they put out before release
< >
Showing 1-15 of 16 comments
CaptainSonic Mar 3, 2024 @ 7:55pm 
With the old system, the server would gather up everything that happened before processing it on the next tick. This would mean that everything had a short and unpredictable delay before happening, and things could happen out of order, meaning shots that were supposed to hit aren't registered.

The new system causes all of this stuff to happen instantly and in the order it happened. That's all it really is, if my understanding of it is right.
elite outsider Mar 3, 2024 @ 7:58pm 
What's the short and unpredictable delay?
CaptainSonic Mar 3, 2024 @ 8:00pm 
On a 64-tick server (64 ticks per second) it's up to 16ms. It could take longer if the server is under high load.
Last edited by CaptainSonic; Mar 3, 2024 @ 8:01pm
elite outsider Mar 3, 2024 @ 8:06pm 
Okay, but that's not unpredictable, that's just the server's tickrate. The server still evaluates the inputs each time it ticks, but it just 'rolls them back' to apply at the time they happened, right?

For example say we have 2 ticks at time A and B, I shoot in between A and B (at C). When the server processes tick B, it winds back players' movements to time C and applies my input shot.

Do you agree that the 16ms is the rate at which the server tells my client where people are and which animation frames to play on them? So, for example, they might shoot and have it apply on me at "the correct time", but they couldn't see me to take the shot yet (prefiring)..? So I might see them appear from behind a corner after they have shot me, according to the server and their client (which are both 'correct')

Imagine if the server tickrate was even lower - 4 ticks per second. All the players' inputs are applied at the right backdated times, but it takes a minimum of 250ms even on LAN for my client to get new player positions and show them.

Basically I'm looking for a clear explanation from Valve with scenarios like this. Did they ever publish something like that?
Last edited by elite outsider; Mar 3, 2024 @ 8:08pm
CaptainSonic Mar 3, 2024 @ 8:26pm 
My interpretation was that if you shoot, this is immediately sent to the server, and if you're shot, that's immediately sent to you. I don't work for Valve but I think that the subtick system would be doing very little (if anything at all) if it works the way you're describing. Personally, hit registration has been way better since CS2 but I think people are expecting things from it that it can't achieve.
elite outsider Mar 3, 2024 @ 8:38pm 
You can't send anything instantly, though. It always takes your latency time to reach the server, then the server applies it the next chance it gets (next server frame). It might apply the input at the correct backdated time, but it still has to receive the input and then apply it (causality, arrow of time etc). Then it sends out the result (you died, you took a step, he took a step, he's here now moving at 200ups, etc).

For example, if I have 60ms ping it means 4 server frames will pass between when I click and when my input arrives on the server. The server sees that I actually shot at time A even though it's on "A+4 ticks", it also sees someone else shot at "A+2ms" but that my shot killed them first, so theirs isn't run and I win. So it can let you resolve conflicts "in between ticks" (hence the name), but it can also evaluate things that not all the players have had a chance to see yet (via animations/positions and speeds of players).
CaptainSonic Mar 3, 2024 @ 8:45pm 
Originally posted by elite outsider:
You can't send anything instantly, though. It always takes your latency time to reach the server, then the server applies it the next chance it gets (next server frame). It might apply the input at the correct backdated time, but it still has to receive the input and then apply it (causality, arrow of time etc). Then it sends out the result (you died, you took a step, he took a step, he's here now moving at 200ups, etc).

For example, if I have 60ms ping it means 4 server frames will pass between when I click and when my input arrives on the server. The server sees that I actually shot at time A even though it's on "A+4 ticks", it also sees someone else shot at "A+2ms" but that my shot killed them first, so theirs isn't run and I win. So it can let you resolve conflicts "in between ticks" (hence the name), but it can also evaluate things that not all the players have had a chance to see yet (via animations/positions and speeds of players).
It probably relies on timing information from the client to determine what happened first. I believe that's the bulk of subtick. I think the two big ideas of subtick are to process events based on what actually happened first (instead of who has the lowest latency) and to remove the delays caused by the tick system. "What you see is what you get" is highly ambitious of Valve though, because higher-latency players will always have more outdated information and their actions won't always be able to take place. Subtick is more fair than what we had before but it can't solve latency.
Last edited by CaptainSonic; Mar 3, 2024 @ 8:46pm
CaptainSonic Mar 3, 2024 @ 8:49pm 
Originally posted by CaptainSonic:
It probably relies on timing information from the client to determine what happened first. I believe that's the bulk of subtick
Or maybe I have it wrong and all it does is prevent the tick system from creating delays and jittering. Because if you die and *then* send the information that you killed another player, subtick won't fix that.
Advokaiser Mar 3, 2024 @ 8:50pm 
Originally posted by elite outsider:
Okay, but that's not unpredictable, that's just the server's tickrate. The server still evaluates the inputs each time it ticks, but it just 'rolls them back' to apply at the time they happened, right?

For example say we have 2 ticks at time A and B, I shoot in between A and B (at C). When the server processes tick B, it winds back players' movements to time C and applies my input shot.

Do you agree that the 16ms is the rate at which the server tells my client where people are and which animation frames to play on them? So, for example, they might shoot and have it apply on me at "the correct time", but they couldn't see me to take the shot yet (prefiring)..? So I might see them appear from behind a corner after they have shot me, according to the server and their client (which are both 'correct')

Imagine if the server tickrate was even lower - 4 ticks per second. All the players' inputs are applied at the right backdated times, but it takes a minimum of 250ms even on LAN for my client to get new player positions and show them.

Basically I'm looking for a clear explanation from Valve with scenarios like this. Did they ever publish something like that?

Hmm, I think a lot of what you're describing actually had to do with ping rather than tickrate. In my understanding, the ping is the delay between each individual client compared to the server (which would explain the "prefiring" scenario you just described), while tickrate determines how often a bunch of specific actions will take place in the next tick.

So, let's say, if we had an exaggerated tickrate of 1 tick every 10 seconds, then that would mean that every single input that happened inbetween those 10 seconds would not take place until the 10-second mark, so if person A took a shot in the first second, person B took a shot in the fifth second, and C on the eighth second, every single shot would be fired at the same time when it reached the next tick (at the 10-second mark), so it wouldn't actually matter how fast you took a shot inbetween a tick, but rather how many shots were fired in that time lapse regardless of time order.

A subtick would eliminate all that entirely...

Correct me if I'm being delusional, lol.
elite outsider Mar 3, 2024 @ 8:53pm 
Yeah, I agree it seems like it uses a time contained in the client inputs to perform the backdating (probably with some logic to see how trustworthy/causal that time is .. since you don't want to trust client inputs too much, see the recent bug fix about "jumping higher on low client fps")

If the server has a slow frame (or a couple slow frames), the time delay *before* applying a backdated input *and before* telling me about the result is even longer. Maybe that's how the awful looking situations work..

Originally posted by Advokaiser:
A subtick would eliminate all that entirely...

Yeah, I agree completely. But wouldn't it be nice to have some higher tickrate servers, just to get updated animations/positions sooner? Keep subtick but don't use it as an excuse to have cheap low tickrate servers, in other words....

People are playing on 120, 144, 240Hz+ monitors but receiving players' positions at 64hz maximum. That's garbage!

Originally posted by CaptainSonic:
Subtick is more fair than what we had before but it can't solve latency.

I guess my complaint is that subtick+128hz is more fair than subtick+64hz too, even if latency is still kept the same for everyone.
Last edited by elite outsider; Mar 3, 2024 @ 9:04pm
LeMonKy Mar 3, 2024 @ 10:07pm 
Originally posted by elite outsider:
but it just 'rolls them back' to apply at the time they happened, right?
You managed to explain subtick yourself. In subtick the inputs have a timestamp. You click, the server receives the tick, sees you clicked in between ticks, checks where your aim was at that point, and tick, enemy was hit.

In non-subtick if you click between ticks, the server does not wind back inputs. Click, wait until tick, check where mouse is at the end of tick, and enemy was missed.

So subtick inputs have a timestamp in between ticks as well, they just get sent to the server on the next tick. Regular tick inputs do not have timestamps, so every calculation happens for the time at the tick.
elite outsider Mar 4, 2024 @ 9:06am 
Very good video. Is it actually true that higher client (render) fps makes the subtick times sent by the client more accurate? Not sure if we can really know without Valve disclosing that...

(wouldn't it heavily bias the game for very high fps clients? right at a time when everyone's performance is tanking from new shaders etc?)

also note who made that video..
Last edited by elite outsider; Mar 4, 2024 @ 9:28am
elite outsider Mar 4, 2024 @ 9:12am 
So I guess my conclusion remains the same - subtick makes the server more accurate about judging where you shot with each input, but 64tick makes it so what you see (to decide whether to shoot) is less accurate than with a higher tickrate. Seems like both are important!
subtick system is build over the 64 base tick...

Subtick is about move and shoot, while the rest is processed at 64 tick

More fps means the game have more data in 1sec window, means more precision, lower input lag too
< >
Showing 1-15 of 16 comments
Per page: 1530 50

Date Posted: Mar 3, 2024 @ 7:42pm
Posts: 16