Hey guys - me again!
I've always been interested in how the lobby server works, so a few days ago I started playing around trying to work out the protocol and have finally come up with something that appears pretty stable and can talk to the Soldat client. It doesn't implement 100% of the protocol and some of the filtering options don't work perfectly, but it generally seems to work well. You can grab the files and code here (you'll need a recent version of Java to run):
[URL]
To run, use the start.bat file provided or from the same directory type:
You will need UDP port 13073 open to run the server.
To use the server with Soldat, you will need to edit your lobby_servers.txt file.
Type 'help' to see a list of commands once you've got it running
What I think is especially useful is the feature to 'mirror' another lobby server - so you can run your own lobby server and instantly get all the servers from another. This brought up two ideas:
1) My own lobby server viewer? Then I considered that Michal has done an excellent job with the one built in to Soldat and ASE is also excellent even if it isn't free, so there might not be much point. This would also be a lot of work and something I wouldn't be prepared to get stuck into right now - maybe someone else could use my findings and code as a base for a fan made one? Any comments?
2) To ease the load on the main lobby (or two lobbies now) - what about a distributed network of synchronized lobby servers to share the traffic? There could be one master server that receives the client's request to get a list of servers and then diverts it to the server that currently has the least traffic. Anyone would be able to run their own lobby server which, when started, registers itself with the master server. On the plus side this would greatly improve reliability (unless the master server went down), scalability and probably speed, but on the down side people's Soldat servers would have to talk to all lobby servers instead of just one for updates (although these occur every 10 seconds and are only 23 bytes). Of course this would be a huge project and again might not be worth the work.
Anyway, I just though I would share these interesting findings and my ideas. Looking forward to hearing replies :)
I've always been interested in how the lobby server works, so a few days ago I started playing around trying to work out the protocol and have finally come up with something that appears pretty stable and can talk to the Soldat client. It doesn't implement 100% of the protocol and some of the filtering options don't work perfectly, but it generally seems to work well. You can grab the files and code here (you'll need a recent version of Java to run):
[URL]
To run, use the start.bat file provided or from the same directory type:
java lobbyserver.LobbyServer
You will need UDP port 13073 open to run the server.
To use the server with Soldat, you will need to edit your lobby_servers.txt file.
Type 'help' to see a list of commands once you've got it running
What I think is especially useful is the feature to 'mirror' another lobby server - so you can run your own lobby server and instantly get all the servers from another. This brought up two ideas:
1) My own lobby server viewer? Then I considered that Michal has done an excellent job with the one built in to Soldat and ASE is also excellent even if it isn't free, so there might not be much point. This would also be a lot of work and something I wouldn't be prepared to get stuck into right now - maybe someone else could use my findings and code as a base for a fan made one? Any comments?
2) To ease the load on the main lobby (or two lobbies now) - what about a distributed network of synchronized lobby servers to share the traffic? There could be one master server that receives the client's request to get a list of servers and then diverts it to the server that currently has the least traffic. Anyone would be able to run their own lobby server which, when started, registers itself with the master server. On the plus side this would greatly improve reliability (unless the master server went down), scalability and probably speed, but on the down side people's Soldat servers would have to talk to all lobby servers instead of just one for updates (although these occur every 10 seconds and are only 23 bytes). Of course this would be a huge project and again might not be worth the work.
Anyway, I just though I would share these interesting findings and my ideas. Looking forward to hearing replies :)