With the astonishing progress in network technology around us, we may believe that all things in IT will constantly improve. But there are limits which we will reach soon and there is no way of crossing them. One of such limits is network propagation delay. In this article we will explain what it is, why it is important for gamers and how the situation can be improved.
Bandwidth, network delay and jitter
Three basic properties of your internet connection have an impact on your online gaming experience: bandwidth, delay and jitter.
Bandwidth defines how much data you can receive or send to another computer in each unit of time, sometimes the term “throughput” is used. While bandwidth is the theoretical capacity of a network to transmit a given amount of data over time, throughput is the actual amount of data you can transmit at a given moment to a given destination in practice. For now, you may sleep well – nothing indicates that the increase of consumer bandwidth will slow down anytime soon. In the worst case, we can always just use more or thicker cables.
Network delay defines how long it takes for a message to arrive at the destination from the time it was sent from the source. There is another term used for that: latency. The difference between latency and network delay is subtle – the former refers to receiving all the data that has been sent while the latter refers to the time necessary for only the first piece of data to arrive at the destination. Network delay can be measured as Round-Trip-Time (RTT) or One-Way-Delay (OWD), but in practice, a popular tool “ping” is used that uses ICMP echo packets. The delay might be different depending on direction – especially if we consider that data between two machines in complex networks might be routed differently, so it may travel via totally different intermediate devices and transmission mediums between them.
Online game players often use the term “lag”, which is loosely related to network latency. Lag basically mean that a game is noticeably and subjectively not responsive – there might be many reasons for it besides problems with the network, e.g., overloaded game servers, anti-virus or firewall activity, insufficient processing power or even the PC overheating.
Network delay consists of four major components:
- Transmission delay – the time necessary to put the signal on the transmission medium.
- Propagation delay – the time necessary for the signal to go from one device to another. It is equal to the distance between the devices divided by the signal propagation speed.
- Queuing time – it is the sum of all periods the signal is stored on intermediate devices before it can continue moving. Typically, this is correlated with network congestion, i.e., queuing time increases when the network is congested.
- Processing delay – the time necessary to process the signal.
Jitter refers to the variance of transmission properties or measurements over time, in most cases, it is about network delay or latency. Because jitter might be very hard or impossible to predict, it is very hard to implement a good strategy to deal with it in games and minimize devastating effects on your gaming experience. While for example the effect of network delay on your subjective experience might be minimized by using proper delay extrapolation or interpolation techniques in the game, combined with rewinding and compensation on the server, high jitter can’t be compensated. In addition, you are capable of learning how to play with a certain constant lag but you can’t adapt your game play to high jitter.
Why will your ping not improve greatly?
If we could get rid of all delays except propagation delay, we would have the smallest possible network delay (only limited by the speed of light). So, if the distance between our Wroclaw office in Poland and New York is around 6680 km, a direct, straight connection between those two points – which is only possible in theory – would only require 45ms of delay. In practice, however, it is hard to imagine having a straight connection to every place in the world. Also, light does not travel straight through the fiber but instead “bounces” between the sides of the fiber, losing around 1/3 of its velocity in the process.
Here’s a table that shows actual pings from our Wroclaw office to various places around the globe. The columns represent flight distance, theoretical minimal ping and the ratio between theoretically possible pings vs. the actual pings:
Now, because we will likely never have ping much better than 106ms to Australia, playing FPS games with someone there will always be at least slightly laggy – 53ms would be the minimal delay time if the server would be located in the middle between us (near Bangkok?).
Attentive readers will spot that we generally have better results in “ping ratio” for distant locations – that is because for most of the distance, packets use high-speed networks and comparatively few routing devices.
Network delay can be a serious problem. Imagining a hypothetical friend who lives on the Moon or on Mars with corresponding ping times between 9 and 45 minutes – Counter Strike would not be playable this way! You can use the Clumsy tool to simulate and test adverse network conditions for yourself.
Game network topology, server location and matchmaking decisions matter
To provide a good gaming experience, every online game provider should know its own players well – especially their physical location and internet services they use. Based on that the server locations should be chosen – and there should be more of them than just a couple. Otherwise, some players will be in a privileged position compared to those with higher latencies. The decision shouldn’t be made purely based on geographical data – instead it should consider actual measurements of latency and jitter (network topography). Games should also be tested for different network conditions, to avoid the effect that “it works great on the developer PC”.
With the rise of streaming services’ popularity, such as Google Stadia or GeForce Now, streaming server locations should be considered as well. It will be beneficial in the future to have your game servers close to streaming service provider – this way, latencies to streaming service and actual game server will not add up.
For smaller games that can’t afford a big number of server locations and enjoy a smaller number of players in a given region, finding the “middle point” may help to provide a reasonably smooth experience for everyone.
For online games, client-hosted servers or P2P approaches (even for deterministic lockstep games) should be avoided. Not only do they add to latency and make it harder to implement scalable synchronization between players, but also they make cheating way easier. A client-server model should be preferred whenever possible, because the server may cut down the distance between players, gives some control over player latencies and acts as a primary layer of protection against cheating.
So, in short: game developers need to pay more attention to the server geolocation – unless a serious revolution in physics happens.
Before you go!
We created a script which you can download, run and share your results. It measures your average ping for selected servers around the world and tries to find your city name based on IP address. It will not send any data to us – instead it will just print a report on your console, so you can copy-paste it at will. If you use VPN or other form of tunneling, please add information about such fact – it can greatly bias results.
You can find full source code at: https://github.com/DenuvoSoftwareSolutions/ping-them-all. With results from all of you, we will create a public database of delays between geographical locations, which may help games in implementing better matchmaking and deciding about server locations.