Feature proposal: master server

ironzorg
Member
Posts: 46
Joined: Tue Aug 23, 2011 06:34

Feature proposal: master server

by ironzorg » Post

Hi.

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.

User avatar
LolManKuba
Member
Posts: 939
Joined: Fri Feb 10, 2012 22:36
Location: Ontario, Canada
Contact:

by LolManKuba » Post

Offtopic: Welcome back to the forums!

mauvebic
Member
Posts: 1550
Joined: Fri Jan 27, 2012 11:32

by mauvebic » Post

i like the idea of a server directory

though i think mutualising blacklists is a terrible idea. I say that because douchebags like segfault have had ban privileges in the past.

Why not just publish each servers' banlist instead? people will notice who appears + frequently :-)

User avatar
Menche
Member
Posts: 1001
Joined: Sat Jul 02, 2011 00:43
IRC: Menchers
In-game: Menche
Location: An island in a lava lake.

by Menche » Post

I think it would be a good idea if servers could share players' password hashes, or have some centralized method of authentication. That way players would only need to apply once for servers that need registration, and scum like Segfault22/Max and Landmine would have a harder time impersonating other players.
An innocent kitten dies every time you top-post.

ironzorg
Member
Posts: 46
Joined: Tue Aug 23, 2011 06:34

by ironzorg » Post

LolManKuba wrote:Offtopic: Welcome back to the forums!
Thanks.
though i think mutualising blacklists is a terrible idea. I say that because douchebags like segfault have had ban privileges in the past.
That's not what I had in mind, I was thinking that the master server admin could add well known griefers/cheaters on the main blacklist, so that every server could just append it to their own blacklist. In the end, server admins don't have to apply the same bans as the master server's admin, and keep their own locally (game server would keep their own blacklist no matter what).
I think it would be a good idea if servers could share players' password hashes, or have some centralized method of authentication.
I think it would be great, but decentralized authentication is good too. However, making the servers share the passwords hashes is a big vulnerability: anybody can set up a server and register it to the master server, that doesn't give you the right to get other players passwords (you would be able to auth with anybody's account).

sfan5
Moderator
Posts: 4094
Joined: Wed Aug 24, 2011 09:44
GitHub: sfan5
IRC: sfan5
Location: Germany

by sfan5 » Post

+1
This Idea is good!
Edit:
But what if you want to play offline?
And there would be a Problem with Inventory Sharing:
You are on your own Server, you cheat yourself Mese Picks.
You go on another Server and you have MesePicks
Last edited by sfan5 on Fri Aug 03, 2012 17:52, edited 1 time in total.
Mods: Mesecons | WorldEdit | Nuke & Minetest builds for Windows (32-bit & 64-bit)

User avatar
xyz
Member
Posts: 450
Joined: Thu Nov 10, 2011 14:25

by xyz » Post

Just no. Minetest is not a FPS game where you can switch over several servers without losing anything. Also servers could be so different (for example, using different auth handlers) so centralized authentication is impossible.

ironzorg
Member
Posts: 46
Joined: Tue Aug 23, 2011 06:34

by ironzorg » Post

xyz wrote:Just no. Minetest is not a FPS game where you can switch over several servers without losing anything.
The point of a master server is to list available servers, how would a newcomer know what server to join without knowing it's IP address ? It provides a list of servers from which you can pick the one that you will make your house on, you don't necessarily have to switch.
xyz wrote:Also servers could be so different (for example, using different auth handlers) so centralized authentication is impossible.
That's precisely why I stated in my previous post that decentralized authentication is good too: the centralized one could only be used in order to save non-critical data about players (like their inventory, in case they want to save it from one server to another).

User avatar
xyz
Member
Posts: 450
Joined: Thu Nov 10, 2011 14:25

by xyz » Post

ironzorg wrote:how would a newcomer know what server to join without knowing it's IP address ?
Using "Servers" forum section or some monitoring service (like servers.minetest.ru)

ironzorg
Member
Posts: 46
Joined: Tue Aug 23, 2011 06:34

by ironzorg » Post

xyz wrote:
ironzorg wrote:how would a newcomer know what server to join without knowing it's IP address ?
Using "Servers" forum section or some monitoring service (like servers.minetest.ru)
Which is retarded: why would you ask somebody to fire up his browser and actually *look* for a server to play on, when the game could give him a proper list in-game ? And what would happen if all the third party services that list servers (manually what's more) came to disappear ?

User avatar
xyz
Member
Posts: 450
Joined: Thu Nov 10, 2011 14:25

by xyz » Post

ironzorg wrote:Which is retarded: why would you ask somebody to fire up his browser and actually *look* for a server to play on, when the game could give him a proper list in-game ?
Why not? That's how things were working for a long time (look at minecraft). That "server list" has no advantages over server's topic on this forum.
ironzorg wrote:And what would happen if all the third party services that list servers (manually what's more) came to disappear ?
What would happen if one master server (one < all) disappear?

User avatar
Calinou
Moderator
Posts: 3169
Joined: Mon Aug 01, 2011 14:26
GitHub: Calinou
IRC: Calinou
In-game: Calinou
Location: Troyes, France
Contact:

by Calinou » Post

Personally, I have nothing against a server list, however there should be an optional (disabled by default) way to enable a blacklist (not restricted to one blacklist - people could create their own blacklists, and you could "bind" your server to a blacklist). Plus, being able to see player count/ping time would be awesome. :D

mauvebic
Member
Posts: 1550
Joined: Fri Jan 27, 2012 11:32

by mauvebic » Post

I find it a pain ITA having to search through all the topics to find a matching version and then having to dig through pages sometimes to find out how to join/register and who's in charge, and if youre left with more than one choice than youll chose the one running mods you're familiar with lol.

You could add an announce function to servers, with a seperate url list to tell it where to send the updates, along with some basic info on whats running and who's on :-)
Last edited by mauvebic on Fri Aug 03, 2012 16:18, edited 1 time in total.

User avatar
VanessaE
Moderator
Posts: 4655
Joined: Sun Apr 01, 2012 12:38
GitHub: VanessaE
IRC: VanessaE
In-game: VanessaE
Location: Western NC
Contact:

by VanessaE » Post

I still stand behind my recommendation that minetest just needs an in-game server manager similar to what Xchat has. No need for central authentication or anything - just give the player a default list of known, working servers to pick from (preferably storing the player's server username and password with each) along with the usual fields to let them specify and/or add a server manually.

All that remains aside from maintenance of the code would be for c55 or someone else to issue updates to that list every so often to weed out dead servers and add new ones.

The default list and any updates could easily be created (just before each minetest release that is, not on-demand) from xyz's server monitoring page as long as it is reachable.
You might like some of my stuff: Plantlife ~ More Trees ~ Home Decor ~ Pipeworks ~ HDX Textures (64-512px)

User avatar
Neuromancer
Member
Posts: 958
Joined: Tue Jun 12, 2012 22:28
GitHub: Neuromancer56

by Neuromancer » Post

xyz wrote:
ironzorg wrote:Which is retarded: why would you ask somebody to fire up his browser and actually *look* for a server to play on, when the game could give him a proper list in-game ?
Why not? That's how things were working for a long time (look at minecraft). That "server list" has no advantages over server's topic on this forum.
ironzorg wrote:And what would happen if all the third party services that list servers (manually what's more) came to disappear ?
What would happen if one master server (one < all) disappear?
I have to agree with ironzorg. After watching youtube videos on Minetest, most of the folks just don't have a clue of the possibilities of Minetest, and then give it a Meh rating in their videos. Servers are an important feature that need to be dumbed down for the masses to really embrace it. It allows them to see first hand all of the mods and textures without having to install them. It also opens them to the community where they can ask questions like wow, that was really cool, how did you do that? I learned a lot by getting on servers. Making that easy is the best advertisement Minetest could ever have.

ironzorg
Member
Posts: 46
Joined: Tue Aug 23, 2011 06:34

by ironzorg » Post

xyz wrote:Why not? That's how things were working for a long time (look at minecraft). That "server list" has no advantages over server's topic on this forum.
Minecraft is not a reference, I don't propose features to minetest just because it works with minecraft, but because I think minetest would benefit from them.
xyz wrote:What would happen if one master server (one < all) disappear?
In this context, 'disappear' doesn't mean "going down for a while", it literally means "disappearing". What are you left with once the only thing that could list servers (and was useful to your players) magically disappear ? Nothing, because you relied one someone else to host a server you should have hosted yourself.
VanessaE wrote:I still stand behind my recommendation that minetest just needs an in-game server manager similar to what Xchat has. No need for central authentication or anything - just give the player a default list of known, working servers to pick from (preferably storing the player's server username and password with each) along with the usual fields to let them specify and/or add a server manually.
You can't have a default servers list, unless the owner of the game hosts a few servers himself (and thus ensures the community that those servers won't shutdown unexpectedly).
Moreover, authentication is merely an additional feature that is supported by my protocol, not something that has to be implemented by the master server (the most important thing for the master server is to give a list of {avail,play}able servers).

This is a typical conversation I had with several players that were curious about minetest (they were annoyed that minecraft took so much resources so I gave them an alternative):
player: How do I play
me: You can create a world from the main menu
player: SP is boring, is there a multiplayer mode ?
me: Yes, you can connect to a server from the multiplayer tab, in the main menu
player: What server should I connect on ?
me: You have to know the IP of the server, or you could join mine
player: How can I know the IP of the server
me: There's a servers thread on the official forums (minetest.net/forum)
player: Meeeh, I'll go to yours
[…]
player: I want to find a server hosted in my country, so I won't lag as much as on yours
me: I guess you can ask the guy who hosts the server where he's from
player: k

There are at least two things I wanna emphasize on here:
  • The guy had no way to find a server by himself (this is proof that the game is not user friendly enough)
  • He has no way to know on what server he can play without lagging (he might think the game is shitty just because he's playing on a server hosted thousands of miles away)
Obviously, `player` came back to minecraft. And he won't probably never try minetest again because he relied on somebody else (or had to look for a server by himself) the first time he tried the game.

Ghost_of_tino

by Ghost_of_tino » Post

My two cents:

Having a single "master" server is a stupid idea at any rate; any punter can create a server, hook it in and use ban privs to block others from connecting to any server thanks to a shared blacklist. On the other hand, an in-game server browser similar to that in games like Smokin' Guns is a jolly good idea - especially when you can change your meta-server.

For the time being, server ops can use rsync to add their changes/pull the list from a shared directory. This is a great idea for banlists, but downright idiotic when it comes to sharing inventory/auth.

Myself, I'd prefer to write a python script that announces to other servers when a player logs off and then offer the inventory up for syncing. It's really easy to write such a script, and those interested in running it could form a league of sorts.

sfan5
Moderator
Posts: 4094
Joined: Wed Aug 24, 2011 09:44
GitHub: sfan5
IRC: sfan5
Location: Germany

by sfan5 » Post

Ghost_of_tino wrote:(...)
Myself, I'd prefer to write a python script that announces to other servers when a player logs off and then offer the inventory up for syncing. It's really easy to write such a script, and those interested in running it could form a league of sorts.
sfan5 wrote:(...)
There would be a Problem with Inventory Sharing:
You are on your own Server, you cheat yourself Mese Picks.
You go on another Server and you have MesePicks
Mods: Mesecons | WorldEdit | Nuke & Minetest builds for Windows (32-bit & 64-bit)

ironzorg
Member
Posts: 46
Joined: Tue Aug 23, 2011 06:34

by ironzorg » Post

Ghost_of_tino wrote: Having a single "master" server is a stupid idea at any rate; any punter can create a server, hook it in and use ban privs to block others from connecting to any server thanks to a shared blacklist.
You obviously have not read my protocol, since only the admin of the master server can add bans to the main blacklist, it was at no point in the document said any server admin could add his bans to the main blacklist.

I didn't read the rest of your post, since you obviously haven't read this thread's messages at all, so your opinion would be irrelevant.

mauvebic
Member
Posts: 1550
Joined: Fri Jan 27, 2012 11:32

by mauvebic » Post

ironzorg wrote: There are at least two things I wanna emphasize on here:
  • The guy had no way to find a server by himself (this is proof that the game is not user friendly enough)
  • He has no way to know on what server he can play without lagging (he might think the game is shitty just because he's playing on a server hosted thousands of miles away)
Obviously, `player` came back to minecraft. And he won't probably never try minetest again because he relied on somebody else (or had to look for a server by himself) the first time he tried the game.
Im not sure we need more players "like that" lol its bad enough people bring me bug reports for other peoples mods' (wtf? lol) - if he/she cant even find a server on his own, then he/she will probably require the same level of hand-holding when it comes time to install mods, setup a server, or compile the latest git.

I still think: server announce -> central XML list (accessible by every one/website).
Last edited by mauvebic on Sun Aug 05, 2012 12:41, edited 1 time in total.

User avatar
Neuromancer
Member
Posts: 958
Joined: Tue Jun 12, 2012 22:28
GitHub: Neuromancer56

by Neuromancer » Post

mauvebic wrote: Im not sure we need more players "like that" lol its bad enough people bring me bug reports for other peoples mods' (wtf? lol) - if he/she cant even find a server on his own, then he/she will probably require the same level of hand-holding when it comes time to install mods, setup a server, or compile the latest git.

I still think: server announce -> central XML list (accessible by every one/website).
Minetest is pretty much useless out of the box. You need Mods, Maps, Textures, and Connecting to Servers to make it fun. And the truth is most people do need handholding doing all of these things. But I disagree with you. We do want these players. We do want a mass audience for Minetest. AND we shouldn't have to do any hand holding for them. That means we need to make all of these things easier. Meaning from the main screen in Minetest you should be able to pick a server from a drop down list, click connect, and just connect. You should be able to pick a mod from a list from another tab on that screen Click install, and it just installs. Otherwise Minetest will never be anything more than a playground for the tech savvy. Doing these things will be difficult, but we are a good way there. We already have xyz's servers monitoring service and we have Sfan's Mod Manager Repository. These are a good starting point and could be expanded on to get us all the way there. All of this can be done, it just takes some technical know how and some creativity.

mauvebic
Member
Posts: 1550
Joined: Fri Jan 27, 2012 11:32

by mauvebic » Post

oh god no, you know ive written enough mods to know it can sometimes take weeks to get a thread moved, and its not because the mod isn't finished, its usually some formatting issue. What you propose would put all game content through the same vetting process before appearing in some (fugly) GUI browser weeks later. I have a different idea for handling mods.

I still think listing servers is a good idea, save me trying to find a compatible protocol, so long as it stays simple :-)
Last edited by mauvebic on Mon Aug 06, 2012 18:21, edited 1 time in total.

User avatar
Neuromancer
Member
Posts: 958
Joined: Tue Jun 12, 2012 22:28
GitHub: Neuromancer56

by Neuromancer » Post

mauvebic wrote:oh god no, you know ive written enough mods to know it can sometimes take weeks to get a thread moved, and its not because the mod isn't finished, its usually some formatting issue. What you propose would put all game content through the same vetting process before appearing in some (fugly) GUI browser weeks later. I have a different idea for handling mods.

I still think listing servers is a good idea, save me trying to find a compatible protocol, so long as it stays simple :-)
Ok since that is related to modding, and this thread is related to servers I replied there. I'd say we should take your ideas, and store the Mod info in a MySQL database, which the GUI would use to allow users to install mods with the click of a button (with zero moderator approval).
Last edited by Neuromancer on Tue Aug 07, 2012 00:33, edited 1 time in total.

tinoesroho
Member
Posts: 570
Joined: Fri Feb 17, 2012 21:55
Location: Canada

by tinoesroho » Post

Confession time: I'm Ghost_of_tino - that's who'll be posting when I forget my password or can't login.

Here's the rub: who's to run the "master server"? How would one configure such a beast? How could the client change server lists? Before we can implement this, there's the logistics to consider.

To be frank, I love the idea of a meta-server. It would be nice to have a "Servers" tab in the main GUI that contains a server browser listing compatible versions, address and ping. Double-click to connect. But a master server? Not ready for primetime.
We are what we create.

I tinker and occasionally make (lousy) mods. Currently building an MMO subgame and updating mods. Pirate Party of Canada member. Sporadic author. 21 years old.

My github:
https://github.com/tinoesroho/

User avatar
Calinou
Moderator
Posts: 3169
Joined: Mon Aug 01, 2011 14:26
GitHub: Calinou
IRC: Calinou
In-game: Calinou
Location: Troyes, France
Contact:

by Calinou » Post

tinoesroho wrote:It would be nice to have a "Servers" tab in the main GUI that contains a server browser listing compatible versions, address and ping.
And this requires a master server.

Post Reply

Who is online

Users browsing this forum: No registered users and 7 guests