{"id":1089,"date":"2024-01-18T14:46:23","date_gmt":"2024-01-18T19:46:23","guid":{"rendered":"https:\/\/wcarss.ca\/log\/?p=1089"},"modified":"2024-01-18T14:57:20","modified_gmt":"2024-01-18T19:57:20","slug":"link-dump-distributed-systems-and-video-games","status":"publish","type":"post","link":"https:\/\/wcarss.ca\/log\/2024\/01\/link-dump-distributed-systems-and-video-games\/","title":{"rendered":"Link dump: distributed systems and video games"},"content":{"rendered":"\n<p>I googled &#8220;distributed systems masterclass&#8221; on a lark today, and ran across a nice looking free course (no affiliation), and it got me on a bit of a roll for related content. I found some new stuff and I dredged up some old favourites. Once I had those, I began writing an email to link it to some friends and I thought: why not put that in public!<\/p>\n\n\n\n<p>So here&#8217;s a little bag of links. It&#8217;s kind of videogame focused, and I should note up front I have not watched\/interacted with all of this yet; there&#8217;s some inline notes about what I&#8217;ve actually engaged with. <\/p>\n\n\n\n<p>(All of these links are set to &#8216;open in a new tab&#8217;, because I personally want to destroy your productivity.)<\/p>\n\n\n\n<ul><li>The course I just found: <a rel=\"noreferrer noopener\" href=\"https:\/\/www.distributedsystemscourse.com\/\" target=\"_blank\">https:\/\/www.distributedsystemscourse.com\/<\/a> &#8212; the topics look interesting and like a decent mix of intermediate subjects, and the actual content seems well made at a glance, and it&#8217;s free! This seems like a rare find to me.<ul><li>I jumped right to checking out the video for <a rel=\"noreferrer noopener\" href=\"https:\/\/www.youtube.com\/watch?v=GX4595KeZyc&amp;list=PLOE1GTZ5ouRPbpTnrZ3Wqjamfwn_Q5Y9A&amp;index=11\" target=\"_blank\">How Counterstrike Works (a.k.a. Time in Distributed Systems)<\/a>, which really got my goat on its mix of topics. It looks like it&#8217;s got some actual meat to it, but it isn&#8217;t some 3 hour outing in the minutiae of one project or a textbook chapter.<\/li><\/ul><\/li><li>The classic Leslie Lamport paper, <a rel=\"noreferrer noopener\" href=\"https:\/\/lamport.azurewebsites.net\/pubs\/time-clocks.pdf\" target=\"_blank\">Time, Clocks and the Ordering of Events in a Distributed System<\/a> (PDF), which I have tried and struggled to read a few times in the past, because (if I recall correctly) I got bogged down in the formal bits. I found <a rel=\"noreferrer noopener\" href=\"https:\/\/mohitkarekar.com\/about-computing-systems\/posts\/paper-pursuit-4-time-clocks-and-the\/\" target=\"_blank\">this blog article<\/a> today when googling the name of the paper, which is a kind of &#8220;reading the paper guide&#8221;. It has some summary content and has been quite readable so far. I&#8217;m hoping it will help me form a useful mental image to take back to the actual paper and hold in mind when working through the formal details.<\/li><li>Leslie Lamport&#8217;s <a rel=\"noreferrer noopener\" href=\"https:\/\/lamport.azurewebsites.net\/pubs\/pubs.html\" target=\"_blank\">website<\/a> &#8212; holy<em> moly<\/em>! How have I never been here? There&#8217;s <em>so<\/em> much commentary here, beyond the riches of the list of papers he&#8217;s hosted for direct access. What a trove.<ul><li>Indenting for a brief aside: I&#8217;ve always been a sucker for commentary. In the many Asimov essay paperbacks we had around the house growing up, I far more enjoyed the little snippets of preamble and afterword commentary he&#8217;d include than the essays themselves. I felt those bits were treats doled out in exchange for traversing the real content. Asimov would finally stop <em>teaching<\/em> me for a moment to <em>talk<\/em> to me, and so much life and personality would jump out and bind flesh to the essay&#8217;s bones by opening a keyhole view to the living essayist behind the curtain. His tone in the essays was always personable, but those extra bits let me imagine Asimov as a human I could know, and let me connect to the content as if it were from a friend. I should find some of those books.<br><br>(&#8230; how better to show I&#8217;m a dilettante without <em>saying<\/em> &#8220;I&#8217;m a dilettante&#8221; &#8212; anyway!)<\/li><\/ul><\/li><li>The classic &#8220;<a rel=\"noreferrer noopener\" href=\"https:\/\/www.gamedeveloper.com\/programming\/1500-archers-on-a-28-8-network-programming-in-age-of-empires-and-beyond\" target=\"_blank\">1500 Archers<\/a>&#8221; article, which I read 15 years ago and keep meaning to go back to. If I recall my partner&#8217;s feelings on it accurately after she read it a year or two ago: if you&#8217;re just starting out in understanding multiplayer networking, it gives you enough to know you have no idea what&#8217;s going on and that your game does not work like this. It&#8217;s lacking in direction on how to rework an existing game to run as a deterministic discrete simulation built atop an abstraction of turns, so if you don&#8217;t already have\/know how to do that, you&#8217;re kinda boned on it helping you.<\/li><li>This amazing GDC talk, <a href=\"https:\/\/www.youtube.com\/watch?v=W3aieHjyNvw\" target=\"_blank\" rel=\"noreferrer noopener\">Overwatch Gameplay Architecture and Netcode<\/a>, which seems to be unlisted these days, where a senior Overwatch developer walks through their ECS architecture and does a bit of a deep-dive netcode presentation. The descriptions he gave of prediction and fallbacks made a lot of things settle into my mind in a way other content hadn&#8217;t previously.<\/li><li>Related, but I&#8217;ve never watched it &#8212; <a href=\"https:\/\/www.youtube.com\/watch?v=h47zZrqjgLc\" target=\"_blank\" rel=\"noreferrer noopener\">Networking the Gameplay of Halo: Reach<\/a>. This looks like a really similar kind of video to the above, but focused on netcode. I found this while wasting 30 minutes searching YouTube for the Overwatch one, and I&#8217;d like to watch this someday.<\/li><\/ul>\n\n\n\n<p>If anyone ever ends up reading this: I&#8217;d love to see your distributed systems links. No videogame networking focus needed!<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Edit: and here&#8217;s some BONUS LINKS of VARYING or UNKNOWN RELEVANCE and QUALITY<\/p>\n\n\n\n<ul><li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.youtube.com\/watch?v=U4uH1ynH3Rs\" target=\"_blank\">Open-Ended Puzzle Design at Zachtronics<\/a> (I just, I have to watch this. I need to watch this.)<\/li><li><a href=\"https:\/\/www.youtube.com\/watch?v=BxQAqADGY_k\" target=\"_blank\" rel=\"noreferrer noopener\">Deploying a Low-Latency Multiplayer Game Globally<\/a> (Deployment of this stuff at big scale sounds tough and interesting.)<\/li><li><a href=\"https:\/\/www.youtube.com\/watch?v=CuQF7hXlVyk\" target=\"_blank\" rel=\"noreferrer noopener\">Connected Games: Building real-time multiplayer games with Unity and Google &#8211; Unite LA<\/a> (looks ickily very deep in unity land, but I saw some interesting diagrams flipping through it)<\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.youtube.com\/watch?v=5JTHpkNdvYI\" target=\"_blank\">Farlanders procedural map generation &#8211; Andriy Bychkovskyi<\/a> (never played or heard of this game but I like procedural generation and I&#8217;ll always give it the time of day. Notched a clock joke there!)<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>I googled &#8220;distributed systems masterclass&#8221; on a lark today, and ran across a nice looking free course (no affiliation), and it got me on a bit of a roll for related content. I found some new stuff and I dredged up some old favourites. Once I had those, I began writing an email to link [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/wcarss.ca\/log\/wp-json\/wp\/v2\/posts\/1089"}],"collection":[{"href":"https:\/\/wcarss.ca\/log\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wcarss.ca\/log\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wcarss.ca\/log\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wcarss.ca\/log\/wp-json\/wp\/v2\/comments?post=1089"}],"version-history":[{"count":3,"href":"https:\/\/wcarss.ca\/log\/wp-json\/wp\/v2\/posts\/1089\/revisions"}],"predecessor-version":[{"id":1093,"href":"https:\/\/wcarss.ca\/log\/wp-json\/wp\/v2\/posts\/1089\/revisions\/1093"}],"wp:attachment":[{"href":"https:\/\/wcarss.ca\/log\/wp-json\/wp\/v2\/media?parent=1089"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wcarss.ca\/log\/wp-json\/wp\/v2\/categories?post=1089"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wcarss.ca\/log\/wp-json\/wp\/v2\/tags?post=1089"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}