7 ms·
Lots and lots of great things in here, thank you for sharing. > At first take it might seem that getting two pieces of identical code to run the same should be
by CSMastermind 4y ago
Lots and lots of great things in here, thank you for sharing.
> At first take it might seem that getting two pieces of identical code to run the same should be fairly easy and straightforward
I found that a little funny. I would certainly not assume that. Synchronization problems are one of the scariest areas of programming in my opinion.
- hot_gril 4y agoIRL it was not simple. The game usually worked, but occasionally things would go out of sync. The biggest downside is mentioned in the article: If one person lags, everyone lags. In an 8-player game, the chance that at least one person lags was pretty high. I used to play on the Mac version of GameRanger, a small community. That was 2008, when reliable internet wasn't as common. Players had personal reputations, and those who lagged too much were often excluded from games.
- ComputerGuru 4y agoMan, this brings back memories. People fighting over char in the lobbies, some derivative of “laggy” used a slur to try and get someone you don’t like to leave the game before enough people joined, etc. fun times!
- hot_gril 4y agoWhen the game lags, the witch hunt begins, and the red ping or turtle shows on your name despite it not being your fault.
- IntelMiner 4y agoEternally immortalized in the sequel as a taunt "Sure, blame it on your ISP!" https://www.youtube.com/watch?v=HGBOeLdm-1s https://www.youtube.com/watch?v=HGBOeLdm-1s
- hot_gril 4y agoI was always confused about that taunt. It sounds like, blame your poor play on your ISP, but this is one of the few games where laggy internet doesn't affect your moves.
- IntelMiner 4y agoRed Alert 2: Yuri's Revenge was pretty similarly infamous for this If your ping in the lobby was 1000ms (effectively "timeout") or you took too long to download a map, most players would just kick you preemptively
- hot_gril 4y agoIn AoE2 custom scenario lobbies like CBA, people would often see the file transfer as an indicator that you're a n00b since you didn't already have the scenario, and you'd get kicked. "Bro I'm just playing on my other iMac G3!" kick
- reitzensteinm 4y agoThat's not intrinsic to this style of netcode, though. Company of Heroes, for instance, just keeps the game running and your input is delayed until you can communicate it to the server. You'd generally want an authoritative server to accomplish this. Having it also execute the inputs prevents most cheating, too.
- Emjayen 4y agoIt is, in fact, inherent to this model. While there will be some tolerance threshold as to how far behind in the simulation a machine may fall, it still must be rather conservative (generally a few seconds), as elsewise the context (state-) sensitive inputs start frequently failing -- if I issue a command given at world-state time t, will it be meaningful/valid at state t2? The answer is where you get your threshold and it's always just a conservative approximation.
- reitzensteinm 4y agoIf it's not valid, just throw it out! I've built and licensed a time traveling variant of this model (GGPO style) and spent years with thousands of concurrent users playing my games. And they operated just as I describe. Company of Heroes is more of a traditional AoE style and will happily queue up unit orders for a minute or more while it attempts to reconnect or catch up.
- Emjayen 4y agoAre these players interacting in any way? If they aren't then it could be more tolerable, but one player being more than several seconds behind others is going to lead to a rather undesirable experience, especially in the middle of a battle (and having most of their commands dropped due to being invalid equally so)
- reitzensteinm 4y agoGiving the undesirable experience to one player is strictly superior to giving it to all of them. There just aren't many modern multiplayer games where slow players can negatively impact the experience of others, and that's because the industry has learned how terrible the experience is. And that's for players playing in good faith on bad connections - abuse by inducing latency was a big thing in the past. Think a player that runs out the clock when they're a move away from being checkmated. Basically the only time you'd ever want to operate the system to pause if a player fell behind is during a tournament, where fairness is more important than player experience and they know that going in. And even that, IMO, is questionable.
- hot_gril 4y ago(Want to add, I'm not complaining about the engineering. This simple approach totally made sense for a late-90s RTS without dedicated servers, continuous patches, or high system requirements. And it held up impressively well considering all that.)