Welcome back, Soldiers!
We have some plans to improve the game experience for our players and make sure the catch-22 of people not playing because people aren’t playing is being addressed properly. Currently we have three regions that you are automatically assigned to based on your location: North and South American region, Europe and Africa region and Asia and Oceania region. You are not forced to play on your region, but it’s not very convenient to switch and you don’t have your profile on the other regions, so you have to unlock everything again if you decide to try a different region to play with friends or look for more populated games. This way of doing it is no longer good for the game, so we’re changing it.
We’d like to explain the issue as best we can and what are the steps we’re taking to make sure it’s the best solution to current and future problems.
First of all, a bit of an explanation why the regions were split in the first place. At the start of the Early Access, we anticipated that traffic might be a problem, so we decided to split the load between three distinct regions, additionally providing better pings for everyone and avoid confusion of not knowing where the server is located and how to adjust your playstyle to different networking environments. Sadly, this wasn’t enough and our Master Servers were overloaded and in turn out we had to redo portions of the design and implementation to better facilitate large traffic and futureproof the whole system for even bigger loads once they occur later in the game’s life.
We’ve written about the whole situation already, so we’ll keep it short here – the new MS design is – in theory – fully scalable and should be able to handle as many players as needed with only minimal changes or no changes at all.
At this time, with the reduced population and much more robust Master Server, there’s no real need to keep the regions separate. A lot of players choose to play on the EU/AF region because of the bigger population, which in turn makes other regions even less populated, exacerbating the issue even further. Additionally, switching region is done outside of the game and not everyone knows about it, and the new Steam Library design actually made it even more hidden. That’s why we’ve decided to do the merge now, since there’s nothing stopping us apart from merging profiles together, which we’ll talk about next.
How is it going to work?
We’re currently testing if our solution works and doesn’t produce weird results when merging 3 databases together. Our merging tool first checks all three regions for each SteamID, chooses the one that had more time played (represented by earned XP total) and keeps the configs from this database. We can’t really merge customization configs, so we have to choose. After that, it gathers all the XP and currency earned and adds them together, so all your hours played are reflected in the new, merged profile. The only part of player profile that can see some loss are the statistics. For various reasons, we have to choose one of the statistics sets, so the one from the most played profile will be chosen and copied over to the new profile.
We know that some of you don’t really care about this and would be happy to start over, but there are those players that care about their profiles and we wanted to do this right. Of course, we could just take one profile and that’s it or even do a full wipe, making this much easier for us, but we think that this way more people are going to be happy about the merge.
What will change?
After the merge is over (and it will take a few hours of downtime, so we’ll try to give an advanced notice and do it at an opportune time), all players from all regions will see every server in the server browser. Right now the server browser sorts first by a number of players and second by ping. This will ensure that every player that joins the game has someone to play with, even if with a sub-optimal ping. We hope that because of this change, people that are close together will naturally gravitate to servers with better ping for them and it will reduce the number of people starting the game up and seeing nobody or very few people to play, increasing the overall population of the game and slowly climbing back up in regards to overall player numbers. After all, it’s better to play with high ping than to not play at all.
Additionally, this will mean that we have to pay close attention to ping advantage and make sure it doesn’t negatively impact the game for people with good ping.
A very important information is that we’re not moving our dedicated servers anywhere, they will still be available just as they were, everything that changes for you, as a player, is that you will now see servers from all regions in your server browser. They have names that represent their region, so you can still choose to play on a server closer to you!
Effect on netcode
The unfortunate side effect of physics and how the Internet works is that you can’t make a real-time game 100% fair for every player, because that’s only possible when they are at the same distance from the server and on the same connection. The issue here is the aforementioned ping, which is the network latency between the player and a server. It’s measured in milliseconds and in general, in a fast paced shooter pings over 100ms can make a noticeable difference in how the game plays and who has the advantage. There’s many ways of mitigating it, but most of them are a tradeoff between the game’s responsiveness and simulation accuracy, so it’s always a decision in which direction we should go – make the game less responsive, but more fair or more responsive, but less fair towards either people with lower or higher ping.
A simple example of this problem is as follows: you are running behind cover with 50ms ping, which means that at any point in time on the server you are 50ms in the past. On your screen, you clearly went behind cover, but you still get shot by someone. It took only 50ms for you to send the information to the server that you’re hidden, so it should be fine, since this is rarely enough to really feel the delay.
Your enemy, though, has 450ms ping. This means that they get updated about your position from 500ms ago (that’s half a second), when you were not behind cover, so they clearly hit you and their shots should count. This happens because your movement took 50ms to reach the server and then 450ms to reach the enemy – they see your state from the past.
If you are responsible for netcode, now it’s decision time: who do you give an advantage to? If you make it 100% accurate, for people with ping over 100-200ms your game will be basically unplayable, because they will be shooting at places their enemies aren’t occupying anymore and they would have to learn to lead their shots based on their ping, which also can fluctuate, making the most important part of a shooter – the shooting – not fun at all.
This is something that cannot be fixed, because of the speed of light and additional latencies on the networking infrastructure between your enemy and the server, so you did nothing wrong, but they also did nothing wrong if they got matched automatically into your game or if they just aren’t in a position to improve their connection.
Very early in development, we had to make a decision about ping advantage and which player should have a better chance of winning one on one firefight: someone with lower ping, or someone with higher ping? This might seem like a no-brainer, but it’s not that simple, as there’s a lot of people playing on a bad Internet connection, playing with friends from far away or just living in a remote location. We decided that people with lower ping should have an advantage over those with ping higher than 150ms. In our example above, they player with 450ms of ping would not have their shots counted, but if their ping was lower, about 150ms, they would count, and you would get shot. We think that the 150ms boundary is a good balance between being fair and accurate.
Another big reason for this decision was to avoid people that intentionally abuse designs that promote high pings by using lag switches and other methods to gain an unfair advantage in a multiplayer game. If you server accepts hits that are from the past, you can basically introduce an interruption in your connection, shoot a few people, bring it back and those shots would count on the server – which is something we decided was unacceptable.
Right now the system is working well, but it’s not perfect and we hope that this merge will give us additional data and testing to make sure the game is as fair as possible for as many players as possible and that people that can and choose to play with good ping are not punished. It might take some time to iron out the details, so we hope you understand that at first, especially right after the merge, there might be a lot of players that are playing with higher ping than they should.
Once the player base is healthy again, we have some plans to limit where you can connect by ping and try to keep people playing with others that are closer to them. We want to wait a bit with introducing this,as at first a restriction like this would negate the benefits we hope to achieve by merging the regions in the first place.
We have some work to do with lag compensation and other techniques that are implemented in World War 3’s netcode for optimal experience, but we are confident we can make it one of the best in the industry.
At this time the plan is to make this change this week. We’re still making sure it will work as intended, though, so this is not a firm date. However, it shouldn’t be really noticeable and the patching required is minimal.
Thanks for reading and see you in the next Weekly Report!