A few points about being "Shot by ghost", this is an accepted trade-off because like you know in networking because you are dealing with latency (time) between machines that the best you can do is "hide it" by making certain trade offs. In very fast paced games like Counter-strike doing any sort of "speculation" on the world update (extrapolation) creates more inconsistency, and is not viable. Valve even experimented with this early on and turned it off because it was way too error-prone. you cannot predict what a player will do in an instant in fast paced games, but only does it in the case of packet loss because at that point the inaccuracies matter less than the loss of data, that and it has no way to interpolate between two last known positions. Valve also solves this by increasing the amount of interpolation delay by ticks (3 packets) such that there is less of reason to try to "guess". That is how bad extrapolation is in a real-time, and fast paced game when the player can move any direction at any time or just stop completely. The notion of simply just using extrapolation to solve this "peekers advantage" and "hiders disadvantage" is noble but almost futile when you are "siding with the shooter" instead of the mover. trade-offs must be made when dealing with time... networks need to just be faster :(
Fascinating -- thank you for the inside peek! (As you can probably tell, I have no insider experience here -- I was merely using what I could learn from reading public stuff, and combining it with my experience to try and teach some ideas about time in distributed systems...)
@@DistributedSystems Absolutely! It is very thought provoking stuff indeed. Thank you for providing your knowledge and experience as a course for free! We need more computer scientists like you.
Awesome lecture. Just wanted to point out that we don't call it speculation, we call it physics interpolation in game development terminology. Similarly, we call it authoritative server architecture where one centralized server updates clients' world
Thanks! As you can tell, I've never worked in the videogame world. Good to learn the proper terminology. (I always find it fascinating how different subspecialties of CS come up with similar concepts and give them different names. This is very common between databases and operating systems -- which have a lot of conceptual overlap.)
I'm surprised these videos have such little views I've been learning I.T on my own for the last year and I'm starting my Bachelor of I.T in a couple of weeks and these videos have been a great help to have a head-start when some of these subjects eventually come up.
I think you’ve *maybe* oversimplified TrueTime a touch here (maybe necessary for the audience and who am I to tell you anyway!). TT delays operations over a drift window before committing operations as I read the paper, creating a fundamental floor on the tick cycle for an individual state machine. Essentially, it sacrifices operation frequency for network roundtrips. It’s a bit hard to disagree with this approach when you compare it to Raft alternatives of the otherwise same design like CockroachDB, particularly over the WAN. Of course, it’s even more fun to mix the methods and even diversify with them 😉😁. Great presentations!
CSPromod was way ahead of its time. In contrast to CSGO it had death prediction, which meant you had your bullet shot and kill in the same frame. In CSGO your shots are being without a delay, thus implying a prediction of some sort, but NOT when it comes to applying killing shots. There is always a delay in your frames based on your ping. On the other hand death prediction would potentially lead to situations, in which players in tense situations might perceive being denied of should-kills (in a literal resurrectional manner) as the enemy had his kills being processed earlier by the server and mutual kills are not possible. Neverless i would take death prediction any day as i lose less time on verifying kills and sudden ressurections at least imply, you wouldve hit your shot ( a feedback you wouldnt receive otherwise) Thank you for the video!
Ah yes this reminded me of my competitive gaming days. The what about the enemy / lag compensation reminds me of `frame_interpolation` or for short interp an ex_interp for you 1.5/1.6 players. ex_interp 0.1 is illegal, 0.01 is legal :)
Hi Chris, thanks in the first place for the amazing videos and effort; however, I would request you if you can give some pointers to me in terms of books, videos, articles, blogs etc as I want to start distributed computing from scratch; something like a distributed computing 101 and ahead. I would wait for your advice.
Hopefully these videos are a good start. ;-) There are zillions of papers if you enjoy reading papers. Start at conferences such as SOSP or OSDI for some of the best of them. You can learn a fair bit (assuming you can get through them, some are quite challenging) by studying papers such as Paxos Made Simple, The Byzantine Generals Problem, End-to-End Arguments in System Design, MapReduce, The Google File System, Bigtable... There are multiple class syllabuses and slide sets online. Also many excellent professors and researchers have posted talks on UA-cam. There are also multiple textbooks on the topic -- although I've not read any (so I can't tell you how good they are).
Not sure what you are asking -- are you asking if video games make use of vector clocks? Or are you asking if there are open source libraries which do vector clocks for you? Or something else?
A few points about being "Shot by ghost", this is an accepted trade-off because like you know in networking because you are dealing with latency (time) between machines that the best you can do is "hide it" by making certain trade offs. In very fast paced games like Counter-strike doing any sort of "speculation" on the world update (extrapolation) creates more inconsistency, and is not viable. Valve even experimented with this early on and turned it off because it was way too error-prone. you cannot predict what a player will do in an instant in fast paced games, but only does it in the case of packet loss because at that point the inaccuracies matter less than the loss of data, that and it has no way to interpolate between two last known positions. Valve also solves this by increasing the amount of interpolation delay by ticks (3 packets) such that there is less of reason to try to "guess". That is how bad extrapolation is in a real-time, and fast paced game when the player can move any direction at any time or just stop completely.
The notion of simply just using extrapolation to solve this "peekers advantage" and "hiders disadvantage" is noble but almost futile when you are "siding with the shooter" instead of the mover. trade-offs must be made when dealing with time... networks need to just be faster :(
Fascinating -- thank you for the inside peek! (As you can probably tell, I have no insider experience here -- I was merely using what I could learn from reading public stuff, and combining it with my experience to try and teach some ideas about time in distributed systems...)
@@DistributedSystems Absolutely! It is very thought provoking stuff indeed. Thank you for providing your knowledge and experience as a course for free! We need more computer scientists like you.
Chris, thank you so much for your public service by releasing this course for free. I'm constantly amazed at the quality.
Glad you enjoy it!
LOVE the fact that you used counterstrike as an example!
It was fun playing the game a bunch to figure it out too... :-)
This was great! Please don’t give up on making videos on this topic, you are excellent
These lectures are fantastic - can't wait for more!
Awesome lecture. Just wanted to point out that we don't call it speculation, we call it physics interpolation in game development terminology. Similarly, we call it authoritative server architecture where one centralized server updates clients' world
Thanks! As you can tell, I've never worked in the videogame world. Good to learn the proper terminology. (I always find it fascinating how different subspecialties of CS come up with similar concepts and give them different names. This is very common between databases and operating systems -- which have a lot of conceptual overlap.)
Yeah I get it, that is why I am here to learn these concepts :)
Great video, please know that people like me really appreciate your videos, and please don't give up on doing your courses.
Thanks!
I've not given up -- just multitasking as a stay-at-home dad. (And it turns out these videos take a while to get right.)
Distributed Systems Course (www.distributedsystemscourse.com) Good to hear :) I cant wait to watch the rest of the course, you are a great teacher!
Came from 3kliksphilip, great video! Also, I think one potential issue with sharing the keystrokes p2p is DOS attacks against other players.
I'm surprised these videos have such little views I've been learning I.T on my own for the last year and I'm starting my Bachelor of I.T in a couple of weeks and these videos have been a great help to have a head-start when some of these subjects eventually come up.
Best of luck!
Thank you Chris for all your hard work preparing such excellent series of videos. I've learn a lot !
Thank you!
thank you for creating this series
No problem!
I think you’ve *maybe* oversimplified TrueTime a touch here (maybe necessary for the audience and who am I to tell you anyway!). TT delays operations over a drift window before committing operations as I read the paper, creating a fundamental floor on the tick cycle for an individual state machine. Essentially, it sacrifices operation frequency for network roundtrips. It’s a bit hard to disagree with this approach when you compare it to Raft alternatives of the otherwise same design like CockroachDB, particularly over the WAN. Of course, it’s even more fun to mix the methods and even diversify with them 😉😁. Great presentations!
Thank you very much for interesting material. I like the way you present it
So nice of you. Thank you!
Very great lecture. Much recommended..
Many thanks
Awesome that these are still ongoing!
CSPromod was way ahead of its time. In contrast to CSGO it had death prediction, which meant you had your bullet shot and kill in the same frame. In CSGO your shots are being without a delay, thus implying a prediction of some sort, but NOT when it comes to applying killing shots. There is always a delay in your frames based on your ping. On the other hand death prediction would potentially lead to situations, in which players in tense situations might perceive being denied of should-kills (in a literal resurrectional manner) as the enemy had his kills being processed earlier by the server and mutual kills are not possible. Neverless i would take death prediction any day as i lose less time on verifying kills and sudden ressurections at least imply, you wouldve hit your shot ( a feedback you wouldnt receive otherwise)
Thank you for the video!
Huh, I'd not heard of CSPromod before. Fascinating. Thanks for the pointer!
One word: Awesome!
Thank you!
Nice series! Can't wait for more!
Thanks! Working on it now!
23:39 where we can find those paper? I can't find them...
Amazing lecture, very engaging :)
Glad you liked it
Awesome lecture and explanation, thanks !
Great video! Also, I am glad to know that you are the creator of binary bomb! That is fantastic, I really enjoyed it, haha!
Good to hear, thanks!
Thank you please keep uploading
Yes, totally agree. Great video, thank you very much.
Very good video!
This was a great talk, thanks for sharing!
Please create more such video on distributed systems.
I'll do my best. ;-)
Ah yes this reminded me of my competitive gaming days. The what about the enemy / lag compensation reminds me of `frame_interpolation` or for short interp an ex_interp for you 1.5/1.6 players. ex_interp 0.1 is illegal, 0.01 is legal :)
Hi Chris, thanks in the first place for the amazing videos and effort; however, I would request you if you can give some pointers to me in terms of books, videos, articles, blogs etc as I want to start distributed computing from scratch; something like a distributed computing 101 and ahead. I would wait for your advice.
Hopefully these videos are a good start. ;-)
There are zillions of papers if you enjoy reading papers. Start at conferences such as SOSP or OSDI for some of the best of them. You can learn a fair bit (assuming you can get through them, some are quite challenging) by studying papers such as Paxos Made Simple, The Byzantine Generals Problem, End-to-End Arguments in System Design, MapReduce, The Google File System, Bigtable...
There are multiple class syllabuses and slide sets online. Also many excellent professors and researchers have posted talks on UA-cam. There are also multiple textbooks on the topic -- although I've not read any (so I can't tell you how good they are).
Thanks for the video. Is there any implementation of vector clock?
Not sure what you are asking -- are you asking if video games make use of vector clocks? Or are you asking if there are open source libraries which do vector clocks for you? Or something else?
Great video, thanks! Also, can we use game ticks instead of number for logical keystrokes timer? e.g. ticks from the start of each round
can you do Consistency and Replication??
I'm hungry for more!
Me too! I mean... I'm working on it, hope to have something to release soon. ;-)
12:55 - Reminds me of Westworld
Can you do a video about leader election algorithms? This channel is great!
Thanks! I'll add it to my list of potential topics. :-)
Holy shit, the getting shot after already being behind cover makes so much sense now!
Sadly you can't send packages directly, because of IP leak. only through relays
3kilksphilip was here
So you mean there are movements from other players that we don´t actually see because the system doesn't consider it necesary or game changing.
What's your rating in the game? 😀
nice...
looks like Valve will be changing how the tick system works with the new port to the source 2 engine:
ua-cam.com/video/GqhhFl5zgA0/v-deo.html
Fascinating. Thanks for the link!
Rush B
Now i know why CIG with Star Citizens suucks
So ppl still play that game?