Planning server locations for your multiplayer game
I'm Glenn Fiedler and welcome to Más Bandwidth, my new blog at the intersection of game network programming and scalable backend engineering.
One of the most difficult parts about launching a multiplayer game is planning where to put your game servers. This is particularly challenging because before launch you probably have no experience of where players will be, what density of players to expect in each region, nor any idea about how internet topology maps to real world locations.
In this article I aim to share with you all the relevant geographical information I've learned over the last five years operating the network accelerator Network Next.
So strap in and let's find out where your game servers should be.
Strategy
To pick server locations you first need to decide on your strategy.
Are you going to have lots of server locations around the world, like first person shooters such as Valorant, Counterstrike or Overwatch – or – will you have centrally located servers in the middle of large regions, for a less latency sensitive game like League of Legends?
The key trade-off here is latency vs. player fragmentation. The more player server locations you have, the lower the average latency will be, but also the smaller the player pool per-location. Conversely, with a larger geographical area playing in a location, there are more opportunities to perform better skill based matching because there's more players to choose from.
The correct decision of course depends on your game, but the best advice I can give is to make your game as latency insensitive as possible. If your game is latency insensitive from [0,50ms] can you extend it so that it also plays well up to 100ms?
Why is this so important? Because even if you try to minimize latency by deploying game servers in major cities everywhere, at best you'll obtain an average latency of 25-30ms. And even then approximately 50% of your players will have latency above this.
So think less about "how can I get the absolute minimum latency for my game?", and more about "how can I engineer my game so it plays well at the the widest possible range of latencies so that the MOST players can play together?", and then once you know this acceptable range of latency for your game, build your server locations and matchmaking strategy around it.
Regional Strategy
In this article we'll start with the regional strategy.
Here the general assumption is that you have a game which plays perfectly well in the [0,100ms] round trip latency range, only starting to degrade above ~100ms.
Your goal is have one really good server location per-region, where everybody in the region has a strong chance of playing on the server below 100ms. This server location should be centrally located for fairness, and you might even consider equalizing players within the region in some way, such that any players close to the central location don't get too much of an advantage over ones that are further away.
North America: Chicago, Illinois
- Why? Chicago is an approximately central location considering both United States and Canadian players.
- It's also an historically important internet hub, with a major internet exchange located at 350 Cermak Road.
- Yes, it's biased somewhat to the East Coast but the population in North America also has the same bias, with the majority of population being in the East.
- Chicago was chosen as the North American server location for League of Legends, and their own private network Riot Direct was initially designed and built to deliver network traffic across North America to Chicago.
- Alternatives: Ohio or Iowa (AWS/Google).
Central America & Caribbean: Miami, Florida
- Why? Miami is the subsea internet cable landing point serving Central America and the Caribbean.
- You'll even get decent latency to the upper north and north-west portions of South America. For example, players in Colombia, Ecuador and Peru can get 80-85ms round trip latency to Miami, although you'll need a network accelerator to consistently obtain this.
- Alternatives: Dallas, Texas provides better service for Mexican players, but is not quite as performant for Central America and the Caribbean.
South America: São Paulo, Brasil
- Why? When it comes to South America, the choice is clear. The vast majority of players are in São Paulo. A major megapolis, São Paulo is the most populous city in the world outside of Asia.
- This location is perfect for players on the eastern side of South America, from Buenos Aires in the South up to Salvador in the North.
- Even players in Chile and the more southern parts of Peru can play in São Paulo with less than 100ms round trip.
- The only downside is that São Paulo is not a good fit for players in Colombia and Ecuador because the Amazon rainforest is in the way. There are no fiber optic cables connecting these countries directly to São Paulo, so traffic has to take the long way around.
- Because of this, several games I've worked with have hard coded their matchmaker to send players in Colombia and Ecuador to Miami.
Europe: Frankfurt, Germany
- Why? While other well connected European cities such as London and Amsterdam may come to mind, Frankfurt is both well connected and centrally located in the middle of Western Europe, making it the perfect regional location for European players from Spain to the Nordics, Eastern Europe and even Turkey.
- Frankfurt is Europe's digital capital, and with more than 16 Terabit per second peak traffic, DE-CIX Frankfurt is the world's leading Internet Exchange.
- From my personal experience working at Network Next, relays deployed in Frankfurt provided the most acceleration for players in Europe.
Asia Pacific: Singapore
- Why? Centrally located in South East Asia, Singapore is suitable for players from Taiwan, Philippines, Vietnam, Malaysia, Indonesia and even all the way down to Perth, Australia.
- Yes, Japan and Korea are somewhat distant to the north, and may eventually end up being their own sub-regions in your game, but Singapore is capable of servicing players in Tokyo with ~67ms of latency.
- Alternatives: Guam. The island of Guam is emerging as a new APAC central location with the added benefit of lower latency to Japan and Korea. See oneqode.com for details.
Australia & New Zealand: Sydney, Australia
- Why? Sydney is the most populous city in Australia, and is centrally located in the region considering New Zealand to the East and other major cities in Australia like Melbourne, Brisbane and Adelaide.
- Players in Perth on the West Coast of Australia can traverse the INDIGO submarine cable to Sydney with ~47ms round trip time.
- An alternative direct overland fiber optic route exists between Perth and Sydney with even lower latency, but without a network accelerator, it's unlikely that your game traffic will take the overland route.
South Africa: Johannesburg
- Why? Africa is an incredibly large continent. Approximately 8,000 km (5000 miles) from North to South, it's way too long for players in South Africa play with any reasonable ping to servers in Europe or the Middle East.
- For example, round trip ping time from South Africa to Frankfurt is ~170ms, and South Africa to Dubai is ~179ms. Ping times to São Paulo and Singapore are even worse.
- Conclusion: If you want players in South Africa to enjoy your game, it is flat-out necessary to host servers locally in a South Africa region.
- Alternatives: Cape Town (AWS)
Middle East: Dubai
- Why? Dubai is the largest city in the Middle East and UAE-IX in Dubai is the largest carrier and data center-neutral Internet Exchange for the Middle East.
- A network accelerator is generally required to fix bad routing across the region.
- Alternatives: Bahrain (AWS)
South Asia: Mumbai, India
- Why? Mumbai is the most populous city in India.
- DE-CIX Mumbai is Asia Pacific's largest Internet Exchange amongst 153 Exchanges in 29 Countries.
- Mumbai is the location of the India servers for Valorant.
Conclusion
If you are just getting started developing a multiplayer game, my recommendation is to stop worrying too much about minimizing latency and just design your game so it plays well at the largest latency range possible, ideally at least [0,100ms], then host your game servers in the major regional cities listed above.
Don't chase the latency dragon by having tens of server locations per-region. You'll just end up get latency divergence as you whiplash players from one city to another. Instead, focus on providing the most consistent experience from one match to the next.
Unfortunately, the internet doesn't always deliver game traffic across the lowest latency route and this can be a real problem with a regional matchmaking strategy. Consider using a network accelerator like Network Next to fix bad routes that take players outside your ideal latency range of [0,100ms].
You can configure Network Next to only accelerate players when their latency is outside of your ideal latency range, so you only pay for network acceleration when it provides a meaningful improvement for your players.
Please contact us if you'd like to learn more.