get your sh!t together devs
March 12, 2014 2:36 PM   Subscribe

 
Imma let you finish, Bennett, but multiplayer QWOP would be the best game of all time!
posted by Rock Steady at 2:54 PM on March 12, 2014 [3 favorites]


Imma let you finish, Bennett, but multiplayer QWOP would be the best game of all time!

If you've never played a game that informed you to "plug in a second keyboard for best results", you haven't lived.
posted by Copronymus at 2:59 PM on March 12, 2014 [2 favorites]


This is a great article. It reminds me of when I played Ibb and Obb with a friend. We first did online multiplayer, which was alright, but we ran into lag issues. The game is pretty timing sensitive and ultimately it became too annoying. Later, we tried local multiplayer instead. Moves that were hard online became much easier and also more fun. What's interesting is that the game, which is multiplayer by design, was originally supposed to be local-only. They decided to add online multiplayer, postponing the game's release by several months. That's a risk a lot of indies might not be willing to take, and I understand the decision by some to purposely leave online multiplayer off the table.
posted by zsazsa at 3:05 PM on March 12, 2014 [1 favorite]


This, I hear, is why Smash Bros. Brawl's online mode was so disappointing.
posted by JHarris at 3:17 PM on March 12, 2014


I'd like to see more games that offer a local peer-to-peer option for a completely different reason than discussed in the article. I totally get that people love and cherish online multiplayer modes, but I am not one of them.

I recently made an exception to my "no online multiplayer" rule to try out the last Elder Scrolls Online beta event. As a big Skyrim fan, I was desperately curious to see what it was like.

The game is pretty amazing. But also, I had only been online for about 15 minutes before some guy ran up, humped me, and ran away.

Yeah, no thanks.

Unless I can somehow restrict my gameplay to people who are at least willing to act like they are sane and reasonable human beings - whether it be by whitelist or by choosing (or setting up) a server and moderating heavily - I'll pass.

Which is too bad, because playing against other people can be fun. It's just a shame that so many other people are such uncivilized little shits.
posted by ErikaB at 3:19 PM on March 12, 2014 [8 favorites]


For me at least the problem for local multiplayer indie PC games is that the PC is generally not setup for local multiplayer. A console is usually setup on a big TV screen with a couch for multiple people to sit on and the games have big fonts that are readable from far away and all that. Whereas PC games are usually not designed around any of those assumptions. Doing local multiplayer on the PC is a bad fit in pretty much the same way that doing a really complicated RTS on a console is a bad fit.
posted by burnmp3s at 3:20 PM on March 12, 2014 [2 favorites]


I would watch twitchplaysqwop
posted by litleozy at 3:21 PM on March 12, 2014 [13 favorites]


Read the article now. That Bennett Foddy, he's good people.
posted by JHarris at 3:22 PM on March 12, 2014 [1 favorite]


I would watch twitchplaysqwop

How would you tell that from a random person playing qwop?
posted by JHarris at 3:22 PM on March 12, 2014 [5 favorites]


I would watch twitchplaysqwop

How would you tell that from a random person playing qwop?


This is what it looks like when I play QWOP, so I have no idea what you're talking about.
posted by Copronymus at 3:33 PM on March 12, 2014


ErikaB - Mefightclub
posted by vapidave at 3:40 PM on March 12, 2014 [7 favorites]


I recently made an exception to my "no online multiplayer" rule to try out the last Elder Scrolls Online beta event. As a big Skyrim fan, I was desperately curious to see what it was like.

The game is pretty amazing. But also, I had only been online for about 15 minutes before some guy ran up, humped me, and ran away.


Yet another promising adventurer retired by taking a horndog to the knee.
posted by delfin at 3:47 PM on March 12, 2014 [17 favorites]


Good article. The more I learn about video game netcode, the more I hope I never have to develop a (realtime) networked game.

Predictably, though, the comments on the article immediately devolve into the same entitled whining that prompted the author to write the article in the first place. "Sorry, but networked multiplayer just isn't realistic for certain kinds of games, and here's a detailed, thoughtful, and friendly explanation of why." "Right, but I WANT NETWORKED MULTIPLAYER, YOU STUPID DEVELOPER"

...
posted by escape from the potato planet at 3:50 PM on March 12, 2014 [9 favorites]


Thanks, vapidave, I'm a member although I haven't spent as much time there as I ought to.

Now I wish more games set it up so that I can choose to play only with Mefites, who are rad, instead of having to play against whatever random shithead decides to set up an account.
posted by ErikaB at 3:55 PM on March 12, 2014


"Sorry, but networked multiplayer just isn't realistic for certain kinds of games, and here's a detailed, thoughtful, and friendly explanation of why."
"Right, but I WANT NETWORKED MULTIPLAYER, YOU STUPID DEVELOPER"


I Am A Pony, But I Am Not Your Pony.

Good day, sir!

/dial-tone
posted by Pudhoho at 3:58 PM on March 12, 2014 [2 favorites]


That article is a great explanation of lag and lag compensation. And it's not really ever going to go away; the speed of light is a bitch. Although I think with enough servers and player density you can get it down to 50ms for a lot of players, or about 3 frames.

My current obsession is Battlefield 4. The game is a mess for a lot of reasons, but the lag compensation in the netcode is a big part of it. I don't know how they got it so wrong but the netcode is the #2 complaint after all the game crashes. The killcam is a particular indignity; the game unwisely shows you whoever killed you, often someone in an impossible position to make the shot.

I'm on rural Internet with a slow 1 megabit/sec fixed wireless link. It's plenty of bandwidth for most games which max out at one tenth that bandwidth. But I'm noticing lag in a lot of modern action games like Diablo 3 or League of Legends. My hypothesis is when the shit hits the fan they send a big burst of traffic so the momentary bandwidth spikes above my 1 Mbit. By the time the packets work the way out of the queue I've seen 200ms of lag. It's a bit implausable; the bandwidth is still 10 packets every 1/60th of a second, I'd hope that'd be enough, but since the game protocols are not documented I can't really figure it out. Really wrecks the gameplay.
posted by Nelson at 4:23 PM on March 12, 2014 [1 favorite]


This comment has an excellent rebuttal to some of the specific calls to use ggpo (multiplayer middleware used in the 2d fighting scene).

One of the rare times it pays to read the comments.
posted by megamanwich at 4:29 PM on March 12, 2014 [1 favorite]


"Sorry, but networked multiplayer just isn't realistic for certain kinds of games, and here's a detailed, thoughtful, and friendly explanation of why."
"Right, but I WANT NETWORKED MULTIPLAYER, YOU STUPID DEVELOPER"


It seems like maybe some of the commenters with that attitude took away the wrong message from the article, or only part of the message.

Because it's not just that online play would dramatically change the experience of a game like Towerfall. It's that the experience would change and the feature would be extremely difficult and expensive to implement. Getting that shit anywhere even remotely close to being in the neighborhood of right is extremely difficult, especially if you don't already have some experience writing networking code. It's not surprising that an indie developer would decide that the amount of time and money it would take to build and test the feature isn't worth it, especially since the experience will necessarily be inferior to local multiplayer.

Seems like the Polygon commenters are mostly looking at it as an artistic decision or something.
posted by my favorite orange at 4:35 PM on March 12, 2014


Most of the ggpo-type complaints also don't seem to get the difference between a cardinal-direction shooting twitch game and isomorphic RTS and fighting games, where there's a lot more leeway in terms of what direction projectiles can travel, and how you can have less obvious buffer spaces.
posted by that girl at 4:43 PM on March 12, 2014 [2 favorites]


As soon as game design shifts back to the single player the happier I'll be. If I wanted to play with other people I'd go outside.
posted by Ray Walston, Luck Dragon at 4:54 PM on March 12, 2014 [10 favorites]


I really disagree with the article. Lag hasn't been an issue for mulitplayer online games for like, a decade now?

He cherry picks a few examples, but then ignores the most played PC game on earth, LOL (and its close cousin, DOTA2) which are great examples of twitch reaction PVP gameplay done successfully over the internet. As far as I know they have no lag compensation algorithms. My connection to both DOTA2 and LOL servers are sub 30ms. Human reaction time is 300ms. It's simply not noticable! I play a lot of twitch reaction games and lag only becomes an issue at around 80ms.

I get 20ms to the local Battlefield servers in the country.

Think about it, when you're playing a console game at 30fps, each frame is 33ms. Even with the standard 30ms ping, you press a button and it's already registered before the next frame is drawn. It literally couldn't be done any quicker. Sure if you're playing at 60fps, each frame is 16ms, so theoretically you're "slow" by 1 frame, but I would bet no one could detect that one frame difference in a blind test, nor would it matter in practice.
posted by xdvesper at 4:55 PM on March 12, 2014


"... It's simply amazing that the dev couldn't understand that the lack of this simple feature is necessary in this day and age for multiplayer ..."

Simple.

Feature.

Were I empaneled, I would lean towards "not guilty" for whatever crimes charged against the developer for hiring some folks from SRL to collaborate on a machine which would kick this user in the bonch, over and over, as triggered by an online webclick. Maybe pay Bitcoins to up the force of the kick, animated .gif produced of the recipient's face.
posted by adipocere at 5:07 PM on March 12, 2014 [3 favorites]


As soon as game design shifts back to the single player the happier I'll be. If I wanted to play with other people I'd go outside.

Sorry to break it to you, but outside has changed. There's no-one there any more. I don't know why they even bother to keep the servers running.
posted by anonymisc at 5:09 PM on March 12, 2014 [7 favorites]


Unless I can somehow restrict my gameplay to people who are at least willing to act like they are sane and reasonable human beings - whether it be by whitelist or by choosing (or setting up) a server and moderating heavily - I'll pass.

MeFightClub is a gaming community of almost entirely MeFites and has a long history of ejecting people for being dickbags. There's nobody I'd rather play online with!

Lag hasn't been an issue for mulitplayer online games for like, a decade now?

If you live in a place where you can buy a good connection, and play with people who live in places where they can buy a good connection, sure.
posted by Pope Guilty at 5:16 PM on March 12, 2014 [3 favorites]


He cherry picks a few examples, but then ignores the most played PC game on earth, LOL (and its close cousin, DOTA2) which are great examples of twitch reaction PVP gameplay done successfully over the internet.

And you're forgetting/ignoring/not aware that the original DOTA was a Warcraft 3 mod, a RTS, and those sequels follow closely in its footsteps.

And they are not twitch games in the sense that real twitch games, games made from the ground up to be twitch, are. You can bet that LOL and DOTA2 are doing substantial things beneath the hood to hide their natures, things that require the experienced multiplayer development resources of a Blizzard or a Valve to implement. I'd think they use local timers and communicate that timing across the network so as to attempt to provide an objective measurement standard, figure out what "really" happens, then display that result onscreen after a slight lag. Not frame-accurate at all.
posted by JHarris at 5:20 PM on March 12, 2014 [3 favorites]


As far as I know they have no lag compensation algorithms.

Unless you've seen the source code for yourself, you're kind of talking out of your hat here.
posted by DWRoelands at 5:23 PM on March 12, 2014 [4 favorites]


If you live in a place where you can buy a good connection, and play with people who live in places where they can buy a good connection, sure.

Even then. There's a reason it's FPSes and RTSes that have become the star genres of online play, both are somewhat lag-resistant because there's strong limits to both player information and impact upon the complex game state in any given frame.

But then when I hear the words twitch game, the things I think about are like Robotron: 2084, where the relative positions of individual pixels every 60th of a second fundamentally matter many times a level. But even games like that, if played cooperatively online, are far from impossible to make, not if your prediction algorithms are good enough, because the players' don't directly interact with each other. Instead, they fight against a swarm of stupid enemies, and everyone's machines can easily determine where those will be each frame, and if an enemy kills a place in one frame, where it's determined on the next that the enemy should have been dead, it's a simple matter to keep the player alive if you just delay the death animation by an imperceptible period.

It's when players directly affect each other, frequently, on a frame-by-frame basis, that's when things get tricky, where faulty causation cascades can wreck the game state, where things you see happen on your own screen may have to be undone compared to the overall game. That's a hard problem to solve, hard in the sense of "fundamentally insoluble," so hard that developers try to cheat around it as much as possible.
posted by JHarris at 5:34 PM on March 12, 2014 [3 favorites]


As far as I know they have no lag compensation algorithms.

Dota2 runs on a modified Source engine, so it's safe to assume it uses Source engine lag compensation, especially given the netgraph and fakelag console commands discussed in the linked articles below work in Dota2.

https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
https://developer.valvesoftware.com/wiki/Lag_compensation
posted by kithrater at 5:55 PM on March 12, 2014 [2 favorites]


I think it's hilarious that xdvesper declares lag is over because of games like LoL, literally three comments after my post talking about lag in LoL. My round-trip time to the LoL servers is under 100ms and like I said I've got a fair amount of bandwidth (1Mbit/s), but it's still laggy enough I can't really play. It's not just missing the occasional skillshot, it's that people stop moving and then speed across the map in little 200ms bursts. And by global standards I've got a good link to the LoL servers. You should talk to the poor bastards in Australia. Even the East Coast of the US suffers because all the NA servers are on the west coast. That's 160ms of physics standing in the way.

This post motivated me to revisit some packet captures. LoL is unusual in being UDP based, that's a great choice because it gives developers control over what to do about packet loss and do some very sophisticated lag management. Sadly none of the protocol is documented (although see packet-lol) so it's hard to tell what's going on. And because it's UDP it's harder to measure things like round trip time and retransmits.

The UDP conversation averages 68kbps, way under the 768kbps cap I had at the time. And peaks are only 200kbps at most. It could take 250ms to send those 200kbits on my link, so if they really all had to arrive exactly at the same time then that could cause the lag I'm seeing. That seems unlikely though. I think in theory that a game like LoL should work on my link, and it does work well on another network for me. I wonder what the problem is in practice.
posted by Nelson at 6:16 PM on March 12, 2014 [2 favorites]


As far as I know they have no lag compensation algorithms.

Unless you've seen the source code for yourself, you're kind of talking out of your hat here.


I don't see why I'm being jumped on for saying "as far as I know" which is a true and honest statement. I've played DOTA1/2 for 10+ years and been active on all their forums in all that time, and no one's ever mentioned or discussed a lag compensation algorithm, ever. I've thousands of hours logged in that game, and nothing I've ever seen indicated they were messing with latency: and having played plenty of games WITH lag compensation algorithms, it's pretty damn obvious when they're messing with your inputs, and I hate it when it happens.

Just because Source has the capability to do lag compensation doesn't mean they're using it either: Valve is extremely careful to ensure DOTA2 is mechanically similar to DOTA1. The translation certainly feels very faithful. If DOTA2 had lag compensation and DOTA1 did not, you can be sure a huge shitstorm would have blown up on the forums by now. Again, nothing in the last 4 years. And again, I'm 99.999% certain the basic Warcraft 3 engine did not have any special lag compensation: the only thing they did, which can be disabled if you want, is set everyone's delay to 250ms online, regardless of your real delay, so everyone playing under 250ms had a consistent experience, without spikes or unfair advantage given to the guy with lower ping. I wouldn't really consider that a lag compensation algorithm.

I'll gladly stand corrected though, if someone can point to an example of it actually being active. It would be a very interesting discussion on the forums, especially in the ways you could exploit it to play better.

As for Nelson, hope you get your LOL issues sorted out. Sometimes it really is just having a crappy ISP, you could try finding one that gets good reviews with gamers. Any other game you have that is giving you issues? I have no issues with LOL, and I am a "poor bastard" who lives in Australia. I just play on the Sydney server. I have the cheapest internet plan available here, that's an ADSL2 line that peaks at 16mbps, and I've customized the DSLAM profile to optimize for latency. When you say the "768kbps" cap, is this the theoretical line speed, or the real world line speed? Because my line theoretically caps at out at 48mbps but I'm never ever going to get that in a 18 year old apartment building with old wiring and exchanges.
posted by xdvesper at 6:43 PM on March 12, 2014


After thinking about it a bit more it seems I am wrong. This discussion depends on what counts as lag compensation. DOTA2 definitely does interpolate frames (you can see this when you pull up the netgraph, lerp by default is 100ms and you can modify it) since the game state updates at 20 ticks per second but has to render frames to the screen at 60 frames per second. You can't render 60 frames out of 20 game states without interpolating. This can indirectly become a form of lag compensation if a "tick" is missed over the network, as the interpolation will just continue while waiting for the "tick" to arrive.

So yes, by that definition nearly all games that run a framerate faster than the server state is updated have lag compensation by default. If the author's games have a game state that updates at 60 frames per second, he would not need to do interpolation. But by extension, this would mean his game would be unplayable over the network without seriously reworking the basic code.

This would explain why no one can detect any lag in DOTA2 at 30ms ping, because a round trip between the client and the server is faster than the server ticks get updated (at 50ms)
posted by xdvesper at 6:55 PM on March 12, 2014 [1 favorite]


I can't speak to DotA2, but League has very significant lag compensation mechanisms built into it. League games are fairly playable at up to around 100 ms lag, then it seems to kind of break down. They're doing at least 2 things to compensate for lag.

First, Right clicking to move is validated by the server, but once a character has started moving the client simulates the rest of it. This occasionally creates weirdness with things like jumps and the server will have to correct the client. But this is much less jarring for League than say an FPS because the camera is entirely client side, so it never moves your camera unexpectedly.

Second, for power activations and right click attacks, the server keeps track of when the client thought they activated it, and will "go back in time" on the server to activate it at the right time. The easiest way to see this is to try and last hit on a high lag connection. It's possible (but not fun) to last hit at 250 ms ping, and I think the game may give a bit of leeway for last hitting juuuuust after the minion dies (maybe a 2 frame buffer or so).

Just because you don't notice lag compensation mechanisms when you get a 30 ms ping doesn't mean that the game doesn't have them.

PS: Network programmer, but not at Riot. Article was great, I'm going to forward it to every artist or designer at work who complains to me when I say we can't do something. It's not just game players that refuse to believe in physics :)
posted by JZig at 7:02 PM on March 12, 2014 [2 favorites]


Here's a developer post on how Dota2 interacts with Source's netcode, including an explanation as to why it doesn't need to use the prediction and lag compensation features of Source.
posted by kithrater at 7:04 PM on March 12, 2014 [4 favorites]


Good article kith, I tried to find something as technical as that for League but was unable.

Also to address the general point: You can absolutely make a game that has online multiplayer, but is only fun at pings < 30 ms. But, there's a huge risk in making that game, because reviewers and players won't understand that tradeoff, so will just think the game is broken if they have a slightly below average ISP. It's hard to decide between making online multiplayer that 50% of players will enjoy and 50% of players will hate, or not doing it at all. Both can backfire horribly.
posted by JZig at 7:10 PM on March 12, 2014


I don't see why I'm being jumped on for saying "as far as I know" which is a true and honest statement.

Some true and honest statements are ignorant and useless.
posted by LogicalDash at 7:15 PM on March 12, 2014 [3 favorites]


Some true and honest statements are ignorant and useless.

It happened to be true and correct this time, though. Fortunately. I think this has been fascinating, great link kithrater.
posted by xdvesper at 7:25 PM on March 12, 2014


If you want to see what a game with no lag compensation at all would be like, just play any game you want through OnLive. The experience, while not 'optimal', is far from unplayable. The big issue is that writing a (networked) multiplayer game requires a level of upfront planning that many devs don't want to deal with-- it's not a feature that can be easily shoehorned in at the end.
posted by Pyry at 7:31 PM on March 12, 2014


I think lag, in the sense of the old fashioned delay caused by the physical distance, still matters, and it is especially relevant to competitive Dota2. Lag creates the divide between the East and West competitive scenes, because there is no acceptable neutral server for teams to play on, and this divide leads to different metagames forming in each scene. Lag contributes to the divide between NA and Europe, and SEA and China teams, as one side will always have a significant lag advantage, and this focuses tournaments and teams inwards.

While this has advantages, the most prominent being that the rare international tournaments inevitably sees a clash of metagames that causes a flowering of new strategies, it also seriously depresses Australian Dota, as there's an extremely limited pool of talent to compete against.
posted by kithrater at 7:38 PM on March 12, 2014 [1 favorite]


Yeah LoL definitely has lag compensation, you can see rollbacks in the client sometimes. I'd be very surprised if DotA 2 didn't have something similar. Although I'd be equally surprised if it were the same algorithm as used in the Source FPS games. Lag compensation is basically heuristics about what game players are likely to do; DotA is quite different from TF2.

I'm glad to hear LoL has Australian servers now, they added them about nine months ago. Before then all the Aussies I knew who played were really unhappy with the game. I mentioned up above I think a big game can get servers to within 50ms of most customers as long as you have enough paying players to make the economics work out. (This is basically Google's strategy for making search fast.) LoL is a demonstration that games can be fun even with lag, as is every other successful online Internet multiplayer game. But strategies for managing that lag are a key part of what makes these games work. (Or fail, in the case of BF4.)

Three vaguely relevant non-sequitors:
  • "Twitch plays Pokemon" was all about how Twitch.tv had 20 seconds of lag.
  • Netrek was one of the first multiplayer realtime games to work well on the Internet in 1992, thanks to the innovative UDP network stack. Its grad student author Andy McFadden has gone on to be a big cheese software engineer. No lag compensation, but smart packet loss strategies.
  • LoL has an enormous denial of service problem right now (self-link). People playing at home can't protect themselves from being knocked offline.
posted by Nelson at 7:39 PM on March 12, 2014


My experience with most wireless connections is that they suck for sustained bidirectional traffic that requires consistently low latency.

My experience mostly comes from videoconferencing, rather than gaming, but back when I facilitated a ton of the things, we totally noticed that wireless connections would tend to briefly fall to shit for brief intervals, no matter what the connection's bandwidth or latency claimed to be...
posted by schmod at 8:01 PM on March 12, 2014


I really disagree with the article. Lag hasn't been an issue for mulitplayer online games for like, a decade now?

He cherry picks a few examples, but then ignores the most played PC game on earth, LOL


But LOL really isn't the sort of game he's talking about at all. Have you tried playing Nidhogg over the internet?
posted by straight at 8:45 PM on March 12, 2014 [1 favorite]


Yeah wireless is awful and if I had any choice I'd have something else. (Welcome to FCC's broadband strategy, where the priviliged monpolies who own the wires won't provide service in rural areas.) But a fixed wireless link is pretty good compared to shitty unmanaged wifi. The link latency is < 20ms, or about what a wired ADSL link is. The big issue is bandwidth; 900 MHz can only do so much. Also most WISP deployments are peer to peer networks with shared bandwidth between customers, so that there's a significant risk of congestion two or three hops away from a consumer in a way that well provisioned wired networks don't have.
posted by Nelson at 8:48 PM on March 12, 2014 [1 favorite]


He cherry picks a few examples, but then ignores the most played PC game on earth, LOL

In addition to the other responses to this: Cherry picks how? He specifically addresses both real time strategy games and games with computer-controlled mobs. In what way is LoL, DotA, et al. just a venn diagram middle ground between those two things in terms of lag compensation?

I mean, I'm sure any game in that set (SC2, LoL, DotA, Diablo3) has a slightly different lag compensation philosophy than the others, but the fundamental problems aren't just waved away because you say so, and they are there as others in the thread have attested to.

And those games have vastly more developer resources to throw at the problem. Samurai Gunn was essentially made by one dude, and the game design has a need for perfect frame accuracy for all players baked into it.

Your response either ignores or misunderstands quite a number of the points the article is making.
posted by sparkletone at 10:48 PM on March 12, 2014


In the comments there someone said:
I’ve just seen GGPO tossed around so often as an answer to this issue, but Foddy actually did a solid job of explaining that it’s such a complicated problem. I saw this article as a whole massive wall of text for non-technical people who fall into that “don’t undertand or care” camp to either decide they care, or at least see “wow there’s actually a lot of elements at play that I don’t get, one answer probably won’t be good enough”.
And maybe I'm too much of a very technical boy to appreciate how this reads to the layperson but I don't get what's hard to understand here, he explains it pretty well.
posted by RobotHero at 12:05 AM on March 13, 2014 [1 favorite]


Okay, I misread that comment to be more critical of the article than it really is.

I still say the article isn't all that technical, but I'll agree that the main takeaway is that online multiplayer is difficult to get right and doesn't work as well for all genres.
posted by RobotHero at 8:57 AM on March 13, 2014


Sparkletone, I think I've said all I've wanted to say, but just to summarize:

1) I stated I didn't think there was any lag compensation done in DOTA2 and LOL.

2) I assert that DOTA2 and LOL are twitch reaction games, which some people disagree with. Fine, it's subjective, but try last hitting / denying against a 4500 rated player (top 0.1%) and you'll see getting your attacks frame perfect actually matters...

3) I am backed up by a post by an actual DOTA2 dev who says they don't use any kind of lag compensation.

4) I concede the point that frame interpolation could be interpreted by some people as being a form of lag compensation. I don't personally consider frame interpolation to be lag compensation myself, but I think it's reasonable that some people could. It's subjective. The DOTA2 dev himself does not consider frame interpolation as lag compensation.

5) I believe LOL also doesn't use lag compensation and that what users are reporting (characters jumping / rewinding position / delayed last hits) is just the effect of normal frame interpolation when server ticks are delayed and then corrected.

Why I say Starcraft 2, Diablo 3, are cherry picked examples:

Quoting him on Starcraft

Unless you're the world's most unreasonable general, you're going to let it slide if a quarter-second passes before your soldiers start marching.

Not true to DOTA2 - Most of the time the difference between getting a killing blow and being denied is about 100ms, same with dodging / not dodging abilities. It plays more like a twitch fighter than an RTS like Starcraft. At higher levels Puck for example destroys QOP mid because she can dodge every single ability QOP throws at her. Even abilities with zero cast point can be dodged (DK's fire breath) because the wave has a travel time. Alchemist transformation (2 server frames) can be used to dodge stuns, etc.

Quoting him on Diablo

You don't notice lag because the players can't directly interact with each other.

Not true in DOTA2 and LOL because players interact directly with each other.

---

No DOTA2 or LOL player would want any lag compensation algorithm messing with their inputs. It's like asking a pro CS player whether he uses "aim assist" or not and if it should be the default. He would look at you in horror. I'm saying the biggest PC multiplayer games in the world that rely heavily on twitch reactions don't use lag compensation because they don't need it.
posted by xdvesper at 3:30 PM on March 13, 2014


I'm not familiar with LoL, but I found a couple of posts on their forums that suggests they use a similar netcode setup to Dota2, which is no lag compensation or prediction.

This is implied by LoL having an optional client feature called "movement prediction" which eliminates the perceived response delay of your champion (and only your champion) responding to your move commands, but with everything else still being determined by the server.

try last hitting / denying against a 4500 rated player (top 0.1%) and you'll see getting your attacks frame perfect actually matters

So that's why your latest blog series is about stomping trench tier MMR scrubs? </good natured ribbing>
posted by kithrater at 5:37 PM on March 13, 2014


Not true in DOTA2 and LOL because players interact directly with each other.

Look, below a certain response time, lag issues simply aren't not solvable through software alone. And "direct" interaction can mean different things. In those quasi-RTS games, the nature of the interaction is chosen (due to its roots in a pure RTS) is such that the consequences of many actions doesn't matter greatly if it's a few frames one way or another.

They tend not to have abilities, for example, where one player directly grabs another, such as with throws in a fighting game, because issues of adjacency and coordinated movement are more difficult to implement in a way that hides lag. Because RTS games have been favorites of networked gaming since early on, the design of that whole genre has evolved in such a way as to make it tolerant of lag, and LoL/DOTA has been able to take advantage of that. But not all games use an RTS, or even a quasi-RTS engine, and the issues of implementing the kinds of games Foddy is talking about in a networked environment are a different breed from those in LoL. Even if they could solve the problems in a similar way, indie studios are not going to have the resources to throw at a problem that Blizzard or Valve does.
posted by JHarris at 5:27 AM on March 14, 2014


FWIW, LoL is full of game-changing abilities where one player directly grabs another. Landing, say, a Blitzcrank Rocket Grab skillshot is by far the most important thing a player does with that champion. It's an aimed shot with a 250ms casting time plus the ~100ms travel time of the projectile. Blitz is nearly impossible to play well with lag but with a decent connection it feels entirely like you're just predicting where the opponent is about to move, not compensating in your head for lag. Blitzcrank isn't unique; 50%+ of the champions have some sort of aimed skill shot that's central to playing it well.

Here's a detailed description of the motion prediction setting in LoL. It defaults to off. There's a lot written about how it's kind of a cheat and makes it a lot easier to land skillshots and AoEs, but the technical descriptions and official comments don't necessarily bear that out. A lot of people advise against using it because it can cause visible inconsistencies.
posted by Nelson at 11:01 AM on March 14, 2014


FWIW, LoL is full of game-changing abilities where one player directly grabs another.

Does it involve adjacency? Does that suddenly make Foddy's class of games any easier to implement? I'm struggling here to make a class of problem that isn't easy for me to explicate visible through language in a way as to explain to those entitled players why Foddy wrote his article, if the article itself isn't enough for that.
posted by JHarris at 1:58 PM on March 14, 2014


I'll preface this that I've never played LoL.

A 250ms casting time, so if the player on the receiving end gets a message that the other player started this move 100ms ago, the obvious solution to keep the players synced is start the casting animation 100ms into it, and there's still 150ms left. Annoying that he doesn't get more time to react but it's not necessarily game-breaking.

And correct me if I'm wrong, I'm basing this on the references to mouse input in the motion prediction link, once you've started this attack, I guess you're committed to it until it completes? If it isn't cancelable, once the server receives the command, it knows 100% for sure what you're doing until the move completes.

Now yeah, maybe this is lightning fast response compared to Starcraft or something, but on the other hand it's not exactly Street Fighter II.
posted by RobotHero at 4:08 PM on March 14, 2014


One reason I'm interested in this conversation is because I've been playing a lot of Pac-Man CE DX lately. One of the weird little features in that game is, if you're about to collide with a ghost, the game will temporarily slow down the game speed to give you a chance to move away.

That often helps, but can cause problems in other situations. Because of this, although the game is solidly local and not networked, it sometimes has what feels like lag issues, like when you're turning ahead of time to anticipate a turn, but a monster attacks from the side from the intersection before, slowing the game down for a couple tenths of a second, causing you to turn early, in fact turn in and collide with the monster you otherwise would have avoided. And the whole thing happens in a quarter of a second.
posted by JHarris at 5:29 PM on March 14, 2014


I think the time-ramping in the Pac-Man game is fundamentally a different thing. I guess it can mess with your timing, but no matter what, the location of everything you see in the game is always their unambiguous true location. It's not their location 100ms ago, and it's not an attempt at predicting their current location based on their location and speed from 100ms ago.

And not to pick on xdvesper too much, but his framing of it as "lag compensation algorithm messing with their inputs" makes me want to popularize "lag reconciliation" over "lag compensation." For any online game (Well, any game that isn't turn-based) lag is going to create two game states that differ in slight ways. You don't really have a choice about whether you will reconcile contradictory data, you only have a choice about how. Calling it compensation makes it sound like something you can just choose to not compensate for.
posted by RobotHero at 2:55 PM on March 15, 2014




« Older “as both Pierre Bourdieu and latte orders have...   |   Crystal Blocks of Yankee Coldness Newer »


This thread has been archived and is closed to new comments