How do some games like Monster Hunter, or even mobile games like Underlords, allow for players all over the globe to play together seamlessly but other games like Dota has horrible lag and ping when you play outside your region?

1.49K views

How do some games like Monster Hunter, or even mobile games like Underlords, allow for players all over the globe to play together seamlessly but other games like Dota has horrible lag and ping when you play outside your region?

In: Technology

21 Answers

Anonymous 0 Comments

There’s different ways to handle latency in a game, and in essentially every case, that solution comes at the expense of one of the parties involved.

It used to be common that one player was the “host” and had zero latency, meaning the other player was the disadvantaged one, this is less common nowadays, but still happens occasionally, but is the least “fair” one.

Nowadays most games have a server hosting games, where it can handle latency in two ways, but in each way both players share the disadvantage.

it can either let you input commands in real time, showing your actions immediately and then double checking if your inputs “succeed”, this is more common in shooters, as it is more responsive, but more sensitive to latency and the game might reverse your actions during intense lag.

The other way to do it is that your inputs are delayed according to your latency and you see the game as the server interprets it, this is how DotA and most strategy games do it, as these games generally value correct information over responsiveness.

The common thread between these two methods is that since the different parties are both players, the computer is strict on its interpretations, it won’t bend the rules so it can keep a fair playing environment, if your data differs from what the server sees, it will correct your data.

HOWEVER, what makes Monster Hunter work so well is that the two competing parties have a different dynamic, there is the players versus the game itself. Because the computer doesn’t care about being treated fairly, it can bend the rules of what is true and what isn’t. This means that even though you and I have wildly different latencies, our game clients send in data to the server as we see it and the game completely skips fact checking either of our data, and just accepts it and processes it and returns a result. This means the disadvantage is almost fully on the server, not the players.

As for Underlords, I haven’t played it, but assuming it’s similar to Auto Chess and TFT, there’s no actual real-time interaction with other players, so the game can process your results ahead of time and simply replay the results to you, so latency is largely irrelevant.

TL;DR: Most multiplayer games have to be fair because they’re in real-time and also against other players. If a game isn’t in real time, or not agaisnt other players, you can “cheat” latency by either processing results ahead of time, or letting the players tell the server what happens.

Anonymous 0 Comments

Some games are better made than other. Internet connections are different speeds in different places.

Anonymous 0 Comments

There are factors like distance and data size. Most multiplayer games have computers connecting them. These computers could be a fleet of Ferraris in a performance garage, or a couple Ford Fiestas filled with spray cheese.

Anonymous 0 Comments

Bunch of good answers

Real ELI5:

More complex games require updates to the server to happen for a large number of objects

This can be players, spells, or the environment

The server then has to determine what state the environment needs to change to reflect the next frame

Most big games have something similar to a cpu bus for the server to manage updates in priority sequences, this is where lag comes into play for international play as it requires more complex computations to determine who did what first and how to update the game state on the next frame

Anonymous 0 Comments

Basically the time it takes everybody to get their updates to the server are different (and to get those updates back to you), so your PC can’t just render things where the server says they are. To solve this and to make the motion appear smooth, you typically get the final position as an interpolation from a few other points. The location the server says the object is at, and the location the object would be at on your screen if it kept moving at the same rate are taken into account in a formula to determine the final rendering location for your personal connection.

The reason some games are stuttery and some are not depends on how how much (if any) client side prediction is used and how much priority they put on the “players viewpoint”.

[Here](https://www.kinematicsoup.com/news/2017/5/30/multiplayerprediction) is a great article I learned from when I first started writing client side prediction algorithms.

Anonymous 0 Comments

ELI5: Monster Hunter World has plenty of lag issues because its an action game that relies on fast host connections to synchronize it to where the rest is simulated locally so you FEEL like there’s no lag. A simple frame analysis of a game can reveal that there is lag if you are not the host. Connecting across regions will also reveal lag.

Underlords appears to have very little lag because of the following:

1. Turn based game so updates can be preloaded and readied locally after being received.
2. Dedicated servers which can handle what a peer to peer host would usually need to.

This gives it lower latency because you don’t need to worry about a host with limited bandwidth. Also the amount of data being sent is already very small. Plus you don’t need to rely on host CPU, the server takes care of that too.

Now there’s another comment with technical information on how the different netcode approaches allow for synchronization. This is more important when we talk about a real-time game that requires precision information being shown simultaneously to both players. Like Starcraft 2, or Counterstrike GO. Basically PVP games. To be sure, those implementations are very good, but not perfect. You need to be on LAN, which means local network, to have near perfect sync. This is because there is no longer that ping lag time between each packet sent to the server/host and then back to you.

If you want to go even FURTHER you need to take a look at Fighting Game synchronization. In these games the sync must be as close to FRAME perfect as possible. I recommend looking up Tekken 7 and Street Fighter V netcode implementation. Here they will employ rollback systems or “frame delay” which means how many frames it takes for a single input to register. Its basically artificial lag to help adjusting for real lag…much to players chagrin.

If somehow in the future everyone has very low latency halfway across the world, lag will become a thing of the past as a common complaint.

Anonymous 0 Comments

Not ELI5 but this this is a big presentation about netcode for Overwatch that I thought was interesting and will answer some questions!

You can start at 25:30 for a cool moving graph that shows the how the server tries to predict player inputs.

Anonymous 0 Comments

On top of all this, dota and other pvp games require both players messages to be sent. So if Player A takes 50ms to tell the server he moved, and it takes 50ms for that message to get to you, his position on your screen is 100ms old but only 50ms old on the server. So when you shoot at him, amd it takes 50ms for the server to figure that out, you are actually shooting at the position he was in 150ms ago.

Same acenario happens in Monster Hunter, except it’s only your ping that is involved. The server takes 50ms to tell you where the monster is, you take 50ms to tell the server you’re hitting the monster. The key difference is the lower accuracy required, larger hit box etc involved and the reduced critical timing required to land a hit.

Anonymous 0 Comments

When a game is running, it goes in periods of time called “ticks” that keep everything synchronized. In single player games, the ticks are often 60 or 30 times a second, to match frame rates on screen. In multiplayer games though, the ticks have to be further apart.

Messages take time to travel, because even though they seem instant, signals can’t go faster than the speed of light. If you and I are playing multiplayer in the same room, the time for the signal to reach you is so tiny that it is faster than the 60 or 30 ticks per second. If you were on the other side of the country though, the signal would take too long to reach you and the game would lag or desync. So games use longer ticks to give enough time.

The problem is, if you are playing a fast game, like a shooter or Dota, movement matters in small increments, so you can’t put the ticks too far apart. Some games cheat a little bit by predicting where you are headed and displaying that instead. This way everything keeps moving, and the game checks later to make sure it was right. If a signal takes a long time to get through though, it may mean that the game showed you in one place when you were really in another.

Games that need to be fast and accurate will limit you to servers in regions, so that the signal time is kept close to or below the tick time.

Games that are slow or have pre-calculated outcomes don’t need to worry about that, so regions don’t matter as much. Anyone can play with anyone else. Most mobile games have turn limit timers or ready periods that can be synced over long distances. This works much better than fast reactions and ticks.

Kinda long for an eli5, but not really a super concise way to explain in plain english. Hope this works.

Anonymous 0 Comments

The further you are from any server the more lag you experience. The reason you notice it more in dota is because players can’t be faked. Eg in monster hunter the server tells your computer where the monster is and what animation it’s doing. This requires less information from the server. Monster hunter is also a sluggish game in the sense that movement is more deliberate and planned with long animations before calculations. Dota however you are matched against player moving in real time the game can’t just assume what they will do and run animations. Instead the game updates largely on a per ping basis. The main difference is that the logic is all calculated server side and I think it has to be to avoid cheating. But because of this your player character has to wait for the server check before it starts moving. So now when you play in a server further away each and every mouse or keyboard click it has to send that to the server, and then wait for the server to say “yes that’s fine” then your character starts moving.

Dota underloards works the same but it isn’t a real time game so you would needs seconds of lag to notice the problem.