Jump to content

all your master servers are belong to me


Recommended Posts

Posted

Crazy idea here, and probably not possible. Would it be possible to fetch the serverlist from multiple masters, and mash them together into one massive list? Obviously (if possible) you'll only have one entry per server (in case its submitting to multiple masters that your client receives). Although I guess I can agree with Caelum, we don't want dozens of master servers popping up.

Theoretically possible, but you'd have to recode a large chunk of the engine in order to allow for that. The method I used recodes only a single function in the engine, while the method you described would involve recoding the functionality of basically every single trap_LAN_* function in the engine.

 

I think the master server situation is a bit of a moot point however, for three reasons:

1. Clients can see multiple master server selections (up to 5 + however many extra cvars you make for it)

2. Servers can send packets to multiple master servers

3. Not everyone can just make a master server (you have to take the existing master server code and then change a few bits in it in order to support JA, something which isn't physically able to be done by most average people)

Posted

Theoretically possible, but you'd have to recode a large chunk of the engine in order to allow for that. The method I used recodes only a single function in the engine, while the method you described would involve recoding the functionality of basically every single trap_LAN_* function in the engine.

Surely you only need to modify the function that is called when the player clicks "get new list" to make it request info from several master servers rather than just one, and then add an if statement to whatever handles adding them to the list which checks if there is already a server listed with that IP?

Posted

Surely you only need to modify the function that is called when the player clicks "get new list" to make it request info from several master servers rather than just one, and then add an if statement to whatever handles adding them to the list which checks if there is already a server listed with that IP?

Not quite. The game keeps a running list inside the...cls structure I want to say. The UI module communicates with the engine in several ways, most notably with the way that it masks stuff inside the cls structure based on UI constructs ie the way it masks based on gametype/mod. It has a lot of different functions which are all interweaved in different ways that I honestly haven't looked into, I can tell though that the effort put into it would be a bit difficult.

As far as the code written for the multiple master servers, I did that using a clever little hack inspired by ioq3. I suppose one -could- query all of the different master servers and chuck them into one big list from the func I rewrote (the "globalservers" command, which can be called in base, albeit with a nerfed first arg (thx Raven... ._.)), however you'd run into issues with duplicate servers in the list.

 

Funny story about globalservers...it's syntax is this:

/globalservers <method> <protocol> <...packets..>

 

JA only supports protocol 26, which is perfectly fine, as it's meant to be game-specific. However, the method arg only supports "1" as an arg. In Q3, this supports 1 and 2 which function differently. I don't know how method 2 works, but it suggests that it works in a way similar to xfire.

Posted

Duplicate servers might not be too bad, considering I already have to spam refresh/get new list to get the servers with over 350 ping listed and somehow the action of doing that already gives duplicate servers.

 

But of course it's not so good if its 20x of the same server.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...