Server lists.

#1
This was suggested by someone when Regalis made a server for multiplayer some time ago, but seeing that it has not yet been suggested, I thought I could be of some help for a first!

Instead of having to spend so much time finding servers with players in them, a server list (displaying its IP, player count or even where it may be hosted (country)) would be more satisfying. Their could also be an option to make a server private by either having it not listed to the public (meaning the host of the private server would send the IP to their friends), or password protected.

Re: Server lists.

#3
I'll definitely add something like this at some point. I actually have a somewhat functional "server lobby" system somewhere on my hdd that I wrote for one of my older projects like 5 years ago (a dwarf fortress-ish multiplayer game that turned out to be a way too ambitious project to finish), it's probably a huge mess but there might be something of use in there...
InnocentSam wrote:This would require a master server. Each server would send a "heartbeat" to this master server, updating information such as player count, gamemode, server name, tags, players online, etc.

This would also require a decent server to handle these heartbeats (when Subsurface picks up more players).
The heartbeat could only be a few bytes sent maybe a few times per minute to let the master server know the server is still up and running, the other information (player count, server name, etc) could only be sent whenever they change. I don't think it would be particularly demanding to the server (unless the game is a massive success, in which case renting a good server shouldn't be a problem): all the relevant information about a game server could easily fit in a kilobyte or two and they only have to be sent when the information changes or someone refreshes the server list. I'd guess that running scpcbgame.com with megabytes worth of images and people downloading a >160 MB file is much more demanding.

Re: Server lists.

#4
And maybe alongside the server list, there could be a "favorites" list and a "recently played" list! To favorite a server, you would click a star icon next to its name in the server list. To get it in the recently played list, you would simply need to log on to the server and do something small (such as open a door)
aaaaaaaaaaaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

Re: Server lists.

#6
Spoiler
Image
Never thought I would be able to get it working this easily! The old php script I had on my hdd was completely unusable: the servers would send their IP address to the master server as a string, so anyone could've edited the details of any other server just by claiming to have the same IP, or flood the master server with new servers by sending a ton of messages with every IP from a to z. I found another script on the BlitzBasic forums though, and it was really straight forward to get it working.

One issue that I have now is that sending the "heartbeat" (just a HTTP request with one parameter) to the master server takes around 50-100 milliseconds which causes very noticeable "twitches" in the server window. The requests are only sent every 30 seconds (the time after a server is kicked out from the master is currently 60 seconds), but it's still pretty annoying and would probably be worse if there were more players and servers online. Time to delve into multithreading I think.

And obviously the server list will have to have more information than just the name of the server...