SummerOfCodeProposal IneQuation

From The Battle for Wesnoth Wiki

This proposal is a stub that's currently being worked on.

The student

My name is Leszek Godlewski and I would like to apply to work on Battle for Wesnoth in the course of this year's Google Summer of Code.

I'm a student of the Staszic High School [1] in Tarnowskie Góry, Poland, in my final year of pre-university education, attending a class with focus on mathematics and physics. I'm hoping to go to the Silesian University of Technology [2] next year to study computer science.

I treat the participation in GSoC as a means of joining the pleasant with the useful: programming (game development in particular) is my passion, and the experience for future work in this profession that I can obtain from this program is invaluable.

I chose to help with the development of BfW for several reasons. Firstly, because I come from a game modding background, and game development is bringing my passion one step further. Secondly, because I'm a free software enthusiast, and through some FLOSS promotion activities I took part in I found out that the relative lack of attractive games is one of the main reasons that casual users stay away from free platforms. I'd love to be part of a movement that changes that.

I haven't participated in BfW development yet, but I've played it several times in multiplayer mode. It was one of the most popular activities in the FLOSS workshops I ran.

Experience

Programming

As of yet, my record in the programming department is a humble one, despite having been coding for 8 years now. It includes mainly unreleased work, concentrated around games: Medal of Honor: Allied Assault, Quake 3 and Wolfenstein: Enemy Territory mods (unfortunately, none of those built for the latter two actually got past early alpha versions), lots of little utilities built to speed up everyday work or perform small-scale fun research, some stand-alone id Tech 3 (a.k.a. Quake 3 engine)-based efforts (mostly unfinished, too) and a few strictly open-source projects:

  • q3mass – a Quake 3 master server; stub but operational state
  • libscotty – a simple text UI library; plug-and-play wrapper for curses, appears stable and suitable for use
  • OpenMoHAA – a game engine recreation project that aims to modify ioquake3 in such a manner so as to run Medal of Honor: Allied Assault game assets; some asset loading routines (including levels) working, project currently on hold due to lack of interest from the MoHAA community
  • Mobile Arena and the Destination engine – my own, built-from-scratch game engine technology and its showcase game; about 60% of the planned infrastructure in place, currently on hold due to school responsibilities
  • z0mg antihax (unreleased yet) - heuristic/behavioural analysis server-side cheat detection system for first-person shooter games; general framework in place, data collection mechanisms in stub state, currently on hold due to school responsibilities

For more information on these projects, please see my Ohloh account [3]. I am all too willing to add Battle for Wesnoth contributions to this list.

My language of choice is ISO C (with about three years of experience using it), but I'm also comfortable with C++ (about two years). Other languages I've used include Pascal, Lua, Python, PHP and a bunch of dedicated scripting languages for games.

Due to the game modding background, I have a pretty good understanding of computer graphics and spatial geometry and mathematics. This includes some SDL and OpenGL experience.

Teamwork and GSoC

I haven't really worked in a team environment before. Some of my mod projects involved were team-driven, but even then I was the only one in my department. OpenMoHAA was a team effort (with me taking the lead), but the development history is so short that it's neglectable.

This is my first time in GSoC. As for other projects, apart from Battle for Wesnoth I am applying to work with Crystal Space and considering OGRE and BZFlag.

Gaming

I got my first computer at the age of five and instantly fell in love with games. I'm not a hardcore gamer, though. I see games as the ultimate means of storytelling - I prefer to set the difficulty to "easy", immerse in the storyline and role-play, instead of getting engaged in demanding, but depth-lacking gameplay. This doesn't prevent me from enjoying simpler games, however. Considering this, it may sound ridiculous that first-person shooters are my favourite games; but it's not, really, given that my all-time favourites (MoHAA, Operation Flashpoint, Project Reality mod for Battlefield 2) involve a fair deal of role-playing in multiplayer.

I'm also more of a tinkerer than a player. Sometime around 2000 I had what could be described as my first attempts at game modding. It wasn't long till I noticed that changing the way the games are played is more rewarding for me than actually playing them, and soon I became involved in the modding communities for several games.

Communication skills

As for the language, I'm a holder of a Cambridge ESOL Certificate of Proficiency in English. I'm a gamer and a former game modder, so I've got a history of interaction with players and I think I can handle it pretty well. I think my advice usually is constructive, but it's hard to judge yourself this way. I have absolutely no problems receiving and obeying advice coming from a competent person and supported by logical arguments.

Contact information

  • IRC, the forums and the wiki: IneQuation
  • Gna!: inequation
  • E-mail: ineqvation <at> gmail <dot> com
  • XMPP (Jabber): same as e-mail

The proposal

I chose to work on the multiplayer server lobby simply because the idea represents an interesting field of research to me. I'm a long-time Starcraft player and Battle.net user, so I can relate to it, and the design and development of such community-building and match-making features has always intrigued me. In the course of the project I would like to produce a lobby that is legible, flexible, useful and easily maintained (moderated).

Features

Some features I'd like to implement are:

  • IRC/Battle.net-like chat features
    • rooms
    • extended private messaging
    • friends lists
  • game sorting/filtering with all the reasonable criteria
  • match-making facilities
    • ranking players
    • finding opponents with similar level of experience
    • tools for automated organization of tournaments and ladders
  • bookmarks

Possibly more, inspired by other lobbies/match-making services.

Schedule

A rough timeline of the project is as follows:

  • Familiarise with the existing multiplayer server code by May 23
    • I have the Matura exams (the exams at the end of secondary education) in the first half of May, which means I won't be able to devote a lot of time to the project then and in the period leading to it, but once I'm done with them, this summer's probably the longest holiday of my life, and I've subordinated all of it to GSoC
  • Study similar existing systems, such as Battle.net, Westwood Online/XWIS [4] (these two are well emulated with the PvPGN project [5]) and Steam and develop a plan of features in the first two weeks
  • Implement all the planned features by August 1
    • There is a small interference possible from mid-July to early August, as I'm visiting my sister in Spain, but it shouldn't hinder my working capabilities as I will still have full computer and internet access
  • Spend the last two weeks perfecting and documenting the code

Expectations

I hope to gain experience in the fields of UI design and match-making, working with a more serious and large-scale application of theory than what I've done so far.

The acceptance of this lobby changes project would definitely be a major factor in making me stay in the community. Since it involves a field I have never visited before, I would be eager to further explore it after the conclusion of SoC. I might be getting into AI development afterwards, too.

Practical considerations

I'm pretty confident with C++. I have used parts of the STL, although I'm no expert at it. Boost is something I heard about but never used before. S­­V­­N is a tool I use frequently and can't imagine software development without, even when working alone - the possibility to revert the changes at any given point is priceless.

For development I use mainly the Code::Blocks IDE, since it provides nice ways to organize your projects and integrates most of the necessary tools. Kate (KDE's Advanced Text Editor) is extremely handy for smaller-scale stuff. Apart from that, I use GDB and gprof extensively.

I speak Polish (my native language) and English. I'm usually awake roughly between 0800 and 0000 UTC, but I tend to sleep until later and stay up longer on weekends. During the period leading to the coding start date I can only be present in the IRC channel for short periods of time in the afternoon and/or evening, with increased availability later on. I've got a shell account, though, so I can idle the channel 24/7 and answer when I get online. I don't mind speaking to my mentor on the phone or VoIP.

To be continued and expanded

This page was last edited on 20 March 2013, at 19:43.