Hi all, I'm sending this mail following some discussions on IRC (#wesnoth-dev), in which I talked a little about a project I'm part of, and which seems to interest those wesnoth devs I came into contact with. So, for the benefit of the larger crowd, I'm now going through it all again :)
I'm a developer for a little project of the french association Nekeme Prod (I believe you've already had some contact with them), called the Free Gaming System. Our objective, simply put, is to provide open games with an open source alternative to systems like Battle.net and the MSN gaming zone. The website (currently a little bare) is at http://freegs.net/ . Especially, check out the http://freegs.net/Main/Overview , as it gives a technical overview of the system. To sum up for those who can't be bothered, we want to develop an infrastructure for scoring aggregation, with a backend providing ranking, tournament management and "community stuff". The short version of the following is that one of the two games we currently support in FGS is Wesnoth 1.0.2. We just wanted to 1. let you know that we're messing with your code ;), 2. that you might be interested in the FGS for building an official Wesnoth.org gaming community, and 3. that once we've stabilized our code a bit, we'd really like it if the patch to support the FGS was integrated in the trunk svn code for wesnothd. Now, for a looong version, including a lot of FGS-user-manual material and some technical specs of what it is exactly we're doing, to give you a clearer idea of what the FGS implies for you. To support the FGS, the games obviously have to be patched to report ranking info to the FGS infrastructure. As our main focus is providing community support for open source games, we decided on one overriding principle for now: our patches must modify *only* server software. The practical consequence of that is that an unmodified game client can play on an FGS-enhanced server, just as if it were any regular server. The only one who has to do extra work is the guy hosting the server. In the medium to long-term future, we'd also provide a client library to let games that want to integrate the FGS more heavily in their own client, but that's not for right now, and heavy integration is certainly not an obligation! So, if the client isn't modified, how does the FGS get ranking info? To answer that one, let me give you the use case of a gamer who wants to join a community and play a ranked game of Wesnoth on it. 1. The gamer goes to the community's website, which is running the FGS portal software. There, he signs up for an account and gets login + password. 2. The gamer downloads the fgs-client, a Python/Gtk2 program (packaged .exe available for win32). He starts it up, selects the community he just signed up at in the list of communities, gives his login/passwd, clicks connect. The news list in the client fills with community news, the chat tab boots a small irc client that takes him to the community's "lobby" chatroom, and more importantly, the game tab starts filling up. 3. The gamer selects "Wesnoth" in the game tab. A list of the community's Wesnoth servers appear, he selects the one he wants to play on, then clicks "Start game". 4. The fgs-client connects to the game server, does a little magic to tell the FGS patch on the server which (community registered) user is playing, then instructs the gamer to start the normal Wesnoth client and connect it to a multiplayer game on localhost. (In later versions, the fgs-client will automagically start the game client for him) 5. The gamer does so, and finds himself connected to the server he selected. He then plays a game just like he would normally. All his scores get sent back to the community portal to get added to his stats. That's it. The Wesnoth client is never patched, all the extra ranking magic happens exclusively through the fgs-client, which connects to the wesnoth server to authenticate the client, and then acts as a network bridge to which the Wesnoth client connects, relaying data back&forth between wesnoth and wesnothd. The FGS project is barely a few months old, but for the Solutions Linux 2006 convention in Paris, we put together the first working version of the FGS infrastructure. During the convention, we demo'd games of Tetrinet and Wesnoth being played, with ranking info displayed on the portal. The ranking info is still fairly rudimentary, but the version we put together for SL2k6 is not production-grade code. We're now actively working to redesign some components of the FGS based on that experience (me, I wrote most of the Python fgs-client, with a lovely gtk2 interface to replace the clunky first version of the client, and am currently redesigning the gameserver-to-proxy communication protocols and the proxy software). The first patch to wesnothd should really be considered as a proof of concept patch, to give you an idea of what integrating the FGS means in terms of code patching. The patch still integrates fairly badly into build systems (it was suggested on #wesnoth-dev that we provide m4 macros for integration into autoconf -- great idea! Once I've finished redesigning the stuff I'm doing now, I'll definitely take a look at that!), is not for the latest version of wesnothd, and sometimes has nasty bugs (that's why we're redesining that bit of the system ;) ). So, my original question was simply this: once we've finished tearing our codebase to bits and rebuilding it, would it be feasible for us to contribute a (reworked) patch to the wesnoth trunk code, to have FGS support directly in the official builds of wesnothd ? The second question, which emerged after some discussion on #wesnoth-dev, was about a ladder system. I understand you currently have a ladder system set up for those who wish it. Once the FGS is stabilized, I'd very much like to encourage you to move to using it, because it is cheap in terms of involvement (no client patching - those who want to use the ladder just use the fgs-client ontop of the wesnoth client), and should, if we get things right, give you a really cool open system :-). There was also talk by some of integrating heavily the FGS into the wesnoth client, to essentially support an "official" wesnoth ladder and community. I know there is a lot of disagreement around that question, so I'll just give you the technical rundown: right now, we do *not* provide an fgs-client-lib that would allow you to easily integrate FGS support in the wesnoth client. On the long term, we probably will provide it, but it will still be fully optional to have heavy client integration to game through the FGS. So, at present, it's technically difficult to get heavy integration and official ladder support directly in the wesnoth client, if you ever decide that you want that. In the meantime, you can still build an official wesnoth FGS community (just setup a portal and a couple of servers) and play on it with fgs-client + wesnoth, instead of a single fgs-wesnoth. Again, that's if you want to. The fgs-client will let gamers play on any community that they want to play on, so there's no sordid lock-in deal going on here. We want an open ranking system to go with open games :-) Uh, there. I have to go catch a train now, so I'm going to stop writing. I hope I summed up everything I said on IRC, and that I answered most of the questions/concerns that came up there. If you have any questions, I'll be happy to answer them the best I can. I'm subscribed to the list, so no need to Cc: replies to me. Thanks for reading, if you're still reading :) - Dave.
