18 ms·
How do video games stay in sync?
- travisgriggs 4y agoThis reminded me of some of the stuff that went into TeaTime in Croquet-OS (https://en.wikipedia.org/wiki/Croquet_OS https://en.wikipedia.org/wiki/Croquet_OS)
- chillpenguin 4y agoI don't know if you have seen, but the old Croquet team is back: https://www.croquet.io/ https://www.croquet.io/
- porkbrain 4y agoRelated interesting read: 1500 Archers on a 28.8: Network Programming in Age of Empires and Beyond https://www.gamedeveloper.com/programming/1500-archers-on-a-28-8-network-programming-in-age-of-empires-and-beyond https://www.gamedeveloper.com/programming/1500-archers-on-a-...
- jamesu 4y agoSpeaking of networking older games, I think the "TRIBES Engine Networking Model" is also an interesting read. Managing ~128 players over the internet in a single game back in the late 90's was no mean feat. A lot of these kinds of optimizations are still greatly applicable even today! https://www.gamedevs.org/uploads/tribes-networking-model.pdf https://www.gamedevs.org/uploads/tribes-networking-model.pdf
- y-c-o-m-b 4y agoI'm a Tribes 1 and 2 vet. I think the largest games I played were still capped at 64 people. It was definitely some impressive network code, for sure. Latency was still a huge issue, but what really helped that game out was the fact that it basically required being able to accurately predict everything yourself. You constantly had to predict how high up you could jetpack, when to initiate the jetpack, where you should land on a slope, where you should jump from, where to shoot "ahead" to get "mid-air" shots (shooting people in the air as they're jetting past you at incredible speeds). This act of priming oneself to the game's fast-paced environment made the latency far more tolerable than it probably would have been.
- swyx 4y agoCan't read it, ran out of free medium dot com articles.
- kencausey 4y agoOpen in Private/Incognito mode?
- andai 4y agohttps://archive.ph/Io4BF https://archive.ph/Io4BF
- nyanpasu64 4y agohttps://scribe.rip/e923e66e8a0f https://scribe.rip/e923e66e8a0f
- Hackbraten 4y agoThank you – TIL that’s a thing!
- DarylZero 4y agohttps://github.com/iamadamdev/bypass-paywalls-chrome https://github.com/iamadamdev/bypass-paywalls-chrome
- swyx 4y agoi was on mobile :( but more to the point im trying to get self respecting developers OFF of medium
- Waterluvian 4y agoI know this might oversimplify, or perhaps is obvious to many, but when I got into amateur game dev one surprise was realizing that real-time games are just turn-based games where you don’t control the turns.
- taeric 4y agoSeems a fine way to think about things. Essentially turn based games treat player actions as a clock tick?
- deleted 4y ago[deleted]
- extrememacaroni 4y agoThey're real-time games but over the characters looms an all-powerful controlling entity (like a TurnBasedActionController object) that will only allow one character at a time to think about and execute an action. The others can do fun taunting animations but not much more.
- mikeyjk 4y agoSeems reasonable. Although I would tweak it to say you can't control when each turn ends.
- ytch 4y agoI learned it from games that porting to newer platform with faster FPS. For example, Dark Souls II runs at 30 FPS at release. Then upgrade to 60 FPS after porting to PC, but double the FPS also doubles the weapons break pace.
- jayd16 4y agoFrom seems to be guilty of this even today. Eldenring recently had a dog that did more bite damage at higher fps. I guess they're just ticking damage every frame the dog head and the player collider overlap.
- 4y ago
- reiziger 4y agoJust out of curiosity: does anyone know any real-time multiplayer game that runs the physics simulations on the server side? AFAIK, only Rocket League is doing this (and they have some good talks about it on GDC).
- bob1029 4y agoHere is the GDC talk: https://www.youtube.com/watch?v=ueEmiDM94IE https://www.youtube.com/watch?v=ueEmiDM94IE Of particular note is the fact that they run their physics loop at 120hz to minimize error.
- DecoPerson 4y agoPhysics on the server? Nearly every shooter game. Server-authoritative is the way. As per the article, the clients only predict some physics objects (requires simulation) and interpolates & extrapolates others (does not require simulation). The clients have no first authority over the server’s simulation, other than their own player inputs.
- GartzenDeHaes 4y agoMinecraft does physics and lighting on the server, although the physics model is very simplistic.
- strictfp 4y agoPhysics is also ran on the client, but the server is authoritative and can correct or override client decisions.
- Thaxll 4y agoPretty much every serious online games do it.
- antris 4y agoIf it's anything serious/competitive and has to have integrity without having trust between enemy players, the server has to run the simulations. Otherwise it would be extremely easy to cheat just by modifying the client code and memory.
- bob1029 4y agoOne elegant solution to this problem is to keep 100% of the game state on the server and to stream x264 to clients. I think if you engineered games explicitly for this use case, you could create a much more economical path than what products like Stadia offer today.
- orev 4y agoThis seems so obvious to me that I’m surprised Stadia doesn’t already do that (not having done any real reading on how it works; just making assumptions based on the marketing I’ve seen). I just assumed it was a video stream with a touch control overlay.
- milgrim 4y agoHow is that elegant? In return for easy synchronization the server has to perform ALL computations. Sounds more like brute force to me.
- addingnumbers 4y agoIt's very elegant depending on your goals. It's the ultimate DRM for games, you can't crack a game's copy protection if you can't see it's binaries. You can't data-mine the locations of valuables if you don't have the map data. You can't leak unreleased assets ahead of their marketing debut if you don't have a copy of the assets. You can't expose all the Easter eggs by decompiling if you don't have the code. With subscription and premium currency models those abilities can all be interpreted as lost revenue. The markets for people buying $400 consoles vs buying a $20 HDMI stick and a $15/mo subscription are very different. After the colossal (and to me, surprising) rise of mobile gaming I think the latter might be where the real money will be 10 years from now. They'll address the bottlenecks on the data center end. I'm pretty sure you can list a dozen problems that make it prohibitively expensive right now and for every one of them some Microsoft or NVIDIA engineer can tell you how they are working on engineering away that problem in a couple years.
- milgrim 4y agoOf course, it solves a lot of problems. But you have to pay for it by increasing the load on the servers by orders of magnitude. This makes it a brute force approach in my opinion. This is of course depending on your meaning of „elegant“, but for me this would imply to solve these issues without increasing the server load so much. Let the client decide as much as possible, but check the decisions randomly and in case of suspicious player stats. And DRM for multiplayer games should be no problem anyways? Verify the accounts or your users, but that applies to stadia like services and also the „conventional“ ones. Solving the data mining issue is another topic and yes, giving the server more authority for things that the player should be able to see might be the only way to deal with this. But maybe the server could hand out client specific decryption keys when they are needed? That would be elegant, and not just keeping all the content server-side. Game streaming services will find their place, but they address mainly the entry hurdle and not the issue of game state synchronization.
- hpx7 4y agoI've been working on my own realtime networking engine[0] and I think there are a few important points related to network syncing that are not mentioned in this article: 1) Bandwidth. The users internet can only handle so much network throughput, so for fast paced games (where you're sending data to each client at a rate of 20+ frames per second) it becomes important to optimize your per-frame packet size. This means using techniques like binary encoding and delta compression (only send diffs). 2) Server infrastructure. For client-server games, latency is going to be a function of server placement. If you only have a single server that is deployed in us-east and a bunch of users want to play with each other in Australia, their experience is going to suffer massively. Ideally you want a global network of servers and try to route users to their closest server. 3) TCP vs UDP. Packet loss is a very real problem, and you don't want clients to be stuck waiting for old packets to be resent to them when they already have the latest data. UDP makes a major difference in gameplay when dealing with lossy networks. [0] https://github.com/hathora/hathora https://github.com/hathora/hathora
- throwaway894345 4y agoHow does UDP / packet loss work with delta compression? If you’re only sending diffs and some of them may be lost or received out of order, doesn’t that break delta compression?
- forgotusername6 4y agoThe same way it works for video codecs which also send diffs over UDP. There are mechanisms to introduce redundancy in the stream, ask for retransmission, handle missing information.
- mbbutler 4y agoHow does UDP work if you're also using delta compression? I would naively expect that the accumulation of lost diff packets over time would cause game state drift among the clients.
- toast0 4y ago
- superjan 4y agoA colleage told me once that his manager went into a panic after realizing that their multiplayer game would be unplayable over the network… Unbeknownst to said manager, the debug builds all this time had a 1 second delay built in to ensure all code would be able to deal with real-world delays.
- gfodor 4y agoI’m guessing you’re simplifying - but a fixed delay like this is a good way to fool yourself, since a system built that can handle fixed latency can go to pieces in the face of jitter and packet loss.
- 10000truths 4y agoGlenn Fiedler’s Gaffer on Games is a worthwhile read for anyone who wants to dive into the technical details of networked physics: https://gafferongames.com/categories/game-networking/ https://gafferongames.com/categories/game-networking/
- dbttdft 4y agoThis article explains what every figures out when making their own engine (and basing it off guessing what other games do and reading 2 blogposts instead of diving into philosophical rabbit holes). It also misses that most games are made with frameworks/libs now that give the dev no control over what things require round trips to the server (I assume this is the explanation for that; Fortnite took 2 years to fix weapon switch lag and LoL still has round trip bugs). What immediately happens in practice with interpolation, is that every second player has a bad network connection and so you get unevenly spaced movement packets from him, and he just warps from here to there (via teleport, or smooth movement, neither of which look good or are possible in single player mode), among other problems. Interpolation also adds latency which is already a constrained area. Your game should already be designed to handle a constant rate of in and outbound packets and is broken if it sends them on demand instead of packing them into this stream of evenly paced constant rate packets. If you can't send packets for a few frames you should be punished until you switch ISPs, as opposed to you getting advantage because you teleport somewhere on the other clients's screens. The idea of "right away" is a misconception here. Since you get packets at a constant rate (which should be high enough to be displayed directly on screen), interpolation is not necessary. 60 tick is literally nothing, for a game with less than 100 players and little to no moving objects. Of course, most gamedevs are not concerned with this stuff as the framerate drops to 10 in most games if 1-6 players are on screen depending on how shit their game is. Also, client side damage is a mistake.
- oneoff786 4y agoFortnite is on Epic’s own engine so that seems a little unlikely.
- SahAssar 4y agoA great talk about this is about halo reach'es networking: https://www.youtube.com/watch?v=h47zZrqjgLc https://www.youtube.com/watch?v=h47zZrqjgLc I haven't seen it in a few years (re-watching it now), but IIRC they talk about how they do forecasting of things like shielding, grenade throws but need to reconciliate state after.
- ivansavz 4y agoThis is pretty well explained, and the visualizations make it understandable. An example of a netcode that does "prediciton" and "rollback" is GGPO, which is used in fighting games: https://en.wikipedia.org/wiki/GGPO https://en.wikipedia.org/wiki/GGPO I believe a version of this is what runs in fightcade2 (see https://www.fightcade.com/ https://www.fightcade.com/), which is the best fighting experience I've ever seen. I can play against people all the way around the world, and it still works. Very impressive, and highly recommend to anyone in Gen X or Y who grew up on street fighter.
- robwwilliams 4y agoWhat a great article! For those of you interested in cognition, our brains have almost precisely the same problem of temporal delay and prediction. Each of many sensory-motor systems has about 50 to 150 milliseconds of jitter and offset. And the jitter and offset in timing depends on many factors—-intensity of the stimulus and your state of mind for example. How does the brain help “consciousness” create an apparently smooth pseudo-reality for us from a noisy temporal smear of sensory (sensory-motor) input spread out over 100 milliseconds or more? It is damn hard, but the CNS plays the same games (and more) as in this great Medium article—interpolation, smoothers, and dynamic forward prediction. Just consider input to your human visual system: color-encoding cone photoreceptors are relatively fast to respond—under 30 msec. In contrast, the rod photoreceptors are much slower integrators of photons—up to 100 msec latencies. So even at one spot of the retina we have a serious temporal smear between two visual subsystems (two mosaics). It gets much worse—the far periphery of your retina is over a centimeter from the optic nerve head. Activity from this periphery connects slowly over unmyelinated fibers. That add even more temporal smear relative to the center or your eye. And then we have the very long conduction delays of action potentials going from retina, to first base—the dorsal thalamus—, and then finally to second base—the primary visual cortex at the very back of your head. That is a long distance and the nerve fibers have conduction velocities ranging 100-fold: from 0.3 meters/sec to 30 meters/sec. The resulting input to layer four of your visual cortex should be a complete temporal mess ;-) But it isn’t. What mechanisms “reimpose” some semblance of temporal coherence to your perception of what is going on “out there”? Neuroscientist do not spend much time thinking about this problem because they cannot record from millions of neurons at different levels of the brain. But here is a good guess: the obvious locus to interpolate and smooth out noise is the feedback loop from visual cortex to dorsal thalamus. I mentioned the dorsal thalamus (formally the dorsal lateral geniculate nucleus) as “first bade” to visual system input. Actually it get 3X more descending input from the visual cortex itself—a massive feedback loop that puzzles neuroscientists. This huge descending recurrent projection is the perfect Bayesian arbiter of what makes temporal sense. In other worlds the “perceiver”, the visual cortex, provides a descending feedback to its own input that tweak synaptic latencies in dorsal thalamus to smooth out the visual world for your operational game playing efficacy. This feedback obviously cannot remove all of the latency differences, but it can clean up jitter and make the latencies highly predictable and dynamically tunable, via top-down control. Quite a few illusions expose this circuitry. for more @robwilliamsiii or labwilliams@gmail.com
- sowbug 4y agoAny autonomous-vehicle engineers here? This problem seems similar, if not identical. Are self-driving cars the "clients" that predict the state of the "server" that is the real world?
- sgtnoodle 4y agoI think the analogy would be more that cars, pedestrians, and obstacles to avoid are all peers, and the real world is the network.
- jayd16 4y agoI think it's a stretch. In games you only have to deal with out of date but accurate information. In AI you have fuzzy images to interpret.
- kllrnohj 4y agoIt's very different. Games, at least FPS ones, don't actually try to predict the future at all. They just handle what are essentially sync collisions after the fact. This is why you'll find endless complaints from gamers about "dying behind a wall". Movements aren't predicted, they are instead compensated for by the server which just maintains history of where everything was in the past.
- sbf501 4y agoCarmack wrote a great article on this a decade or so ago, but now every time I search for "carmack + latency + network + games" I get millions of hits about his recent VR stuff. Thanks SEO. Anyone remember the original article?
- tines 4y agoCan always add a "-vr" term to your search.
- deleted 4y ago[deleted]
- fuckcensorship 4y agoPretty sure this is it: https://web.archive.org/web/20130305033105/http://www.altdevblogaday.com/2013/02/22/latency-mitigation-strategies/ https://web.archive.org/web/20130305033105/http://www.altdev... If not, maybe this: https://fabiensanglard.net/quakeSource/johnc-log.aug.htm https://fabiensanglard.net/quakeSource/johnc-log.aug.htm. Or maybe in this archive: https://fabiensanglard.net/fd_proxy/doom3/pdfs/johnc-plan_1996.pdf https://fabiensanglard.net/fd_proxy/doom3/pdfs/johnc-plan_19....
- sbf501 4y agoThe first one is it! Thanks!!
- bruce343434 4y agoHis #AltDevBlog posts are no longer available, maybe that has to do with it. I too could only find stuff having to do with render latency (in the context of VR).
- bombela 4y agoUnrelated to the topic. But at first the blog only contained an introduction, no content. But because others have been commenting, clearly I was missing something. I reopened the page few times. And at some point; some JavaScript I suppose?; started loading the text. How is it possible for this medium service to be so spectacularly bad? We are talking about text here... Edit: Did more test. The page updates and loads the content up to 5s after initial loading. There is no feedback. What a miserable experience.
- paraknight 4y agoI did my PhD on exactly this area (thesis on yousefamar.com, DM me if you'd like to chat about gamedev and netcode!) and optimising for cost and easy setup to support indie devs. Afterwards, when I tried to validate this as a product (libfabric.com) I realised that I'm trying to solve a problem that nobody has, except for a very small niche. The main problem that developers of large-scale networked games have is acquiring players. They use whatever existing service+SDK (like Proton) for networking and don't think about it. Once they have good traction, then they can afford scalable infrastructure that others have already built, of which there are many.
- mLuby 4y agoGood point about the niche problem. It reminds me of freemium pricing where for low volume the service is free but above a threshold (when customers can typically afford to pay) it gets expensive. It'd be nice to some global service to host your game servers controlled by a single slider linking ping to price. With the slider at its cheapest end, there's only one server and it's in the cheapest datacenter. At the most expensive end, there are servers all over the world linking players as locally as possible.
- aerovistae 4y agosidenote, but: > To keep that in perspective, light can barely make it across the continental united states in that time that is not true
- jayd16 4y agoSeems correct to me although they took the longest distance from Florida to Washington. 2800miles / c = 15ms
- forrestthewoods 4y agoOnce upon a time (2011) I wrote a blog post about Supreme Commander’s netcode. https://www.forrestthewoods.com/blog/synchronous_rts_engines_and_a_tale_of_desyncs/ https://www.forrestthewoods.com/blog/synchronous_rts_engines... SupCom was a pretty classic synchronous + deterministic system. It’s a pretty major PITA and the next RTS I worked on was more vanilla client-server.
- DonHopkins 4y agoIn the earlier discussion about how you should not use text pixelation to redact sensitive info, I wrote this about how when re-developing The Sims into The Sims Online, the client and server would get out of sync whenever a Sim would take a dump, because the pixelization censorship effect used the random number generator: https://news.ycombinator.com/item?id=30359560 https://news.ycombinator.com/item?id=30359560 DonHopkins 3 months ago | parent | context | favorite | on: Don't use text pixelation to redact sensitive info... When I implemented the pixelation censorship effect in The Sims 1, I actually injected some random noise every frame, so it made the pixels shimmer, even when time was paused. That helped make it less obvious that it wasn't actually censoring penises, boobs, vaginas, and assholes, because the Sims were actually more like smooth Barbie dolls or GI-Joes with no actual naughty bits to censor, and the players knowing that would have embarrassed the poor Sims. The pixelized naughty bits censorship effect was more intended to cover up the humiliating fact that The Sims were not anatomically correct, for the benefit of The Sims own feelings and modesty, by implying that they were "fully functional" and had something to hide, not to prevent actual players from being shocked and offended and having heart attacks by being exposed to racy obscene visuals, because their actual junk that was censored was quite G-rated. (Or rather caste-rated.) But when we later developed The Sims Online based on the original The Sims 1 code, its use of pseudo random numbers initially caused the parallel simulations that were running in lockstep on the client and headless server to diverge (causing terribly subtle hard-to-track-down bugs), because the headless server wasn't rendering the randomized pixelization effect but the client was, so we had to fix the client to use a separate user interface pseudo random number generator that didn't have any effect on the simulation's deterministic pseudo random number generator. [4/6] The Sims 1 Beta clip ♦ "Dana takes a shower, Michael seeks relief" ♦ March 1999: https://www.youtube.com/watch?v=ma5SYacJ7pQ https://www.youtube.com/watch?v=ma5SYacJ7pQ (You can see the shimmering while Michael holds still while taking a dump. This is an early pre-release so he doesn't actually take his pants off, so he's really just sitting down on the toilet and pooping his pants. Thank God that's censored! I think we may have actually shipped with that "bug", since there was no separate texture or mesh for the pants to swap out, and they could only be fully nude or fully clothed, so that bug was too hard to fix, closed as "works as designed", and they just had to crap in their pants.) Will Wright on Sex at The Sims & Expansion Packs: https://www.youtube.com/watch?v=DVtduPX5e-8 https://www.youtube.com/watch?v=DVtduPX5e-8 The other nasty bug involving pixelization that we did manage to fix before shipping, but that I unfortunately didn't save any video of, involved the maid NPC, who was originally programmed by a really brilliant summer intern, but had a few quirks: A Sim would need to go potty, and walk into the bathroom, pixelate their body, and sit down on the toilet, then proceed to have a nice leisurely bowel movement in their trousers. In the process, the toilet would suddenly become dirty and clogged, which attracted the maid into the bathroom (this was before "privacy" was implemented). She would then stroll over to toilet, whip out a plunger from "hammerspace" [1], and thrust it into the toilet between the pooping Sim's legs, and proceed to move it up and down vigorously by its wooden handle. The "Unnecessary Censorship" [2] strongly implied that the maid was performing a manual act of digital sex work. That little bug required quite a lot of SimAntics [3] programming to fix! [1] Hammerspace: https://tvtropes.org/pmwiki/pmwiki.php/Main/Hammerspace https://tvtropes.org/pmwiki/pmwiki.php/Main/Hammerspace [2] Unnecessary Censorship: https://www.youtube.com/watch?v=6axflEqZbWU https://www.youtube.com/watch?v=6axflEqZbWU [3] SimAntics: https://news.ycombinator.com/item?id=22987435 https://news.ycombinator.com/item?id=22987435 and https://simstek.fandom.com/wiki/SimAntics https://simstek.fandom.com/wiki/SimAntics
- ofek 4y agoThis is also an interesting writeup by Valve: https://developer.valvesoftware.com/wiki/Latency_Compensating_Methods_in_Client/Server_In-game_Protocol_Design_and_Optimization https://developer.valvesoftware.com/wiki/Latency_Compensatin...
- Animats 4y ago"Client side interpolation" is a term misused in the game world. It's really client side extrapolation. Interpolation is generating more data points within the range of the data. Extrapolation is generating more data points off the end of the data. Interpolation error is bounded by the data points on both sides. Extrapolation error is not bounded, which is why bad extrapolation can produce wildly bogus values. So you need filtering, and limits, and much fussing around.
- kllrnohj 4y agoWell, no, because this article is kinda mostly wrong. Prediction is almost never used. Actual interpolation, however, is. As in, interpolation between 2 known points. What you're doing there is interpolating to handle the deviation between the server tick rate (say, 60 ticks / second), and the clients actual framerate (which can easily be >100fps). But you're always interpolating between 2 server received positions, you're ~never making stuff up in the future. What actually happens in an FPS game is all clients just operate in the past. They aren't in sync at all, and don't even try to be. Rather, when the client sends something like a shot to the server, the server "rewinds time" to where everyone was ping/2 ms ago for that client & evaluates the state at that point to see if the shot would hit or not.
- Animats 4y agoAh. I'm painfully familiar with Open Simulator / Second Life clients, which really do extrapolate (although it's called "interpolation" in the code), and not all that well. There's frequent "rubber banding", where the extrapolation guessed wrong and positions snap back on the next update. My contribution to this was a sanity check against a low pass filtered value to put a ceiling on the error.
- greggman3 4y agoOne thing I don't see mentioned is basing movement of some things on a synced clock on a desktop machine open this link in multiple windows and size the windows so they are all at least partially visible at the same time http://greggman.github.io/doodles/syncThreeJS/syncThreeJS.html http://greggman.github.io/doodles/syncThreeJS/syncThreeJS.ht... they should all be in sync because they are basing the position of the spheres on the system clock. A networked game can implement a synced clock across systems and move some things based on that synced clock. Burnout 3 did this for npc cars. Once a car is hit then its position needs to be synced but before it is hit it's just following a clock based path
- elbigbad 4y agoI am not a real-time systems engineer and know very little about the tech, but do know a lot about network engineering. I was honestly kind of disappointed by this article because it seemed like the network and latency side of things was just “YOLO” and the solutions were basically “interpolate with AI” and that was it. I was hoping for more insights into solving the problems but instead feel like it was more “here are ways to make it appear that there’s no problem.” Definitely open to being wrong on this opinion.
- spinaltap 4y agoIt's crazy that blizzard games had done this in 2001 (startcraft1, diablo2 pvp, etc), and did very well
- summerlight 4y agoThere are lots of interesting (and challenging) topics in this area and those tend to be a great source of complexity. For instance, do we want to replicate the full world? Or each client will keep only partial world state? This decision will impacts literally every other aspects such as programming model, security model, game play, etc. I see a good potential for better formalization in this area. At its heart, this is literally distributed streaming system engineering with extremely wide, fluctuating variety of requirements in the name of game play first. You don't need to be 100% accurate on physics simulation but the result shouldn't diverge too much on every clients within a very limited bandwidth. You want to depict character movement as accurate as possible across every player, but their detailed status should be shared to their allies, not their opponents. Synchronization of continuous and discrete states are fundamentally different. How can we build a single, general networking model to unify those kinds of requirements without resorting to some ad hoc solution?
- kllrnohj 4y agoHonestly this is all largely a completely solved problem space. The article is just way out in left field seemingly fully oblivious to how game netcode currently works, which certainly isn't with AI prediction. Look at actual game engine docs like this one from Valve https://developer.valvesoftware.com/wiki/Latency_Compensating_Methods_in_Client/Server_In-game_Protocol_Design_and_Optimization https://developer.valvesoftware.com/wiki/Latency_Compensatin... or this one from Halo https://www.halowaypoint.com/news/closer-look-halo-infinite-online-experience https://www.halowaypoint.com/news/closer-look-halo-infinite-... But tldr is the only thing a client ever predicts is their own inputs, which of course can't really ever end up wrong later on. There's no other prediction happening (eg, the position of other players is not predicted) And then for anti-cheat/optimization purposes the server also only sends positions for enemies that could be visible soon, which is done by taping into the same map chunking logic that would be used for asset streaming. There's a ton of other great resources on this topic here https://github.com/ThusWroteNomad/GameNetworkingResources https://github.com/ThusWroteNomad/GameNetworkingResources But you'll find they all largely do the same basic thing. There's nuance in some of the rules and what state is replicated and what isn't (such as server side or client side ragdolls), but the general architecture tends to be the same. And without a fundamental shift in connectivity, seems pretty unlikely to change.
- kaapipo 4y agoWith all this in mind, how does a monitor's refresh rate matter, like, at all in games like CS:GO (e.g. 60 fps vs 120 fps)?