TAKKARIA.org

Angband: Maintain or Develop?

When I took on Angband, I didn't know quite what to expect, or quite how to get the community active again. Here I talk about my experiences to date and outline my vision for the future of the game.

The start

Back in December 2006, I released a patched version of the then-current Angband release, 3.0.6, under the moniker "3.0.7s". I took the inspiration for this name from Robert Rühlmann's similarly rogue release of Angband, 2.8.3h, which served him as a gentle step into the position of maintainership.

At the time, I was somewhat concerned about the future of the game. It had been a good year and a bit since the previous release, and the newly-appointed maintainer hadn't written any code, at least publicly. People on r.g.r.a were muttering about needing squelch support, and also about the way recharging had been changed in 3.0.6. I also had a number of patches lying around, most of which had been around for a number of years.

When Julian was sworn in as the new maintainer, there was some expectation that he would do something fairly soon. As the months passed, I thought perhaps I should have a look at the squelch patch and see if I could knock it into shape to submit to him so he had less work to do. I was actually quite alarmed at the state of the code for the squelch patch, and I ripped it apart and rewrote chunks of it.

Time moved on, and given Julian's lack of activity, I thought perhaps I should make a rogue release to prod him into action, as a kind of a "do something or I might branch!" warning. It got a reply from him, but overall it was a mistake, because it turns out I had more time to maintain the game than he did... and I ended up with the dubious job of maintainer.

My main interest in V had always been in the code and its UI, since I had never been very good at the game (I have won it once, and that was with save-scumming); so ending up with the job of lead developer—while something I'd toyed with when Robert was looking for a new pair of hands—wasn't something I was adequately prepared for.

A fresh pair of hands

I was careful after I took over to court people who had written patches to ask if they had any they would like incorporating; I figured that I had to win respect from the community rather than just expect it, and so I was a little tentative at first. I try and keep this up today; if someone submits a patch with working code, I do my best to get it in the game proper as soon as possible.

In the spirit of my original rogue release, a lot of what I did at the beginning of my stewardship of the game was simply to try and open up its development. I had seen how open-source software worked, and I tried to model that. Previous maintainers had used a TODO file, and presumably tracked bugs in a private file on the hard disks; I set up a public bug tracker, and took the occasion to use a more modern version control system at the same time. I also set up a wiki, and (somewhat later) a nightly autobuilder. I granted people commit access to work on the code directly, and also an IRC channel where people could talk, and a mailing list where people could post.

Most of these things, well, their fruit has taken some time to ripen. The bug tracker had a lot of churn at the beginning where I didn't quite know what should go there or what shouldn't, how granular bugs should be, and the like. The IRC channel was just me and my brother for a while (though now it has a number of present and past contributors hanging around), and for the development mailing list to be used with any kind of regularity took longer. However, all these things have paid off, and now the game is in a much better and more open state, and I hope I have fostered the idea that anyone can just dive in and code. I would like to open it up even further, but I'll discuss that later.

I know I'm not going to be around forever, and so I've done my very best to game and its code into a good state for someone else to take over if I disappear or drop out, and put processes into place so that when someone else takes over the reins, they don't have to go keeping a private todo file or buglist, or have to figure out things right from scratch. The other major of advantage of being as open as V development is that it tends to attract contributors, and having regular developers other than oneself far reduces the chance of burning out on the job.

Maintenance and Development

A question which took me a while to answer when I took on the job was whether I should be developing or merely maintaining Angband. Angband has a long history of maintenance; the period of 1999-2006 was quite slow-paced for the game in terms of big changes, with the vast majority of changes being interface changes, code cleanups, and bug fixes. Whilst I believe this might have been sustainable back in the early 2000s, in the days of the variant explosion and its aftermath, I don't believe it is now. In the middle of 2004 newsgroup traffic dropped sharply and has continued to decline ever since. Keeping Angband on a drip feed of maintenance releases would do less than keep existing players.

It's taken me a while to come to that conclusion, but there it is: I believe that to keep the game and the community around the game healthy, V has to have fairly regular and fairly interesting updates—it has to be developed, not just maintained. Gameplay changes are the the lifeblood of Angband; without them, it grows stale.

None of this is to say that FAA, Un, Steam, NPP, Z+, or the other, less-actively maintained variants, don't have a massive role in keeping the community healthy: they're absolutely essential to the Angband world. But Vanilla has to do its part too, and if it goes for too long without any meaningful changes, the number of active players drops off.

Maintaining Vanilla is, I daresay, a harder job than maintaining variants (with apologies to Nick, Andrew, et al.). With a variant, the creator is the maintainer, and if you have a vision, you can carry it out; there is no issue of staying true to some of idea of "the game". I came to V, as I imagine some other maintainers have, largely without any vision but "code cleanup and maybe other stuff". However, to develop the game requires a vision, and it's taken me a while to figure out just where I want to take it. As far as I can tell, the only people who ever had an overarching vision for the game were the creators, and that was pretty much "Moria, but with more stuff".

A vision

As a result, I've been mulling over the possibilities for the future in recent days and trying to work out just what I want to achieve. Here's what I've come up with. First, I want new players and friendlier interfaces. Second, I want device-indepdence and ports to handhelds. Third, I want more fun, and less tedium. Fourth, I want to do serious work in modernising the code. And fifth, I want coherent explanations for how things in the game work.

First, new players. I'm not content in keeping Angband with the existing player base; I want to draw in basically all the people who would be interested in playing Angband and make the interface good enough so that they can pick up the basics without getting scared off. Any work towards this goal is work towards keeping Angband alive and healthy, since new players are the lifeblood of the game. I have several ideas for how to move towards this; contextual help to reduce the learning curve, shipping a fullscreen SDL port as the default build on Windows, and getting graphics support up-to-scratch.

Second, device-independence. I see a future for Angband on the DS, on the iPhone, and other handhelds, which is a long way from where Angband started (VMS Moria, on a mainframe console screen). I have no interest in stopping the game being played in 80x24 terminals, but portable devices offer a really good way to distribute the game and get more players. The only way to achieve native ports on handhelds is to do some pretty heavy lifting in the code and abstract the game away from the interface, and there is some work underway on that.

Third, more fun and less tedium. Right now, I'm working on the junk problem, because that is a big tedium thing. Store stocking is also a recurring complaint, and I'm looking at ways I can change that to make it less tedious whilst making the game no less challenging. After I've removed tedium, I'll look into adding more fun, which is stuff like importing well-loved and well-tested features from variants such as extra terrain types.

Fourth, code work. Angband desperately needs rewriting in several places, and refactoring (splitting up the code into more sections) in others. Angband might be fairly clean for a roguelike with its origins in the now-obscure programming language Pascal, but it's not clean enough. This has implications for variants; mostly in that it's hard to keep up with V when things are being moved around all the time. I try hard not to be gratutiously incompatible with how other people do things, but some code churn is inevitable. Sorry, guys.

Fifth, explanations. In altering gameplay, it's very useful to have some kind of in-game reason as to why things work the way they do, or changes can get quite inconsistent and feel lacking in design. A example of this is the ID system; in 3.1 I tweaked some of it for the better and some of it for the worse, but I had no overall conceptualisation of just how it worked. What I am going to work on in future is a coherent internal world for the game, so that it all makes sense in terms of itself. Note that this is not the same as explanations from realism: I have no plans to stop people wielding a lantern on one finger, a ring on another, a shield on a third, a bow attached by a clever pulley system to a fourth, and a sword shoved under the arm. It's more about figuring out how you can tell what abilities items have, who made the cursed items in the dungeon, and the like, since those explanations impact gameplay. These explanations, when written down, will also serve as useful design documentation to future maintainers.

Conclusions

I think the above is a fairly good sketch of where I want to see Angband going in the future. I should note as well that one of my chief concerns with the game is simplicity. I don't like options or things which complicate gameplay for very little reason (such as store discounts), and I try very hard not to add additional complexity unless it is absolutely required.

I believe that all of the above, together, will help keep the community alive and kicking, as well as making sure the code of Angband is not left behind as antiquated or anachronistic. I welcome comments and questions, but really I'm writing this to lay out my thoughts and hopefully explain to the world my approach to the game's ongoing development.