Up until this summer, GunColony has always been restricted to ~20 players due to lag. But one step at a time, I have worked hard to bring the server up to the performance standards of a large FPS game, and we’re finally seeing the light at the end of the tunnel.
Today’s upgrade should mainly allow a >15x increase in upload bandwidth on our game servers. This means much less stutters, and ensures that a match starting/ending does not lag players in other matches.
Also, thank you all for the feedback on the new balance update, y’all are awesome! I will do another minor update in 1-2 days to adjust some things like 7.62x54R ammo and M1919, as well as another performance improvement. (This one also has to do with server hosting so there could be another downtime.)
Keep on mining and gunning!
TECHNICAL DETAILS – AND NEXT STEPS
As some of you may know, the game servers in GunColony are home hosted. Your connection, however, is forwarded through a dedicated server hosted on OVH. This is mainly to ensure that people can’t take down GunColony through a DDoS attack, but it has a latency penalty of about 30ms compared to running the server on the OVH machine directly (more on that later).
Today I have switched the home servers from Comcast to Verizon. This increases the upload speed from 35 Mbps (4.4 MB/s) to 880 Mbps (110 MB/s) on paper, but speed tests actually measure closer to 500Mbps. Still, this is absolutely a massive increase and means that my home servers are no longer bandwidth-bottlenecked and I can use them to their full potential.
There was previously a large bandwidth bottleneck on my hosted servers. The main issue was that when a game first starts, it took forever to send the chunks to the players that teleport into the map, while also lagging players in other games during this time. Furthermore, from my calculations, ~200 players is enough to saturate 35 Mbps of bandwidth constantly, so it’d be impossible to host more than a few games and expect them to not lag. However, to saturate the new 880Mbps of bandwidth would require 5000 players – probably more than the total number of players in every Minecraft gun server combined – so it’s safe to say that bandwidth is no longer an issue after the upgrade.
The next bottleneck in my current server setup is RAM. Currently, a PVP server with ~10 people in them use roughly half of a Zen 2 thread, and 8GB of RAM. My main server machine has 32GB of RAM and a Ryzen 3700X CPU: if I hosted 4 PVP servers with 10 people each, it would use all of the RAM and only 2 of the 16 threads! However, I’ve recently figured out a JVM optimization that solves this problem admirably: by using 32-bit IBM J9 instead of 64-bit HotSpot, I was able to reduce the memory usage per server from 8GB down to roughly 2GB while preserving the smoothness of gameplay. This quadruples the amount of servers that I am able to host on the same hardware! The improvement will come in GunColony’s next minor update, set to release within this week.
In fact, the RAM improvement is so big that it will allow me to host some servers on the single OVH-hosted server as well. Previously the lobby server alone used up most of the 16GB RAM available, but now I can host multiple PVP games alongside the main lobby, directly on the OVH hardware. This doesn’t have the 30ms additional ping compared to forwarding traffic to home servers, so you’ll be able to get lower ping than before whenever you are playing PVP/Comp after the next update.
I am also planning to host a VPS or dedicated server in Europe that will serve as another access point to my home-hosted servers, effectively removing the 30ms ping penalty from home hosting for European players. (You’d still connect to the same server, just with a more direct route.) However, this does require multiple BungeeCord proxies and thus requires me to write a custom plugin that syncs up the scoreboard and total player count between them. Therefore, the idea could take a while to be implemented.
Speaking of European players, the final frontier for optimization is likely to open separate servers in Europe. This is technically challenging due to the requirement for replicating the database, and also presents an issue of splitting players and impacting matchmaking. Also, it is costly as I would have to host any EU servers on a dedicated server provider. However, it could still happen one day if GunColony grows bigger… and growing bigger is more possible than ever if performance is no longer the largest bottleneck.