I've been playing minetest for a while now, and I think the game lacks a way for players to easily switch servers, or simply interact with said servers.
The "master server" is a concept that has been largely used and implemented in several multiplayer games (of any type, e.g. FPS), and although the concept is really easy to understand, I thought I would write a small protocol.
The protocol draft
This protocol is a text protocol, it is human readable and parser-friendly, and proposes the following features:
- Centralized player authentication
- Central blacklist (game servers can make their own blacklist off of the master server's)
- Players will be able to find a server to play on directly from the game, without knowing its IP address
- Web services can be built on top of the master server's external commands (JSON output): player stats, map stats, world stats…
I wrote this gist quickly, so I know there are errors in it (and probably protocol inconsistencies as well), I just wanted to show how useful a master server can be when it comes to bringing more players to the game, and to managing large amounts of servers at the same time (griefers blacklisted on the master server will be blacklisted in every other server almost instantly).
Here's a few suggestions of features that could be using this draft, and/or added to the game:
- A built-in servers browser (with a scrolling bar) that displays a list of servers with their names, free slots, amount of players…
- A login form to centralize authentication
- An in-game players panel that displays a list of the players actually on the server with their names, health, inventory…
- An in-game informations panel that would give info about the world (name, number of blocks/chunks…) and the server (name, uptime…)
- A web interface that displays informations about all the servers registered to the master server
- A web search form that would find a player online
- A web form that would generate a blacklist off of the master server's
The possibilities are endless !
I don't think I'll have time to implement this any soon, but feel free to discuss this feature.