Jump to content

Online Lobby?

Recommended Posts

I know this obviously isn't going to be high priority, but in terms of multiplayer support, has an online lobby been considered to list "public" games for people to join, or is the idea to keep the current system where you must know the IP of a player hosting a multiplayer game.

Link to comment
Share on other sites

  • 3 weeks later...

You may consider adopting the multiplayer metaserver developed by Bungie for Myth, and later open-sourced. The latest version of it can be downloaded here: http://projectmagma.net/downloads/opensource/mythserver_rev67.tar.gz

It basically works by allowing clients to join the metaserver, providing them with access to a number of "rooms" in which people can chat, and games can be hosted. Within a room, you can join a game that someone has hosted, and when the host is ready the game begins without having to know any IP addresses etc. When the game's over you're back in a game "lobby", where the game can be changed and restarted, or you can leave to rejoin the main lobby of the room you were in.

The server is also capable of storing game results for use in ranking tables etc.

Myth multiplayer took place for many years on a site (now gone) called playmyth that ran this code, and now mariusnet.com has taken over the hosting, albeit with separately developed metaserver code.

The Marathon Aleph-One open source project also use the mariusnet metaserver, and therefore you can peruse Aleph-One's code for an implementation of how it works from the client-side.

Of course 0AD developers might prefer their own solutions, but its worth considering - the Myth metaserver is very stable and works well, why re-invent the wheel etc etc. :)

Link to comment
Share on other sites

The server code need have nothing to do with the code for the game itself. Its not linked with it, its not aggregated with it - its totally separate. Its not even something you'd distribute (unless you wanted to), as you'd only need it for running 0AD server(s) - the only restriction is that you couldn't run a server for commercial purposes, ie charge money for people to join up for multiplayer games. Is that's what is intended for 0AD?

The code that _would_ need to be part of 0AD is the client-side logic that talks to the server, an implementation of which is in Aleph-One, which is GPL.

If you still consider it to be unusable due to the non-commercial clause in the server license, well such is life I guess :)

Edited by slipshod
Link to comment
Share on other sites

Hmm, true, it would probably be legally fine, but this is an open source game project and the lobby/master/meta-server is an important component of the project so I believe it morally should be open source too. It probably wouldn't make much difference in practice since ideally only one person in the world at a time will be running the server (to avoid fragmenting the community), but it matters in principle and I'd prefer to not compromise on principles unless there's a hugely compelling reason :)

(On a technical level, from looking briefly at the code it seems to have a fundamentally broken approach to cryptography (it uses rand() for keys and salts, which destroys any security properties it might otherwise have, and it XORs with a session key instead of using stream ciphers properly, etc) which doesn't indicate high-quality design, and it's written in C with lots of pointers and fixed-size arrays so I'd have no confidence that it isn't full of potential buffer overflow vulnerabilities etc. I think security is critical for servers (at least in principle, which is enough) and it'd likely take more effort to audit and test and fix code written in C than to start from scratch in an easier and safer language (e.g. Python). So I think there's good reasons to reinvent wheels :))

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Create New...