ID:847517
 
Applies to:Website
Status: Open

Issue hasn't been assigned a status value.
I'd like a way to pull detailed server information from BYOND hub pages. Currently there are ways to just parse the hub page and get simple information such as server addresses and player lists, but I want something more complicated and versatile.

The way it would work is there's something similar to the world.status variable. Rather than just a text string it's a list of parameters which can be almost anything the developer could think of. It could be map names, match types, player counts, ban lists, event timers, and so on. This information wouldn't be displayed on the actual hub page, it would just be something you could grab in-game by asking the hub page for it, kinda like how medals work.


"But SAx, you can do this yourself by maintaining your own server database!"

While this is true and I've even done it myself, it's a huge pain in the butt and I don't want to have to maintain a master server when I could just get the same features from buying a BYOND Membership and using the BYOND hub pages. To me this feature fits in perfectly with the way the BYOND website is shifting into more of a service. Even if you break your game completely away from BYOND something like this would still be incredibly useful.
something similar to the world.status variable

something you could grab in-game by asking the hub page for it

Wait, so are you asking for a server to be able to include hidden details about itself on the hub page, or are you asking for the hub page to store global game parameters?

The first one, I'd like servers to be able to tell the hub hidden information about itself. Other servers would be able to read this information.
So, I had this idea.

http://www.byond.com/games/SuperAntx/ Decadence?format=md5(hub_password)

This is probably secure, as it's doing it straight through world.Export(), and knowing the md5 hash won't do much, anyways.

This 'format', would allow servers to send information via world.topic() to BYOND's hub, with any parameters they choose to send. BYOND would require knowing the hub path, the hub password to know what hub to assign the information to.

So, for each world, it'd display like it does in save file format, like it does for the text format:
world/1
server_address = 192.168.1.1
server_port = 9001
map = "Far Far BYOND Land"
banned = ("cockadoodle", "dan", "mikeh", "shadowdarke")
playercount = 9001


You'd be able to access this info just like you do currently with the text format on the hub, it's just not shown publicly on the hub.
I'd be happy with seeing this happen. (:
I'm guessing there's a size limit on world.status that prevents you from packing this much extra information into it.

There's probably a way to use the hub's scoreboards to write data that other servers can read. I'm not sure the ability to read scores from the hub would be satisfactory for this (it'd probably take multiple queries to get all of the data). It's still not ideal but it beats having a central server that everyone uses world.Export() to communicate with.

It'd be nice if this was handled by giving each member their own database with a small amount of storage. This and many other things would be much easier if you could just define tables and call a DM proc to execute an SQL query against a specified hub entry's database.