Game dev #11 – Backend improvements
I spent a good chunk of the past two weeks or so doing improvements to the backend that powers the Creeper's Lab. While you're familiar with the game servers (of course!), the website and the forums, there's more hidden behind the scenes to help run the show. This includes among others the tools that allows the staff to write news posts, see player statistics, review bans and more. While these aren't visible, they're important to ensure that everything can be done properly and efficiently, so I decided to spend some time on them.
Among these changes comes a new structure to the module I use to launch each game server. I've decoupled the launch of that program from the launch of a server itself, so that it can be controlled separately. While this doesn't have any short-term purpose, it'll allow me to do some improvements that will be described in a future post.
I've done extensive changes to how the servers themselves and their base data (name, address, directory, etc.) are stored. From this, I've designed a script that allows me to select some files and copy them to any servers. This comes in handy when I want to apply a new server setting, for example: I can do the change once, place the edited file in a central location, then copy it directly to all servers. This is much less tedious than editing 5+ files one by one, and less error-prone too!
Building on that, the whitelisting system was streamlined to be faster. When a new player registered, under the previous version, the whitelist was pushed from the forums to each individual server. This could take about 15 seconds, the long wait potentially giving the new player the impression that something was wrong. Under the new design, the whitelist is uploaded once, then automatically copied to all game servers. This is at least three times as fast, offering a better experience.
Along the way, I've also given myself the ability to fully control the minigame servers like Parkour and PvP. Due to the previously limited integration, if these encountered a problem, I had to manually open a connection to run commands directly. Now, they work the same as all other game servers, so part of the maintenance can be done from a web browser, or even directly from my phone!
These updates fall into the category of less interesting work that nobody sees the results of directly, but it pays off through easier maintenance and updates. With Minecraft 1.15 being mostly stable, 1.16 not expected any time soon and no other high priority project in the way, this was a good time to take care of this and get better tools in place.
– Doctacosa