The demo feature in CS:GO is hell. I can’t imagine how it could have been designed any
worse. What you want it to be like is a movie, where you can skip through to any bit you
like -almost in an instant. But what it’s actually like is a series of ‘frames’,
called ‘ticks’. There are typically 64 of these a second. Each of these ticks documents
EVERYTHING about that moment in the game. Not just where people are stood, but also
where they’re aiming, any deployed grenades, dropped weapons, bits of debris, whether windows
are smashed, what skins are used and so on. That’s an awful lot of information. And
you can’t just jump to the tick you want- it has to scrub through them, one by one.
To ensure consistency. That’s why you aren’t able to start a new demo recording if a smoke
grenade’s active. But what this means for the demo playback
feature is that when you skip forward a round, it has to load every tick in the current round
first. Which can take 5-6 seconds. Worse still, if you go back, it CAN’T GO
BACK… so it just loads it all from the start again! That can take a bit longer.
AND, if a demo is recorded in 128 tick, that immediately doubles how many ticks it needs
to read through. As an example of how BAD this can be, in this
match last year, jumping straight to the 20th round took almost 3 MINUTES. And that’s
just for 20 rounds. Imagine there had been overtime! But even in this instance, that’s
nearly 3 minutes of me being stuck, sat there thinking the game might have crashed!
Even I, somebody who knows how to use this feature, and who has been for about 15 years…
I still get this feeling of dread when I have to load a demo. Because I know it’s going
to be fucking painful.
BUT, finally, Valve has improved it! A bit.
I always wondered: when a new round starts, why doesn’t it just immediately jump to
that and go from there? It’s not like anything needs to be remembered because the entire
level has been reset! Seems this new update doesn’t go quite that far.
It’s only available in beta mode for now. And if you don’t think it matters to you,
the chances are it won’t. Instead of changing how demos play, it just adds keyframes to
the ones you watch. To enable this feature, not only must the
game be running in beta mode, but you need to type into the console the command, ‘demo_index
1’. With this now enabled, the first time you view the demo, it’s still as bad as
ever. But if you skip right through to the end, it will create a number of ‘replay
points’ to make it faster the next time you skip through it. I’m not 100% sure,
but it looks like it makes a point every time a new round starts, which would make a whole
lot of sense. It’s still not ideal. But it reduces the
time from 3 MINUTES to being more like… 3-5 seconds. And you can see it works for
GOTV recordings as well as standard POV ones. It memorises these points even if you reload
the demo, or restart the game! Which is odd cos it doesn’t update the demo file itself.
Instead, it’s stored in- I kid you not- DIX files, in a new folder within CS:GO’s
directory. How many it remembers likely depends on this other new console command, though
even when set to just 1 it will happily remember dozens for the demo you’re currently viewing.
I had a look at one of these DIX files and doing so gave me the second bout of PTSD I’ve
experienced today, cos back when I was 8 and viewing files on the Atari I used to think
this was a programming language that I’d need to learn if I ever wanted to make my
own game. But at least, hidden within this jumbled mess, is the name of every unique
skin and bit of debris that’s recorded. Even the sounds of chickens and whether the
sound of a grenade being equipped is being played. So it gives you an idea of the stupid
number of things that need to be remembered at every moment in a Counter-Strike match.
Why did they ship this change? Is it to help the lives of Youtubers? Or is it just to cut
down on the freeze at the start of every overwatch demo we watch? I don’t know. But I do know
the demo playback feature is still a deeply flawed system.
Don’t get me wrong- I’m happy that Valve has finally improved this, but I’m disappointed
that they didn’t go further still. What they’re doing here doesn’t fix the issue-
it merely covers it up, and you still have to endure the same first bout of suffering
before you start to reap the benefits of an optimised demo. It will REALLY help people
who heavily edit a single demo. A Going Low in CS:GO match, for instance. But it won’t
help people who just want to skip to the end of a demo to record an awesome ace or whatever.
Because they’re still going to have to load through the whole demo in the first place
to get there.
Yesterday I asked what you wanted to see from future game updates. I didn’t even consider
changes to the demo feature, but personally, this helps me more than most other changes
I can think of. This demo playback feature has been the bane of my existence since 2004.
It has consumed literally days of my life, just sat there, waiting for ticks to load.
I honestly want them to burn it all down and to build a better system. It needs it.
There are third party programs that can instantly flick to any moment in a demo. I’m sure
they make compromises, and that there might be slight discrepancies. But those programs
are still FAR more desirable than the game’s built-in feature, even with this update. I’m
still not happy with it- even with all the DIX files in the world.
But for all its flaws, the demo viewer in CS:GO shows an accurate representation of
what occurred within the match itself. The fact that Valve is so keen to avoid any discrepancies
between the match and what’s shown in the demo file could be one of two things: either
they’re too lazy to make the system better, or because they’re deathly scared of the
demo playback being anything less than a 100% accurate representation of what occurred within
the original match. Remember: the Overwatch system relies on these demos to dish out bans
to players, based on what these demos show! That’s a lot of responsibility to get it
right. So while it is a ballache to work with CS:
demo playback, even with DIX files everywhere, we can at least trust the demo to show us
what happened. If it started taking shortcuts, it could risk
displaying differences. Early viewers of yesterday’s video will
have noticed it had corrupted video clips. This was… uh, a deliberate demonstration
of what corrupt demo playback could be like. If you don’t get the information right,
the discrepancies will only get worse as time goes on, leading to a playback that’s neither
accurate nor trustworthy.
Videos work by having keyframes at the start of new sequences, and then they just shift
all that information around for as long as they can to save on filesize. The better the
encoding, the further apart these keyframes are, which means once I’ve compressed my
videos I can’t jump to any bit of it I like any more- only to the start of each new sequence.
It makes it more painful to scrub through. But it makes the filesizes so small! It just
means that- if for whatever reason the playback gets corrupted, the result is catastrophic,
and lasts for quite a while before the next keyframe can clean it up again.
There’s an entire subreddit dedicated to this effect, where they deliberately break
video files with HILARIOUS and frequently TERRIFYING results!
Have fun, and sweet dreams.