Wesnoth and me: 2018 edition


It’s been quite a while since I last properly talked about The Battle for Wesnoth in here — years, really. Some people know that at some point in 2016 I mostly stopped contributing to the project, aside from some server-side stuff such as maintaining the multiplayer games server (wesnothd) and the add-on content server (campaignd).

Since then, a lot of people new to Wesnoth, as well as people not familiarized with Wesnoth, have heard about me, and they don’t really know what it is I’ve actually done over the years. So, I thought it would be a good idea to write about my involvement with this game since I happen to feel like writing walls of text stuff right now.

So, where shall I start?

I first came across Wesnoth in 2005, at version 0.9.x. I immediately fell in love with the game’s astounding quality compared to all other open-source games for Linux at the time. During the next year, I started to tinker with making maps and scripts for a few custom campaigns of my own. Some of the ideas in them would eventually find their way into Invasion from the Unknown and After the Storm (more on this in a separate blog post some day).

I joined the community in late 2006 but it was only in 2007 that I decided that it would be nice to give something back to the community, especially seeing as how the development team has always been comprised of unpaid volunteers donating their time and energy. There was a feature I wanted implemented, I implemented it with a developer’s help, and voilà, I became a mainline developer after that and a few other contributions. Over the next few years I would start digging deeper and deeper into the game’s innards and fix and improve code in a bunch of areas, such as:

  • Adding team leader gender selection to the multiplayer lobby UI. This actually happens to be my first contribution ever, in fact.
  • Adding new commands to the scripting API Wesnoth uses with its custom scenario programming language, WML.
  • Managing art contributions and patches from new code contributors.
  • Tending to bug reports in areas such as UI and internationalization.
  • Improving UI components by porting them to the newer UI framework (GUI2) as needed/possible.
  • Adding new features to the the in-game add-ons management UI to solve various usability issues dating as far back as 2004. Sadly, this particular point took me an absurd amount of time (about 6 years) to completely address, mainly because I spent years waiting for code changes to GUI2 that never happened.
  • Other quality-of-life improvements in later years, such as a recent files menu for the game’s built-in map editor, a dialog with a listing of game data paths for 1.12 (which I would eventually turn into a more detailed game version info dialog in 1.14), and a dialog for controlling game cache options. Also, a lot of changes and fixes involving UI design consistency/quality issues.

Nearly at the same time as I became a developer, I started publishing my campaign Invasion from the Unknown as player-created content, back then a very early work in progress with only a couple of scenarios completed. Months later I completed IftU and set out to write a sequel, which would become After the Storm. Thus my long journey into the fields of storytelling and pixel art began.

During late 2008 and early 2009, I also took over the abandoned Spanish translation of the game, with help from another translator, and brought it to 100% completion after about a year of stagnation, just in time for the 1.6.0 stable release. It was at this point that I learned first-hand just how stressful it is to translate a game that these days has over 17,000 strings of text, many of them consisting of multiple paragraphs. Needless to say, I retired from the translation team not too long after this milestone.

In 2009, after our previous forum administrator went MIA, I took over forum platform administration duties, in particular helping our then forum admin Turuk with the technical side of things while he took care of reorganizing the moderation team and serving as our de facto community manager. Unfortunately, at the end of July, he also went MIA leaving incomplete changes behind, such as demoting all existing moderators at the time. The development team took over moderation duties for the following months.

Here’s the thing, though: allowing game developers to moderate their own community just does not work in practice. People get very emotionally attached to their design decisions — not saying that this is the wrong thing to do — but as a result, any interaction with people who have dissenting opinions tends to go a bit sour for both parties. After a while, I began to realize that no-one was going to step up to fix that social mess, so I used my powers as platform admin to assert myself as the new front-facing forum admin and new leader of the moderation team, continuing from where Turuk left off with a few people I hand-picked from the community, as well as a previous moderator. As time went on, I had more people join the moderation team, including Derek (Gambit/Grickit), who went onto become forum co-admin for a while.

Throughout 2013, because the existing Wesnoth.org staff (Rhonda and Soliton) had very little time in their hands to help with a full server migration, I took up additional responsibilities over our server platform, including the wiki, website, database server, add-ons server, and multiplayer games server.

Towards 2014, it started to become increasingly difficult to keep both a dwindling community of players and a smaller development team on track. One particular issue is that Nils (Ivanovic), our Project Manager who had been in charge of the project since around version 1.2 (2006/2007), had far less time to tend to project admin matters than he used to, mostly limiting himself to managing translations instead. This resulted in a lot of situations throughout the 1.11.x development cycle which I had to handle entirely on my own, including enforcing certain code quality requirements, as well as writing the development release announcements for the forums. (Attentive people might have noticed that I started posting those myself around version 1.11.7 in particular.)

Wesnoth 1.12.0 was released in November 2014, accompanied by my first website design made specifically for Wesnoth.org, the release notes design (codenamed “Westin”).

As is the norm with new stable releases, a lot of bugs were reported by players shortly afterwards, and a 1.12.1 patch release was required. Ivanovic and I had talked in advance about his lack of time, and we made sure that I had full knowledge of the technical procedures involved in preparing new releases in case he became unable to publish any given release on the scheduled date. Thus Wesnoth 1.12.1 became my first Wesnoth release ever as Project Manager, and 2015 subsequently became a year of difficult decisions for me.

With my newfound responsibility over the project, it started to become evident that I could no longer continue to serve as the de facto Community Manager for the game. I also ended up in an awkward situation where I was essentially in charge of a nonexistent development team because of several core developers leaving over the previous year. To make things worse, I was also now in charge of deciding when and how to bring Wesnoth into the (now defunct) Steam Greenlight program as a first step to eventually publishing the game on Steam to reach a wider audience.

Eventually, Charles (Vultraz) came up with an announcemennt which, albeit over-dramatic in hindsight, pretty accurately describes the situation even to this day. This would be one of the main driving factors behind my eventual decision to promote him to Community Manager and make the title a formal one for the first time in Wesnoth’s history as a project.

During 2015 my focus as a developer was primarily on paving the way for future server code changes by making a codebase dating as far back as 2004 maintainable again. But as a Project Manager, I found myself trapped in a situation where I had to guide people who did not really want to be guided. Like I said before, Wesnoth is a volunteer-driven open source software project. Because no-one is paid to do anything in particular (other than art commissions), it is effectively impossible to impose goals on people, especially if they disagree with those goals, as people are wont to do. And to be perfectly honest, several members of the development team — even as of this writing — fail to see that a community-driven software project (let alone a game) that does not listen and cater and keep its own community actively interested in its development is not self-sustainable, even though they also came from said community themselves.

As a result, throughout my administration I erred on the side of caution and did not make as many demands from people as I could have made. The only concrete goals I had in mind for Wesnoth 1.14 were publishing the game on Steam, and porting the game engine to a newer version of the SDL library. The latter goal was slowly but surely accomplished that year. Even just starting our Steam Greenlight campaign was a goal which I repeatedly subjected to procrastination out of fear that the project was not ready for it at any level — development, community management, and game server moderation mainly. The development team’s constant apathy and some key people’s willingness to overlook certain unsavoury situations did not help matters. Towards the end of the year I was completely unmotivated to keep being responsible for an endeavour that wasn’t going anywhere any time soon.

After one of multiple breaks from Wesnoth development during the first two months of 2016, in March that year I stepped down from the Project Manager role without a designated successor. Charles immediately took over since he already had a specific schedule in mind for the next development release (1.13.3). Thus he inherited a burden that I should never have made mine to begin with. He continues to be Project Manager and Community Manager as of this writing, despite my original intention to keep both roles separate.

Throughout the rest of 2016, my contributions to Wesnoth consisted almost exclusively of server-side stuff, as well as a few UI-related changes such as the new file picker dialog. In the meantime, Charles successfully got Wesnoth “greenlit” on Steam, paving the way for the eventual full release of 1.14.0 on that platform on May 1st 2018.

In 2017 I was approached by Charles again to complete a full redesign of the Wesnoth.org website that I had been working on since approximately 2011 every now and then. In two months I took what I had and made it into a full functional website design, which I eventually deployed around July 2017. This design (codenamed “Wesmere”) is still in use as of this writing, and probably will continue to be for the foreseeable future. Sometime before that I also handed over the front-facing aspect of forum administration to Pentarctagon, since I no longer had the energy to sort out a stagnating moderation team in preparation for the eventual Steam release.

In 2018 I started contributing a few patches again when it became evident that Wesnoth 1.14.0 was imminent. I volunteered to make a new design for the 1.14 release notes (codenamed “Lintanir”), and helped sort out various technical loose ends (mostly involving game internationalization) just in time for the official Steam launch.

And now, we are here.

I’d like to believe that my days as a Wesnoth contributor are pretty much over, but I find myself coming back to Wesnoth not long after I have already decided to quit. Every. SIngle. Time.

Part of this is because as one of the few senior developers still around that’s actually dealt with almost every single aspect of both the codebase and the project itself, I have knowledge of areas that remain a mystery to some of the newer developers. The other part is that in spite of all its flaws, I can’t deny my love for this game that has brought me so many great memories and enabled me to meet so many great people (both from its own community and others). I could just stand back and watch it die out on its own, and then feel guilty for not making even the slightest effort to prevent that outcome. And although I would like to make a more substantial effort, right now it is pretty much impossible for me to dedicate all of my time to Wesnoth given the current state of things both in the project and in my life.

I continue to be part of the Wesnoth.org staff team keeping the website running. I also step in whenever people are confused about whatever and need help figuring things out, whether it be about the codebase, project, forums, or wiki. I am also a moderator and admin for its official Discord server, and continue to serve as a moderator for the forums and MP server as well, sometimes.

I guess only time will tell exactly what I will be doing next, if anything at all.