Friday, 14 January 2011

3.0.7s to 3.2: what next?

Today I read Nick's post which links to a 2006 thread on the Death of Angband, which happened around the same time as I released 3.0.7s1, a version of 3.0.6 that included squelch and some minor UI tweaks. That's four years. I didn't think back then that in 2011 I would still be here, but I'm quite happy that I am. :)


I released that first patch version because I felt there was a lot of negativity and discussion but no-one was actually coding, so in the grand tradition of open source, I effectively forked the code and hoped other people would jump on board.

Looking back, there's three reasons for the fork. First, improve the interface. Second, rewrite/refactor a lot of the code. I'm still working on those.

The third was to change the culture of development so that the maintainership model couldn't come back. The game is quite old and if it was going to survive it needed more than maintainership, it needed what you might call "culture change".

I was part of the email conversations that took place when Robert announced he was searching for a new maintainer, and as I recall, the idea of moving to a more open model wasn't really considered—it was always going to be "pass it on to the next pair of hands", which as far as I was concerned meant stagnation and eventual death, and a lack of involvement from the community which sustains it.

So, I tried hard at the beginning to switch from Angband being freely available to being Open Source. I think I'd just read Karl Fogel's book Producing Open Source Software, so I was a flash hip young go-getter up on OSS norms, and since I'm an infrastructure geek I enjoyed setting up and sorting out the various tools and spaces that open source projects use.


Fast-forward a bit, and it's 2011. The culture change seems to have paid dividends, given that there is now a vibrant, outward-facing community once again. I'm particularly happy that we're using Git now. In 2006, I was using Bazaar to manage my changes for 3.0.6, but back then DVCS was the new kid on the block and it would have been inaccessible to most people. The game itself was still using CVS, which was outdated ven then. GitHub makes things a lot easier.

But when it comes to the code refactoring that I wanted to do and the UI changes that I felt were possible back then, there's been progress but as much as I'd like. Over the past few months, I've finally sat down and had a good think through what would complete the job I set out to do.


In totality, my plans involve redesigning the game's input and output circuitry, a task I suspect will take a few years. The basic outline goes like this: I want Angband 4 to consist of a core game which is sent commands by a user interface, such as "wear x", "read y", or "attack z". The borg can use this, as can the user-facing frontends. Here's a diagram to show you what I mean:
As for output, I want there to be two user interfaces: a "classic" terminal-emulator style UI and a graphical interface which is usable with both mouse and keyboard.

For the graphical interface, I have no intention of dropping ASCII as the default display mode, but I think there's a lot of things that can be done that break away from displaying everything on a rectangular grid which would make the game more playable: borders around menus, better animated spell effects, better tiles, zoomable maps, variable-width fonts for monster/object descriptions, etc–quite like what the amazing ToME 4 is doing, I guess.

Angband 4 will be as incompatible with existing variant code as Ben Harrison's Angband was to the variants that came before it. There will be pretty much no easy way to port code across from V4 to variants because of how deep the display assumptions in the code are. This makes me sad, but sometimes good things are painful to go through.

Why do I want these things? Well, if we want convincing handheld ports (and I do), at some point the game logic has to be decoupled from its display. The approach outlined above could result in extremely playable Android or iPhone ports, without worrying about virtual keyboards, and making use of native UI on those devices (without adding a load of hacks into the game proper).

It will also be more user-friendly, easier on the eyes, and more newbie-friendly, all of which I rank highly for the game's survival.


From September, I'm going to try and work part-time hours for about a year, and I'm planning on using that time at least in part to hack Angband. It would be awesome if people wanted to support me financially in that period to do hacking, but I'll cross that bridge when I come to it.

It would be good to know before any of the above kicks off in a serious way: would you want to play a game that had more graphical touches than the game does at present? Would it put you off? Where do you want to see Angband's interface go—or would you rather it stay right where it is?

Thoughts welcomed.


  1. Consider a kickstarter project as a way to gauge interest.

    I've thought about similar things before.

  2. First of all, thank you for rescuing Angband from certain extinction. I re-read the 2006 thread that Nick linked and was amazed at how conservative I was then, after five years of failing to get a maintainer to show any interest in my contribution. Your changes to the development model and community have completely revitalised the game.

    I am a diehard ascii player and pleased to see that an old-style console game will remain in there somewhere - but I'm inspired by Shockbolt's tiles and think we could make Angband something really modern and attractive. I totally buy the core/UI split and look forward to playing on my next phone. Since there is only one thing you can do with most objects (other than throwing/dropping them), it should be possible to unify aim/zap/use/quaff/eat/read, unless we plan to go all nethack and allow using wands to jam doors etc. etc.

  3. Been playing Angband on and off since 1994 or 1995. I have tried the graphical tiles sometimes but nothing has come even remotely closed to being as useful as the ascii tiles.
    Graphical tiles seems to only be a way to lure new players to the game which might be a good thing. But I rather see a clean up in the interaction with the game and maybe a way to simplify it a bit.
    I'd love to play it on my phone though. Or maybe not.... since its quite easy to spend quite alot of time playing...

  4. The other day the thought occurred to me that one of the strengths of this genre of games is that the graphics are clean and easy to comprehend. A lot of modern commercial have too much visual clutter and are kind of overwhelming as a result. There's just too much stuff on the screen, leading the game experience towards sightseeing and away from tactics, strategy and gameplay.

    So I'd love to see Angband get a GUI, but I want the dungeon representation to not be overly ornate.

  5. The graphics and the user interface are two pretty different things, I think - you can keep the graphics and have a vastly more accessible UI around the edges.