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.

Reply via email to